I've assembled a list of a few programming and tech blogs which I particularly enjoy.
The order is arbitrary, but I've listed some blogs under separate categories.
For each entry I've tried to find a post that is representative of their good stuff – so not necessarily my favourite post, but perhaps a good entry point to get a sense of the style and scope. Because web design is fun, I've also added a quick rating for each blog's design.
The Universe of Discourse
- by: Mark Dominus (MJD)
- topics: mathematics, programming, anecdotes, and other cool nerdy stuff
- design: the 90s want their layout back
- example post: No, it is not a compiler error. It is never a compiler error.
This blog is the platonic ideal of a blog.
I became aware of MJD through his contributions to the Perl community, in particular the book Higher Order Perl which introduced me to functional programming. Reading his diverse posts is very enjoyable, though most of the mathematical subjects are a bit over my head.
Code Without Rules
- by: Itamar Turner-Trauring
- topics: career development, personal productivity, programming
- design: aesthetic and unspectacular
- example post: Join our startup, we’ll cut your pay by 40%!
I honestly don't know how I stumbled upon this fairly new (2016) blog, but I'm glad I did. The blog is organized more like a book where new chapters appear occasionally than like a list of posts. It is therefore important that you subscribe via RSS or Twitter.
Topically, the blog dispenses the author's hard-earned advice for younger software developers. It reminds me a bit of the How to be a programmer book/article by Robert L. Read. Sometimes this makes the blog posts sound a bit formulaic and unsatisfying, like a self-help book. But if we look beyond that, it makes some very good points and is well worth the read.
- by: Jonathan Worthington
- topics: Perl6, programming language implementation
- length: medium-long
- example post: MoarVM Specializer Improvements Part 3: Optimizing Code
This blog covers the development of Rakudo, a runtime for Perl6. It discusses fairly low-level language implementation concepts, which is very interesting if you've ever written a compiler or interpreter.
- by: MichaelT (pseudonym) et al.
- topics: software engineering, programming
- design: abstention: I wrote the CSS
- example post: On best practices and how to use them
The Whiteboard originally grew out of the Software Engineering Stack Exchange community. It is mostly written by MichaelT, though others including me have also published there. One of my all time favourite pieces of writings on the internet is the Reasonable Code article by JimmyHoffa, to which I have already linked earlier.
Blogs by more well-known people
The blogs/people in this category already have a large following, so it's not “necessary” that I link them here.
- by: Dan Luu
- topics: low-level software engineering concepts and studies
- length: very long
- design: unreadable, but nice in a minimalist sort of way
- example post: What's new in CPUs since the 80s and how does it affect programmers?
Dan Luu likes to dive very deep into some topic and discuss it quite thoroughly, in a manner reminiscent of academic papers. Before having read his articles, I wouldn't have thought these topics (especially when they cover hardware) could be so interesting, for example this study of Keyboard latency. Other posts discuss general tech world concepts, for example his article Normalization of deviance in software: how broken practices become standard which should be required reading for anyone in the industry. But the article that really got me hooked was Static vs. dynamic languages: a literature review.
One drawback of his blog is that it is very minimal. A browser with a reading view or a comparable services like Instapaper can help here.
- by: Julia Evans
- topics: learning, Linux, visual explanations
- design: flashy
- example post: Iptables basics
Julia's thing is not knowing something, then learning about it and writing a post to share that knowledge and the journey. One thing that stands out is her surprisingly effective use of illustrations.
I think her most important message is that it's OK to not know something. She expands on this in her posts No feigning surprise, Blogging principles I use, and How to ask good questions.
Of all the blogs in this list, this is the one from which I have learned the most actually useful stuff. On the minus side, I find the writing style mildly annoying.
Rands in Repose
- by: Rands (pseudonym)
- topics: leadership, nerdy stuff
- design: very elegant
- example post: Shields Down
This one is not about programming, but mostly about tech management/leadership. I firmly believe that the difficult problems in the tech industry are not about code, but about people. So a bit of insight into that is very interesting. Rands' writing is very approachable for developers: not spouting MBA buzzwords but thoughtful, introverted, and unapologetically nerdy. Very much a “one of us!” experience.
- by: Zach Holman
- topics: tech culture, software engineering, programming
- example post: How to Deploy Software
Not an uncontroversial person, and quite deeply invested into the Silicon Valley madness. But his writing is well worth reading. About once per year he writes a comprehensive long-form treatise or manifest on some topic with a beautiful custom design.
- by: Troy Hunt
- topics: infosec
- frequency: 2–5 posts per week
- design: professional and elegant
- example post: Streamlining Data Breach Disclosures: A Step-by-Step Process
Troy Hunt is the creator of the “Have I Been Pwned?” service, and a generally well-known security speaker. His blog covers various infosec things, which tend to be quite fascinating. I particularly love how open he is about his development of HIBP, especially the ethical considerations when running such a service.
- by: Ron Jeffries
- topics: agile, scrum
- example post: Dark Scrum: The Case Against The Backlog
Ron Jeffries is one of the founders of the whole Extreme Programming movement, which was the precursor of all kinds of agile practices. This guy clearly has interesting things to say, and I'm surprised there aren't more people reading his blog. Of the newer posts, the Dark Scrum series is absolutely fantastic in providing a very balanced perspective on Scrum by someone who has been doing it since like forever.
Whatever you do, don't read anything from the “Erors” category, which filled most of 2017's posts. It is/was a weird “programming in public” experiment, a kind of coding-livestream in the form of occasional blog posts. “The whole point would be to show what happens to one real programmer as he works, and to show how he thinks, and how he acts, so as to get things done.” Actually, do consider reading it if you want a Julia-Evans-esque experience of how little a bunch of very smart people can get done if they just set their mind to it.
The Daily WTF
- topics: IT industry
- example post: Notepad Development
Things could be better, but they could also be a lot worse. The Daily WTF gathers examples of things being worse, with utter UX failures, code snippets so horrible they should be illegal, and stories of utterly dysfunctional IT processes. It's absolutely delightful :)
Webshit Weekly (ngate.com)
- topics: hacker news, silly valley
- design: intentionally uses Comic Sans
- example post: March 2018
Imagine a drunk old man rambling about today's youth. Except, about last week's top Hacker News discussions. These summaries are not about valid criticism, but about pointing out the ciclejerk in Hacker News and the wider silicon valley tech culture.
SpaceX’s Falcon Heavy successfully launches – Tesla finally launches a product as advertised. Hackernews, based on Youtube videos, reverse-engineers a spacecraft down to the metallurgical level and then sagely debates the maintenance characteristics of an aircraft that exited service before any of them learned to read and none of them have seen in operation, mostly derived from blog posts by people they're pretty sure knew a guy.
Disclaimer – Nobody mentioned Rust this week. A search team has been sent out on the assumption that the Rust Evangelism Strikeforce has been kidnapped.
So this probably isn't for everyone, but I happen to like it.
Programming in the 21st Century
- by: James Hague
- from: 2007–2017
- example post: If You Haven't Done It Before, All Bets Are Off
This was an incredibly good blog, mostly about high-level technical issues, and retrocomputing, and low-level game programming details, and a plain, reasonable approach to software development. There are almost 230 short articles that are remarkably well cross-referenced with older posts. The posts are quite timeless and many will still be a great read in 20 years.
The Codeless Code
- by: Qi (pseudonym)
- from: 2010–2016
- design: adorable techno-zen theme with beautiful illustrations
- example post: Nothing Really Matters
A collection of programming parables in the style of Zen koans, “concerning the Art and Philosophy of software development.” They take place in a kind of anachronistic software development monastery. I recommend reading in chronological order so that the characters and settings are introduced in a sensible order. Unfortunately, the updates just stopped in 2016. I anxiously await their resumption.
How I read stuff
Over the years, I've been experimenting a bit with how I read stuff. There are two problems: how to get notified of new articles, and how/when to read them.
I find reading in a browser uncomfortable. Most websites look crappy and take long to load, especially on mobile. I experimented a bit with collecting articles into e-books using Calibre, but paginated media is a far worse user experience.
Asynchronous Reading: Instapaper or Pocket
Instead, I read nearly all my articles through Instapaper. The articles get synced to my mobile devices where I can read them offline in a nice readability view. This is ideal for reading during my commute! It's also great to have an archive of all the stuff I've read. Occasionally, I remember an article that I've read years ago and can hunt it down through Instapaper's global search of all my saved articles (although the search is spectacularly bad).
Unfortunately this software is iOS-first, and sucks on other platforms. The web-interface looks polished and feature-rich (has a wonderful speed-reading mode!), but is quite sluggish. The Android app lacks polish and some features, and sometimes has difficulty syncing. On the other hand, the apps can sort the downloaded articles, which the web interface can't. There is no winning here, especially since development has mostly been frozen. Still better than the alternatives (e.g. Pocket, though I hope this changes at some point).
Update (June 2018): As the GDPR came into effect on May 25, Instapaper shut down in Europe with short notice. They claim they are still working towards compliance, but public communication has been piss-poor. So I've moved to Pocket. The Pocket website is more app-like and the Android app less buggy than Instapaper, but overall it's a fairly “meh” experience. Many features I loved using are unavailable or unusably broken: article sorting & filtering, reading time estimation, font customization, speed reading mode, and more. I'm also not a fan of Pocket's infinite scrolling. One feature that I love though is the built-in browser in the Pocket app for pages where the readability parser fails. Which is surprisingly often, as Pocket likes to cut the article content short.
RSS Feeds: Inoreader
To keep track of the sources I follow, I originally used Thunderbird as an RSS feed reader. Unfortunately it's very hard to share articles to Instapaper. A local feed reader is also a privacy threat since my computer must regularly poll all followed blogs.
I've then used Feedly which has a wonderful app, but presents a somewhat dumbed-down experience. It tries to up-sell you at any opportunity which gets old quickly. I don't need a team-oriented content sharing platform just to follow a blog!
Quite recently I decided to give Inoreader a try. The web app is phenomenal, whereas the app feels inflexible and half-baked. The web app UI has an incredible amount of configuration options that's a bit overwhelming initially.
Inoreader sports power-user features like filters and keyboard shortcuts. This allows me to rapidly scan through a long list of feed items. There even is a keyboard shortcut for sharing directly to Instapaper! My favourite feature is the ability to load the target URL of a feed item into a readability view within the reader, so that I can decide whether I want to read the article at some later time. Many power-user features are free, others are locked behind a quite reasonable price point for their value.
This setup isn't quite ideal, and I constantly think about ways how I could make this reading setup more convenient – I'm very susceptible to yak shaving. E.g. I'd love an open-source readability alternative to Instapaper, and a more flexible way to transform RSS feeds than Inoreader offers. However, I'm sure that's more complicated than it sounds, has some risk of abuse if publicly available, and would open up some undesirable legal problems. So while not 100% perfect, I'm quite happy with my current setup.
Now go forth and read some nice articles!