The Reichstag is burning: An open letter to my elected officials

Earlier today, I sent the following letter (or slight variations thereof) to my elected legislators:

  • US Senator Dick Durbin
  • US Senator Tammy Duckworth
  • Congresswoman Jan Schakowsky
  • State Senator Laura Fine
  • State Representative Robyn Gabel

So far, my congressional delegation has all made public statements questioning or condemning the police violence across the country, but I don't believe anyone in government has yet gone far enough.

I am posting the Senator version here as well to make it available to anyone who wishes to use it as a template for their own letters to their elected representatives.


Dear Senator,

My name is Larry Garfield. I am an Illinois resident in the City of Evanston and one of your constituents.

Larry 2 June 2020 - 4:35pm

Announcing "Thinking Functionally in PHP"

Submitted by Larry on 20 May 2020 - 9:16am

Calling all PHP developers! Want to wrap your brain around functional programming? Are you sick of reading tutorials about this magic "monad" thing but having no idea how to read Haskell? Then this book is for you.

Announcing Thinking Functionally in PHP, by yours truly, available now on LeanPub.

PHP, functional programming, and category theory, all in one short volume

PHP 7.4's introduction of short-lambdas is a game changer for functional PHP. While it doesn't make anything new possible, it makes a lot of things suddenly practical. That's what this book is about: What is now practical to do in PHP in terms of functional programming.

An open letter to my conservative friends

Submitted by Larry on 6 May 2020 - 4:40pm

I try to remain friends, or at least friendly, with people who disagree with me on issues. It's important to do so, even if that means avoiding certain topics.

Unfortunately, recent events have now made that impossible. To my conservative friends (not Republican friends, conservative friends), I must offer my sympathy. Whether or not I can still offer my friendship is up to you.

Bounded vs Centered Sets

Submitted by Larry on 25 April 2020 - 4:43pm

In recent years I've come across an interesting distinction that I keep having to explain to people. To make it easier I am writing it up in a single place for reference.

Specifically, there's two different ways that humans can conceptualize a definition or category: Bounded sets and Centered sets. It seems to be a discussion that's all the rage in religious circles, but I first ran across it in an entirely secular context in the IT field.

Improving PHP's object ergonomics

Submitted by Larry on 23 March 2020 - 4:45pm

There have been a number of RFCs and discussions in recent months all circling a a very similar problem space, or rather some closely related problem spaces. Many of them have struggled to gain traction for various reasons, not the least of which is that their problem spaces overlap but individual, piecemeal solutions have a tendency to help one problem at the expense of another, or fall short of helping another.

To try and resolve these issues, I want to take a step back and try to consider the related problem spaces together; at the very least to document them explicitly, and hopefully to provide some guidance on how we can address as many as possible with as limited a syntax impact as possible. This writeup should be considered an "essay" in the classical sense, that is, I am trying to think through the problem by writing about it.

You are wrong

Submitted by Larry on 1 March 2020 - 4:47pm

If you're like every other human in the world, you no doubt believe many things. There are things you believe are factually true. There are things you believe are morally true. There are things you believe are the best course of action given certain circumstances. You're probably right about many of them, perhaps most of them.

But here's something you need to understand, and internalize: At least one of those beliefs, but probably several, are wrong. Not just slightly wrong, but completely flat out not even in the right ballpark.

Your beliefs are wrong.

It doesn't matter who you are, or how smart you are, or if you're a liberal or conservative or object to that dichotomy. There is something you belief where are you are, quite simply, wrong.

Type Matching in PHP

Submitted by Larry on 2 February 2020 - 1:46pm

One of the nice features of Rust is the match keyword. match is similar to switch, but with two key differences:

  1. It requires an exhaustive match, that is, every possible value must be accounted for or a default must be provided.
  2. match is an expression, meaning you can assign the return value of one of its branches to a variable.

That makes match extremely useful for ensuring you handle all possibilities of an enumerated type, say, if using an Optional or Either for error handling. Which... is something I've been experimenting with in PHP.

It's hard to make a PHP equivalent of match that forces an exhaustive match, as PHP lacks enumerated types. However, emulating an expression match turns out to be pretty easy in PHP 7.4, and kind of pretty, too.

Ranked Choice Voting Online software

Submitted by Larry on 7 September 2019 - 4:50pm

I've been working with Fair Vote IL lately, which is working to advocate for Ranked Choice Voting in Illinois. For now we're looking toward the Presidential Primaries but the long-term goal is to use RCV for all elections. If you're not familiar with Ranked Choice Voting, the Australien Government has an excellent explainer:

<iframe width="560" height="315" src="https://www.youtube.com/embed/bleyX4oMCgM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Or if that's too flippant for you, CGP Gray has a nice animated explainer:

Free Software is Political

Submitted by Larry on 28 August 2019 - 4:52pm

The Internet has been angry lately about Things in Tech, as the Internet usually is. And inevitably there have been the people saying "can't we just focus on code without the politics?" Which, while an understandable desire (and one I agree with), is simply impractical. What's especially telling, though, are the people who specifically name-drop FOSS (Free/Open Source Software) as something that is a-political and should be kept that way.

That... demonstrates a complete and total lack of awareness of Free Software itself. I assume in most cases that it's honest ignorance, so I will try to briefly explain why that is not the case. (Feel free to point people to this article in the future the next time they start down that line of thinking; just be nice about it.)

Skipping PHP.CE this year

Submitted by Larry on 19 July 2019 - 7:01pm

Being a conference organizer is hard. Like, seriously. Aside from the obvious logistics, and the not-at-all-obvious logistics, you're in a position to create a social gathering, not just a technical one. That comes with a lot of baggage and challenges, many of them often competing and incompatible, that need to be balanced. One in particular is ensuring that the speakers are an eclectic lot that are representative both of the community as it is and as you want it to be. That can take a lot of work.

Earlier this year the organizers of the PHP Central Europe conference (PHP.CE) approached me and asked me to submit sessions for the PHP.CE conference in Dresden this October. I rather enjoy speaking at conferences so I of course did so, and this past week they announced their speaker selections, including me with 2 sessions.