Good reads
This is an unsorted list of articles that I find to be good in one way or another.
-
- “Discover the IndieWeb, one blog post at a time.”
- click a button and land on a random post on someone else’s blog
- someone added my blog into the mix in 2022, which I really appreciate <3
-
Maker’s Schedule, Manager’s Schedule
- a must-read for anyone working in a software development team. Helps express what most of us have felt at some point in our careers.
-
The case of the 500-mile email
- a fun troubleshooting story that I always forget about.
-
Things they didn’t teach you about Software Engineering
- some hard truths about software development that someone starting out in this world should know.
-
20 Things I’ve Learned in my 20 Years as a Software Engineer
- more anecdata about life as a software engineer, and quite accurate in my experience.
-
OpenZFS - the final word in file systems
- a detailed summary about ZFS, the golden standard of file systems.
-
I’m Going To Scale My Foot Up Your Ass
- short rant that restored some of my faith in this industry.
-
More than five whys and “layer eight” problems
- not all root causes for technical problems are technical.
-
People can read their manager’s mind
- “Corollary 1” is very relatable.
-
The Performance Inequality Gap
- demonstrates why you should care about performance, and also highlights how slow a good chunk of devices using the web really are
-
- features horrific and frustrating examples of modern front-end development
- “developer experience” is no excuse to ship 17 MB of Javascript to low-end devices!
-
Questions for a new technology.
- if you’re feeling hopeless about resume-driven development or uninformed tech choices being made in your organization, then this might help build your case against that sort of mindset.
-
- amusing and cynical take on Hacker News top posts, plus a selection of FOSDEM talks. As of 2023-03-13, the last post is dated 2021-08-14, it’s possible that the author is inactive. Do give it a read, though!
-
- Incredibly valuable piece of advice. Explains well why you might want to just be idle so that you can react to new opportunities. “If you ever find yourself stressed, overwhelmed, sinking into stasis despite wanting to change, or frustrated when you can’t respond to new opportunities, you need more slack in your life.”
-
Ikigai: The Perfect Career Diagnostic
- interesting way to look at your career, and potentially something that might help you explain why you don’t feel satisfied with your current career path.
-
The Joel Test: 12 Steps to Better Code
- good litmus test for your own software development team. Perhaps redundant or irrelevant for well-functioning software development teams, but crucial for identifying the dysfunctional ones.
-
Things You Should Never Do, Part I
- just don’t do that rewrite from scratch, it’s not worth it.
-
Microservices: Why Are We Doing This? [original link]
- a different look at the microservices phenomena that highlights some of the downsides of that approach, which are often omitted whenever someone is pushing for microservices.
-
- something you should probably take into account when using any kind of technology that builds on top of existing tech. “All non-trivial abstractions, to some degree, are leaky.”
-
NDAs and Contracts That You Should Never Sign
- examples of contracts that you probably should never, ever sign as a developer. Not legal advice.
-
How To Ask Questions The Smart Way
- something that I tend to link to every junior developer as they usually ask a lot of questions (as they should, they’re juniors, after all!). After reading this, you’ll know exactly how to structure your questions so that you don’t infuriate others and get answers that relate to your actual objective.
-
Human Task Switches Considered Harmful
- explains well why you don’t want to pile on tasks on your developers. Let them focus on one thing at once.
-
Is Critical Thinking the Most Important Skill for Software Engineers?
- un-jargon the jargon, and ask the “why” and “how”. Those confidently throwing around all sorts of advice sprinkled with technical jargon might just be hiding their own lack of understanding on the subject, don’t let those people make you feel dumb.
-
- a list of software development best practices that the author has picked up over the years, and in my opinion a very good starting point for a smaller project with a few developers. How I wish that I could work in such an environment one day…
-
Incentive Pay Considered Harmful
- explains why you should not treat your employees as children and how performance reviews suck in a corporate environment.
-
Where do These People Get Their (Unoriginal) Ideas?
- a dot-com era rant about a particular article that touches on developer productivity and factors that affect it.
-
- another dot-com era rant from Joel, this time with a physical product that was a solution looking for a problem. Parallels with useless tech bubble crap from 2010s are very clear.
-
Seven steps to remarkable customer service
- you can’t ignore customers, even as a developer, so you better understand how to deal with them. I can also confirm that step #1 does work and you should do it if you don’t want to drown in complaints.
-
Whaddaya Mean, You Can’t Find Programmers?
- from the dot-com bubble era, but the points still echo in late 2010s. The tech might change, but the fundamentals don’t.
-
- a great overview of what software developers care about when looking for a job, and what you can do to differentiate from your competitors. Spoiler alert: it’s not the money.
-
Everything Must Be Paid for Twice
- interesting framing that could help you avoid making unnecessary purchases and commitments.
-
- describes one approach that you can take to extract more value from what you already have.
-
17 Reasons NOT To Be A Manager
- sounds a bit clickbaity, but the content is spot-on and has many parallels with my own experience as an engineering manager. Doesn’t mean that you should never be a manager.
-
Know your System Administrator - A Field Guide
- I don’t get all the details, but it’s funny nevertheless.
-
Your Organization Probably Doesn’t Want To Improve Things
- another one of those “big org bad” posts, but plenty to reflect on if you’ve ever worked in one.
-
The Grug Brained Developer: A layman’s guide to thinking like the self-aware smol brained
- the “say it to me like a caveman” edition of everything that you might need to know as a software developer. Amusing, and actually insightful.
-
Some mistakes I made as a new manager
- had a lot of relatable memories when reading this one.
-
- author’s journey in a software-as-a-service company, with lots of mistakes and lessons learned.
-
- well written article explaining why you might not want to use JWT-s for session management.
-
The Night the PostgreSQL IDs Ran Out
- short description of an incident, including a clever temporary workaround to the problem.
-
- lists a lot of good points on why you should avoid using the newest and shiniest tech in most cases.
-
A student asked how I keep us innovative. I don’t.
- related to the “choose boring technology” idea.
-
Command-line Tools can be 235x Faster than your Hadoop Cluster
- computers are fast if you know what you’re doing.
-
Salary Negotiation: Make More Money, Be More Valued
- good overview of how salary negotiations work and why you must do it, every time.
-
Running A Software Business On 5 Hours A Week
- inspirational and useful overview of how you may approach building a software business during spare time.
-
Don’t Call Yourself A Programmer, And Other Career Advice
- pretty much what it says in the title.
-
How to burnout a software engineer, in 3 easy steps
- pretty much what it says in the title.
-
- a neat way to cover how software interacts with the world and where each stakeholder stands
-
- reflection on how company culture affects work outcomes, including some real-life examples, both good and bad ones.
-
- lots of examples of dysfunctional companies doing dysfunctional company stuff
-
- reasons to make you paranoid to consider using error-correcting memory in your setup
-
- asking seemingly stupid questions isn’t all that bad and can in fact help you learn better
- this blog is a testament to this idea
-
How I cut GTA Online loading times by 70%
- great debugging story where the protagonist fixes suboptimal code that Rockstar Games shipped
-
- interesting overview of the choices made in a startup and how they ended up working out
-
Living APIs, and the Case for GraphQL
- I never quite understood the point of GraphQL until I read this article. Now it actually makes sense!
-
- great visual and interactive article demonstrating the principles of load balancing and the effect of different algorithms on the end result
-
Feature Casualties of Large Databases
- accurate observations on what you will usually lose when working with a large database in a mature project
-
Practical Problems with Auto-Increment
- completely unexpected reasons (at least for myself) for why you might want to use UUID-s instead of auto-incremented numbers
-
Minimally Invasive (and More Accurate) Analytics: GoAccess and Athena/SQL
- how to accurately analyze your website traffic without introducing invasive tracking.
- I actually use GoAccess myself to check the viewership of my own blog
-
Scaling Postgres with Read Replicas & Using WAL to Counter Stale Reads
- creative way of making your application take advantage of read-only replicas while also making sure that you don’t make a mess, also covering the downsides of such an approach.
-
How to Manage Connections Efficiently in Postgres, or Any Database
- covers the impacts of just adding more connections to the database and how to properly architect your application so that you don’t end up hogging an unnecessarily large number of connections
- very relevant at my day job
-
- covers the importance of setting boundaries and saying “no”
-
- interesting way to look at being a mentor or a mentee. Also contains tips for becoming a mentor or how to find one yourself.
-
I Accidentally Saved Half A Million Dollars
- fun and cathartic read about how applying just a little bit of care can result in obvious savings, and non-obvious outcomes for the author.
-
- a theoretical calculation about how much resources you really need for hosting a popular website. It might be less than you think.
-
Your API Shouldn’t Redirect HTTP to HTTPS
- short and concise explanation about why HTTPS redirects can actually make things worse
- in my experience, this would have solved a lot of issues at my day job, as fixing things after the fact requires a lot more work
-
Selling Software To Large Businesses
- helped me understand the world of procurement and all the nuance around selling anything to big companies
-
The Guerrilla Guide to Interviewing (version 3.0)
- invaluable for anyone who is on the other side of the interviewing table, and my experience confirms that this is still relevant today
-
- interesting look into the thought process behind someone who is about to leave your organization
-
- contains some pointers to avoid your best performers from getting bored and eventually quitting
-
- introduces the concept of high variance work, the people who excel at it, and how to effectively manage such work and get results.
-
- examples of companies trying to screw you over.
-
- clickbaity title, but it expresses the frustration of updates breaking things for seemingly no good reason and tries to provide ideas on how we can approach things different.
- just choose boring technology.
-
“We ran out of columns” - The best, worst codebase
- short stories about the authors’ experience with a codebase that supported an actual business.
-
How boring or novel should your technology choices be
- follow this guide to avoid future maintainers arriving at your doorstep with very unpleasant words
-
Want quick answers? Ask questions well!
- like a short version of “How To Ask Questions The Smart Way”
-
Uptime Guarantees — A Pragmatic Perspective
- explains the cost of 99.99% uptime compared to a more reasonable 99.5% uptime guarantee
-
Team capacity discharge: how doing things prevents us from doing things
- build more, maintain more, build less, visualized in a nice way
-
The seven deadly traits of startup culture
- similar ideas to “choose boring technology”
- mandatory reading for all techies about to create a startup as an excuse to play around with cool new tech
-
Microservices and the Ops / Dev ratio
- microservices, organizational issues and the operational overhead associated with this choice, illustrated with… yogurt!
-
Why don’t more people use Linux?
- I’ve never seen the Linux experience illustrated in such a good and positive way
-
We once more have no full-time managers at 37signals
- the key is to share the managerial burden with all individual contributors
-
How to recover from microservices
- a good checklist for handling the microservices hangover
-
Death By a Thousand Microservices
- well-articulated takedown of the microservices cargo cult
-
Learnings from 5 years of tech startup code audits
- lists a lot of common issues that new startups run into, and is a pretty practical guideline for any new startups
-
- if you were ever wondering why the developers on your team are overwhelmed, then give this a read
- I’m in this post and I don’t like it
-
Your Database Skills Are Not ‘Good to Have’
- emphasizes the importance of performance, and gives pointers on what to do in case the performance is bad
- contains plenty of examples to illustrate the point
- I, too, heavily dislike ORM-s (Hibernate)
- very relevant to anyone working on a backend system that gets a fair share of traffic
-
Building a robust frontend using progressive enhancement
- a surprisingly good overview of how to build websites properly, with heavy emphasis on avoiding single page applications
- likely the first time I’ve seen sane technological guidance from a government
-
A Management Maturity Model for Performance
- fantastic starting point for any team that wants to improve the performance of their application, containing a ton of actionable advice
-
- highlights the impact that a few JavaScript failures here and there can have on your customers, and what it will eventually lead to
- do progressive enhancement instead!
Tech tips:
-
Direnv’s source_env, and how to manage project configuration
- ended up learning about direnv as a result of this, which will come in handy!
-
- how to utilize makefiles to standardize the development experience across all your projects, no matter the tech stack
- it’s a nice little hack that can reduce cognitive load, which I like a lot!
-
The StackExchange performance page
- a great example of how much (or how little) you actually need to run a popular service
- who needs Kubernetes when you have vertical scaling and architecture that doesn’t resemble spaghetti bolognese?
-
Making a Linux home server sleep on idle and wake on demand — the simple way
- home server power savings taken to an extreme
-
- how USB-C docks can kill your network
- I’ve had to deal with this and I hate that this is even a problem
And the comics:
Random things that should not get lost to time:
- Development of the trilogy & IV - What life was like inside Rockstar North.
- a now-defunct blog that has some good short stories about GTA series development