An analogy occurred to me this evening as I was thinking about programming language design: Choosing good keywords and function names is like picking a good font; the ideas conveyed may be the same, but a change can drastically impact legibility and enjoyment of use. PHP does a spectacular job of providing a bad example. It’s like the Comic Sans of programming languages. Now there are many reasons why PHP is not a good language—I’d like to investigate this particular aspect of its design here briefly.
Overview The primary thrust of this book is that television has degraded our mode of public discourse. Our news, politics, education, and even religion are delivered to us primarily through television, where they were once delivered via the written word. This transformation of medium is not irrelevant: just as poetry doesn’t survive fully intact when translated from one language to another, likewise ideas do not survive translation of medium. This book was written in 1986.
Masks have become a hot issue. Here’s my 2¢. Summary I think everyone should wear a mask, unless they have a compelling medical reason not to. Look at it this way: a mask will either help you and those around you, or it will do no harm—beyond a little social awkwardness. If we look at the trade-offs in a game-theory-style matrix, we get: | | Masks Help | Masks don’t help | |——————-+————+——————| | Wear a mask | +100 | 0 | | Don’t wear a mask | -100 | 0 |
Computers are funny things. At the lowest level they’re just a pile of ones and zeros that we assign meaning to. It’s something you can easily take for granted, but there’s a disconnect with how we talk about how things operate at the hardware level and then again at the software level. Since writing a compiler, I’ve been able to bridge that gap in part. The fundamental idea is that we represent some meaning in a concrete, though still high-level form.
I’ve been building a compiler for a small lambda calculus that compiles to x86. It’s pretty broken, and I decided to start from scratch. I checked out a new branch in Git, and then deleted the entirety of my compiler before I had a chance to do anything else. It hurt. But it was a good kind of hurt. I don’t usually just blow everything away like that. Even this time, I’m keeping many of my auxiliary functions.
I’m a FreeBSD guy. My first computer was a FreeBSD machine that my dad had running in a closet. I learned how to use Emacs as well as the command line on that black-screen white-text no-mouse interface. That’s how real programmers spend their childhood! 😎 😜 I’ve only heard good things about FreeBSD. While not known as particularly desktop-friendly (various Linux distros win here) I’ve heard tales of its rock-solid stability.
Yet again, I’ve tweaked my emacs configuration. The big change this time is switching to Ivy from Helm. I’d like to say right off the bat that Helm is a great tool. I used it for several months and enjoyed it. Once thing that I love about helm is how discoverable it makes commands and functions. helm also got me into using bookmarks. I don’t keep many bookmarks; I tend to collect a few when working on a multi-file project long-term.
I gave a presentation at the Utah Elixir Meetup this February. Here’s the recording of my presentation: I’ve posted the slides as an HTML file, along with some materials to follow along with, on my GitHub account. Check it out!
Today I figured out how to get Pandoc to automatically generate MLA citations for me! I used Pandoc and the Biblatex bibliography format. What’s nice about this is that you can enter in all the information you know about the source, keep it nice and organized in a file, and then change the citation style on the fly. Imagine if you thought you had to use MLA, but then realized you needed to switch to APA citation styles.
Marked Man (mm) is a little program I wrote to view Markdown files like UNIX man pages. (Because who wants to leave their terminal just to open a file?) It uses Pandoc to convert between Markdown and the groff format. As a happy side-effect, this program can read basically anything as a man page: HTML, LaTeX, Word files (seriously), ePub, etc. Anything that Pandoc can read, Marked Man can handle.