Bash
Bash has always felt like a programming language designed by someone who sleeps upside down and eats soup with a fork. I kind of love it, though.
Bash has always felt like a programming language designed by someone who sleeps upside down and eats soup with a fork. I kind of love it, though.
After honing them for many years, I've finally open-sourced my dotfiles. For those unacquainted, dotfiles are small files that customize a computer and its programs, as well as a set of utilities that make day-to-day operations easier. If a computer is a workshop, dotfiles are the shelves, pegboard, and carefully crafted tools.
I've actually never thought of dotfiles that way until writing that sentence. I'm reminded of my papou's workshop, which he loved just as much, if not more. I guess his skills really do live on in me, albeit in a different form. I also have no doubt he would cry if he could read this. He was extremely sensitive and sweet, a WWII teddy bear. I inherited some of that from him.
In any case, I'm open-sourcing my dotfiles because I hope they can be useful to others. I've shared them under the MIT license, which basically means anyone can use them for any purpose as long as they give me credit. It's another departure from my past ideological support for the GPL, which enforces something like mandatory cooperation. I definitely admire and see the value in the GPL, but I don't think it makes sense for a simple project like this. Use my code! I'm just glad it may be helpful.
On the technical side, I'm really proud of my shell scripts, Bash functions, and methods of organization. I started using docopts in shell scripts about one or two months ago, and it's a real game-changer. I encourage everyone to check it out. It may even help others reuse my code.
Have at it!
The best design is invisible.
In most music apps, I inevitably leave shuffle mode on for longer than I'd like. I might enable it when listening to a playlist. When I later listen to an album, I might get halfway through before realizing shuffle is still enabled and the songs are playing out of order.
This never seems to happen on Spotify, however. Spotify seems to automatically disable shuffle whenever it's no longer wanted. I don't know what heuristic Spotify uses to determine when shuffle should be disabled, and as a user, I don't really need to care. All I know is that shuffle never seems to be on when it shouldn't be.
The Beatles never set OKRs.
I once wrote a blog post entitled Less is more. It did fairly well on Hacker News, and two people commented in situ. I was pretty excited. (The comments weren't able to be migrated here.)
Years later, I read the following article from the Washington Post, which dovetails nicely with it. I recommend giving it a read:
We instinctively add on new features and fixes. Why don’t we subtract instead?
#Business #PersonalDevelopment #SoftwareDevelopment #Technology #Usability #UserExperience
The Helix text editor fascinates me.
Vim has been my primary text editor for more than ten years now. (Technically, I've been using Neovim for two or three years, but for the sake of simplicity, I'll use the term Vim generically in this post. The two editors aren't that different, in the grand scheme of things, and their differences aren't relevant here.)
I think of Vim as an IDE that one builds themselves. That can be good and bad. I have a deep understanding of my editor's capabilities, for example, because I enabled many of its features myself. It's also completely free and it supports just about every popular programming language out there. However, configuring it takes time and handling conflicts between plugins can be annoying. I also find that it's difficult to keep abreast of the state of the art in text editing this way. It took me a while to discover that other people were using multiple cursors, for example, because that feature wasn't added to my editor automatically. I'm sure there are lots of other useful features I could add to Vim, if only I knew they were common in other editors. I don't know what I don't know.
Ultimately, if I were just starting out today, I'm not sure that I'd make the same investment in Vim. When command-line editing is truly required (my original motivation), Micro is a great choice, being much easier to use and more than powerful enough for most tasks. For everything else, JetBrains IDEs are pretty magical, if occasionally overwhelming.
Helix seems to sit somewhere in the middle. It's console-based, with modal editing and Vim-like keybindings, but with Everything Everyone Wants built-in: LSP, tree-sitter, fuzzy-finding, etc.
I'm not sure which editor I'll be using in ten years. Maybe I'll still be using Vim because it's comfortable, or JetBrains because it's straightforward. I'll add Helix to the list of contenders, though.
I support Signal's decision to drop support for SMS and MMS. Software maintenance can be incredibly challenging and time-consuming. This decision will likely free up time for more important work.
John Carmack is rumored to have said, “Focus is a matter of deciding what things you're not going to do.” I'm not sure if the attribution is correct, but it doesn't matter. It's a good point.
Contrary to the opinions shared on Hacker News, the world is not going to end. (Hacker News readers often forget that they are not the target market.) If anything, it might be easier to convince others to use Signal now. “Use this app to have private conversations with other people who use the app. It doesn't change how anything else on your phone works.” In a world that remembers rouge software crashing computers, that fact is more important than it might seem.
Besides, abbreviations rarely correlate with usability. Signal needs to reach normal people. Let's keep it simple.
Last week, I read the bizarre story of Governor Mike Parson of Missouri vowing to prosecute local journalists who notified his office of a data leak in a state website. In a press conference, he claimed that the reporters “decoded” the site's HTML in a “multi-step process,” struggling to pronounce the unfamiliar abbreviation and testing the credulity of his technologically-literate audience. (Does clicking View source involve more than one step? Perhaps among those who find mice to be confusing.)

As someone who started a career by clicking View source, I couldn't let this weird, funny, aggravating news story go. After calling the governor's office to call his actions, “respectfully, moronic,” I decided to create a change.org petition asking him to apologize, which I have copied below.
I was laid off last week. Officially, I was impacted by “significant restructuring”. I never expected to become so conversant with corporate lingo. It's one of the lesser skills I acquired during my 8 years at Mozilla, mostly after Firefox OS was announced as a priority. Another lesson: companies change.

Driven by COVID-19 and the resulting economic downturn, the layoffs affected fully 25% of all employees, including long-time teammates and friends. As in the previous round of layoffs, some of the people affected were among the most passionate and talented people I have ever known. It's unfortunate that they could not all be retained.
I have come to appreciate ESLint very much in recent years. A robust and reliable JavaScript linter, ESLint can be used not only to detect common programming mistakes, but also to enforce a consistent code style. Its utility cannot be overstated. Your teammates and your future self will thank you for using it.
I recommend that ESLint be enabled before any code is written, but what about existing projects? A developer who runs ESLint on an existing codebase will certainly be overwhelmed; it will warn about scores of issues which had not been noticed until that point. Is there any way to gradually adopt its recommendations? More importantly, is there any way to prevent the number of problems from growing? Running the linter on CI is no solution. It will simply fail and annoy others.