~/devreads

Henrik Warne

https://henrikwarne.com/ · 107 posts · history since 2011 · active

31 May

Henrik Warne 3 min read

Having used Claude Code for a few months now, I have noticed how software development has changed for me. I write a lot less code, but I spend more time understanding and testing the code Claude has written. The proportions … Continue reading →

programmingtestingworkagentai

31 Jan

Henrik Warne 3 min read

For the last few months, I have been developing a new reporting application. Early on, I decided to add a –dry-run option to the run command. This turned out to be quite useful – I have used it many times … Continue reading →

programmingtestingcommanddry-run

15 Jun 2025

2 Mar 2025

Henrik Warne 1 min read

Here are more good programming quotes I have found since my last post. Programming “Configuration is coding in a poorly designed programming language without tests, version control, or documentation.”Gregor Hohpe “It’s the developers misunderstanding, not the expert knowledge, that gets … Continue reading →

programmingquotes

8 Feb 2025

9 Nov 2024

Henrik Warne 5 min read

I am using a very simple system for remembering commands and procedures, and for tracking what I work on. I have two plain text files called notes.txt and worktime.txt. In the notes file, I write down things that are important … Continue reading →

workknowledge managementtime tracking

25 Aug 2024

Henrik Warne 3 min read

Using ChatGPT when I code has been a real productivity boost for me. Instead of reading an example on Stack Overflow and figuring out how to adapt it to my particular case, I immediately get code tailored to my specific … Continue reading →

programmingchatgpt

7 Jul 2024

11 Feb 2024

10 Jan 2024

Henrik Warne 8 min read

“Software design is preparation for change; change of behavior” Tidy First? is a new book by Kent Beck. It is a short little book, only about 100 pages (and lots of white space on them), but it contains some deep … Continue reading →

programmingbookbook reviewreviewtidying

10 Sept 2023

23 Apr 2023

Henrik Warne 4 min read

Two months ago, I was a guest on the Maintainable podcast. The first question the host Robby Russell asks is “What are a few characteristics of well-maintained software?”. This is such a great question, and I thought I would expand … Continue reading →

programmingsoftwarewell-maintained

12 Feb 2023

Henrik Warne 18 min read

I really enjoyed reading Algorithmic Trading: A Practitioner’s Guide by Jeffrey M. Bacidore. Before starting, I imagined it would cover various strategies for trading in the markets, along the lines of “buy on this condition, sell on this condition”. But … Continue reading →

learningalgorithmic tradingbookbook reviewreview

7 Jan 2023

Henrik Warne 4 min read

Every time I hear about software maintenance as a distinct activity, I cringe. That’s because it is based on the outdated notion that first software is developed, then it is maintained. But that is not how software development works today. … Continue reading →

programmingsoftware developmentsoftware maintenance

11 Dec 2022

Henrik Warne 5 min read

A few months ago I switched to working in Go. Before that, my main language was Python for many years. The change to Go has been very smooth, without any major surprises or stumbling blocks. This may partly be because … Continue reading →

programminggogolang

19 Jun 2022

13 Dec 2021

Henrik Warne 3 min read

There seems to be an established truth in programming that code reviews find a lot of bugs. An example is chapter 18 (Modern Code Review) in the book Making Software. This is however not my experience – I rarely find … Continue reading →

programmingcode review

12 Jul 2021

15 Jun 2021

Henrik Warne 4 min read

I used to think that I didn’t need comments if I wrote self-documenting code. However, I have realized that I do write comments, and that I find them really useful. To see how many comments I write, and what kind … Continue reading →

programmingcomments

24 May 2021

Henrik Warne 2 min read

Microservices have gone through a complete hype cycle. From being hailed as the one true way to build systems, to a backlash where they are often considered too difficult and complex. In a way though, they are like most technology … Continue reading →

programmingmicroservices

19 Apr 2021

16 Apr 2021

Henrik Warne 2 min read

Here are more good programming quotes I have found since my last post. Programming “It has been said that the great scientific disciplines are examples of giants standing on the shoulders of other giants. It has also been said that … Continue reading →

programmingquotes

28 Dec 2020

Henrik Warne 3 min read

Choosing test values when writing unit tests is mostly guided by the need to cover all cases of the program logic. However, some values are better than others. Here are a few tips on how to pick values that make … Continue reading →

testingunit testingunit-test

25 Nov 2020

Henrik Warne 13 min read

This fall I took the course Mathematical Modelling of Football from Uppsala University. It was taught by Professor David Sumpter, and I believe this is the first academic course of its kind. The main subjects covered are modelling and analysis … Continue reading →

learningfootballmathematicspython

30 Aug 2020

Henrik Warne 5 min read

You have developed a new feature. The code has been reviewed, and all the tests pass. You have just deployed this new feature to production. So on to the next task, right? Wrong. Most of the time, you should check … Continue reading →

programmingtestingdeployingloggingproduction

23 Jul 2020

Henrik Warne 5 min read

To check if a program is doing what it should, you can inspect the output from a given input. But as the system grows, you also need logging to help you understand what is happening. Good log messages are crucial … Continue reading →

debuggingprogramminglogging

9 Jun 2020

Henrik Warne 8 min read

Because of the Corona pandemic, our whole company has now been working from home for 12 weeks. Before, we mostly worked in the office, although occasionally people would work from home, for example when waiting for a delivery. This abrupt … Continue reading →

workremotewfhworking from home

19 May 2020

Henrik Warne 16 min read

I really enjoyed reading Artificial Intelligence – A Guide for Thinking Humans by Melanie Mitchell. The author is a professor of computer science and an artificial intelligence (AI) researcher. The book is her attempt at working out if the singularity … Continue reading →

learningaiaritificial intelligencebookbook review

27 Apr 2020

Henrik Warne 4 min read

In the fall of 1999 I got the biggest productivity boost of my entire career as a software developer. In the October issue of IEEE Computer magazine, there was an article by Kent Beck called “Embracing change with extreme programming”. … Continue reading →

programmingworkagileextreme programmingwaterfall

22 Mar 2020

Henrik Warne 6 min read

I really like Secure by Design. The key idea is that there is a big overlap between secure code and good software design. Code that is strict, clear and focused will be easier to reason about, and will have fewer … Continue reading →

learningprogrammingdesignsecurity

20 Jan 2020

Henrik Warne 2 min read

Here are more good programming quotes I have found since my last post. Microservices “Microservices are just dynamic linking over HTTP” via @mononcqc “kubernetes – turning things off and on again, at scale” @decimalator Full stack “A full stack developer … Continue reading →

programmingquotes

4 Jan 2020

8 Dec 2019

Henrik Warne 8 min read

A few weeks ago I spoke at the EuroSTAR software testing conference in Prague. The conference had one and a half days of tutorials, followed by two and a half days of talks. Around a thousand people attended. I was … Continue reading →

testingconference

27 Oct 2019

Henrik Warne 7 min read

I really enjoyed Classic Computer Science Problems in Python by David Kopec. It covers many different problems I hadn’t read detailed explanations of before. For example: neural networks, constraint-satisfaction problems, genetic algorithms and the minimax algorithm. Unlike many other books … Continue reading →

learningprogrammingalgorithmsbookbook review

29 Sept 2019

Henrik Warne 4 min read

I like to use Test-Driven Development (TDD) when coding. However, in some circumstances, TDD is more of a hinderance than a help. This happens when how to solve the problem is not clear. Then it is better to first write … Continue reading →

programmingtestingtddtest-driven development

15 Sept 2019

27 Jul 2019

Henrik Warne 26 min read

What a great book Designing Data-Intensive Applications is! It covers databases and distributed systems in clear language, great detail and without any fluff. I particularly like that the author Martin Kleppmann knows the theory very well, but also seems to … Continue reading →

learningbookbook reviewdatabasesdistributed systems

15 Jun 2019

Henrik Warne 5 min read

At the end of May I attended Nordic Testing Days in Tallinn, Estonia. It was the first time I spoke at a conference outside of Sweden, and I had a great time. There was one day with tutorials, and two … Continue reading →

testingconference

26 May 2019

Henrik Warne 7 min read

The book Accelerate details the findings of four years of research on how DevOps affects various outcomes, such as software delivery tempo and stability, as well as the organizations’ profitability and market share. DevOps in this context means things like … Continue reading →

programmingtestingworkbookbook review

3 Apr 2019

Henrik Warne 2 min read

I like good programming quotes. Here are some new ones I have found since my last posts. Complexity “Why do people find DNS so difficult? It’s just cache invalidation and naming things.” – @jdub “Your code doesn’t work!” “It works … Continue reading →

programmingquotes

30 Mar 2019

Henrik Warne 4 min read

Is programming like math, or is it like writing? I think there are elements of both in it, even though programming is a discipline of its own. Nevertheless, it is interesting to think about what aspects are like math, and … Continue reading →

programmingmathwriting

3 Dec 2018

Henrik Warne 5 min read

For the system at work, I am on call one week every seven weeks. For most of the past ten years, I have been on organized on call rotations for the systems I have been developing. I think being on … Continue reading →

workon call

11 Aug 2018

Henrik Warne 2 min read

I use a shell every day. Almost always, I want to repeat a previous command, or repeat it after a slight modification. A very convenient way is to use arrow-up to get the most recent command back. Another common trick … Continue reading →

workcommand-linehistoryshellshortcut

25 Jun 2018

Henrik Warne 4 min read

When I switched jobs four years ago, I went from using subversion (svn) to using git as the version control system. Even though I am a pretty quick learner, it took me a quite a while to really understand git. … Continue reading →

learningprogramminggit

1 May 2018

13 Mar 2018

Henrik Warne 7 min read

In the book club at work, we recently finished reading Exercises in Programming Style by Cristina Videira Lopes. The book consists of a simple program implemented in 33 different programming styles. It is a great way of showing the different … Continue reading →

learningprogrammingbookbook reviewpython

17 Dec 2017

Henrik Warne 9 min read

For the past two months, I have been helping my son’s grade 8 class to learn to program. All students wrote Python programs and got a feel for what programming is. This post has details on how we organized the … Continue reading →

learningprogrammingpythonschoolstudent

26 Nov 2017

Henrik Warne 7 min read

It is now more than 6 years since I started blogging about software development. It has been a great experience, and I thought I would reflect on what I have learnt. So here are my reasons for writing about programming, … Continue reading →

uncategorizedblogging

19 Nov 2017

Henrik Warne 5 min read

During my career as a software developer, I have seen the release frequency increasing steadily. When I started, it would take 12 to 18 months for new features to reach the customer. Years later the frequency increased, so deployment to … Continue reading →

workcontinuous deliverydeploymentdevops

16 Sept 2017

Henrik Warne 2 min read

A good programming quote captures an insight about programming, often in a funny way. Many quotes are quite famous, but I like ones that are a bit less well-know. A while ago, I listed some favorites. Here are more good … Continue reading →

programmingquotes

20 Aug 2017

Henrik Warne 5 min read

I recently found out about the book Developer Testing – Building Quality Into Software by Alexander Tarlinder, and I immediately wanted to read it. Even though I am a developer at heart, I have always been interested in software testing … Continue reading →

programmingtestingbookbook reviewdeveloper testing

10 Jul 2017

Henrik Warne 6 min read

Last week I attended a software development conference, QCon in New York. Here are my impressions of it, as well as some thoughts on programming conferences in general. For me, there are several reasons to attend developer conferences. You have … Continue reading →

learningprogrammingconference

28 May 2017

Henrik Warne 3 min read

Many software developers have a tendency to avoid talking to people. They would rather just rely on written communication in chats, email or issue tracker tickets. However, talking to people more can make them more effective as software developers. Here … Continue reading →

uncategorized

28 Apr 2017

Henrik Warne 5 min read

In my experience, code can rot in two distinct ways. The first case is code that hasn’t been used in a long time, but where the environment has changed so it is no longer possible to run the code. In … Continue reading →

programmingcodecode rotquality

12 Mar 2017

Henrik Warne 5 min read

Here are my thoughts on programmer career planning. You should always stay employable, mostly by changing jobs regularly (every five years or so). When changing, don’t wait until you have to. Your negotiating position is much better when you can … Continue reading →

workcareer

22 Jan 2017

Henrik Warne 4 min read

These days it is common to hear arguments that software development is becoming gig based. In other words, companies will not hire programmers for permanent positions. Instead, they will put together temporary teams of independent contractors from anywhere in the world to complete … Continue reading →

programmingworkoutsourcingsoftware project

15 Jan 2017

24 Nov 2016

Henrik Warne 1 min read

Recently @ThePracticalDev asked people on Twitter for typical things programmers say: Request — what are some examples of funny idioms/phrases software devs use a lot? Things like "It works on my machine" etc. — DEV Community (@ThePracticalDev) November 16, 2016 … Continue reading →

programmingfunnyidiomsphrasesprogrammers

8 Nov 2016

Henrik Warne 4 min read

For several years now, we have been running a developer book club at work. We pick a book relevant to software development, and read a chapter a week. Every other week we meet for 30 to 45 minutes and discuss … Continue reading →

learningworkbookworking

27 Oct 2016

16 Jun 2016

28 Apr 2016

Henrik Warne 4 min read

Bugs are great learning opportunities. So how do we make sure we learn as much as possible from the bugs we fix? A method I have used for more than 13 years now is to write down a short description of … Continue reading →

debugginglearningprogrammingtestingbugs

17 Apr 2016

Henrik Warne 2 min read

In my previous post, The Wisdom of Programming Quotes, I called out some quotes that look good on the surface, but turn out to promote the wrong ideas about software development. I have also posted some of my favorite programming qoutes … Continue reading →

programmingquotes

11 Apr 2016

Henrik Warne 3 min read

I love good programming quotes. The best ones say something true about the craft of programming, usually both concisely and humorously. Recently I started following Programming Wisdom on Twitter. It’s been a source of many great quotes, but occasionally I … Continue reading →

programmingquoteswisdom

7 Mar 2016

Henrik Warne 5 min read

When I graduated from university with a degree in Computer Science, I wanted to continue and get a Ph.D. But I also wanted to work as a software developer, so I worked for five years in industry before going back … Continue reading →

learningprogrammingworkph.d.

27 Dec 2015

Henrik Warne 6 min read

I recently finished reading Ghost in the Wires by Kevin Mitnick. It is the story of Mitnick’s hacking career, from the start in his teens, through becoming the FBI’s most wanted hacker, to spending years in jail before finally being … Continue reading →

learningworkhackingsecuritysocial engineering

22 Nov 2015

Henrik Warne 3 min read

I regularly get emails from recruiters trying to get me to change jobs. Unfortunately, many of the emails are not very good, wasting my and the recruiters’ time. So here are 5 tips for recruiters on how to write a good … Continue reading →

workrecruitingworking

20 Oct 2015

Henrik Warne 6 min read

I just finished taking the course Software Security from the University of Maryland via Coursera. It was a relatively easy course (at least if you know C) that gave an overview of the following areas: buffer overflows and other memory attacks, … Continue reading →

learningprogrammingcourserasecurity

16 Apr 2015

Henrik Warne 7 min read

Here is my list of heuristics and rules of thumb for software development that I have found useful over the years: Development 1. Start small, then extend. Whether creating a new system, or adding a feature to an existing system, I … Continue reading →

debugginglearningprogrammingworkheuristics

3 Jan 2015

Henrik Warne 4 min read

I finally got around to reading Clean Code by Robert C. Martin (Uncle Bob). It is often high on lists of the best books for software development, and for good reason. Clean Code is an excellent book that all programmers … Continue reading →

programmingbookbook reviewcodingreview

1 Jan 2015

Henrik Warne 6 min read

I recently finished the Coursera course Computational Investing Part 1 by professor Tucker Balch at Georgia Tech. The focus of the course is on portfolio analysis and selection. Almost all the analysis uses the daily closing prices of stocks as the … Continue reading →

learningprogrammingcourserainvestingmooc

15 Dec 2014

Henrik Warne 3 min read

What is the half-life of programmer knowledge? It is quite common with claims that the half-life is something like 5 years. In other words, half of what you know about programming will be obsolete in 5 years. A similar sentiment … Continue reading →

learningprogrammingknowledgelanguagesprogrammer

8 Dec 2014

4 Sept 2014

30 Jun 2014

Henrik Warne 5 min read

What makes a good programmer? It’s an interesting question to ask yourself. It makes you reflect on the craft of software development. It is also a good question to ask your colleagues. It can trigger some interesting discussions on how you work … Continue reading →

programmingprogrammerskills

22 Jun 2014

8 Jun 2014

Henrik Warne 5 min read

Is software antifragile? I think so. I recently finished the book Antifragile – Things that Gain from Disorder by Nassim Nicholas Taleb. I liked it a lot, and I think the ideas in it are quite useful when examining various systems and … Continue reading →

programmingantifragileantifragilitybooksoftware development

19 Feb 2014

Henrik Warne 2 min read

When I first heard about unit testing using a framework like JUnit, I thought it was such a simple and powerful concept. Instead of ad hoc testing, you save your tests, and they can be run as often as you … Continue reading →

testingunit testing

9 Feb 2014

Henrik Warne 8 min read

How can you unit test private methods? If you google this question, you find several different suggestions: test them indirectly, extract them into their own class and make them public there, or use reflection to test them. All these solutions … Continue reading →

testingprivate methodunit testing

27 Jan 2014

Henrik Warne 6 min read

Here is the story of a bug that I caused, found, and fixed recently. It is not particularly hard or tricky, and it didn’t take long to find and fix. Nevertheless, it did teach me some good lessons. The Bug … Continue reading →

debuggingtestingbugstack tracetrace

21 Jan 2014

Henrik Warne 4 min read

To trouble-shoot software, logging of some kind is essential. But for most systems, it is simply not possible to log everything that happens. Many systems and logging frameworks let you limit the amount of data by giving a logging level (e.g. … Continue reading →

debugginglogginglogging frameworklogging levelsession

1 Jan 2014

Henrik Warne 4 min read

One common reaction to my post on writing debuggable code was: you don’t need logging, just use a debugger. While there are cases where a debugger is the best option, there are many reasons why having proper logging in place … Continue reading →

debuggingdebuggerloggingtrouble-shooting

8 Dec 2013

Henrik Warne 3 min read

Many programmers have a hard time writing good unit-tests for code that involves time. For example, how do you test time-outs, or periodic clean-up jobs? I have seen many tests that create elaborate set-ups with lots of dependencies, or introduce … Continue reading →

programmingtestingtddtest-driven developmenttime

9 Nov 2013

Henrik Warne 1 min read

When there is a problem with your software, the first thing you usually ask for is a log showing what happened (provided you write debuggable code), and the version of the software that was running. But it is easy to … Continue reading →

debuggingloggingrevisionsubversionsvn

31 Aug 2013

Henrik Warne 8 min read

A lot of code I come across consists of relatively few, but long, methods. The code does what it is supposed to do. However, it could be improved a lot. Refactoring to use more methods can produce better structured programs … Continue reading →

programmingcodemethodsrefactoring

21 Aug 2013

Henrik Warne 5 min read

I have read a couple of blog posts about LinkedIn recently. “Is LinkedIn Cheating Employers and Job Seekers Alike?” is criticizing LinkedIn for charging job seekers to appear “at the top of the list” when applying for a job. “LinkedIn … Continue reading →

worklinkedinrecruiting

5 May 2013

Henrik Warne 3 min read

All programs need some form of logging built in to them, so we can observe what it is doing. This is especially important when things go wrong. One of the differences between a great programmer and a bad programmer is … Continue reading →

debuggingprogrammingtestingloggingtrouble-shooting

7 Apr 2013

2 Apr 2013

Henrik Warne 4 min read

In my previous post on what programmers want, I ranked working from home low on the list. Several commenters value working from home higher, and K (not his real name) added a link to a great TED talk given by … Continue reading →

workface to faceinterruptionmeetingoffice

26 Mar 2013

Henrik Warne 4 min read

I got an e-mail last week from three students at Halmstad University doing a three month project on what programmers want in a job, and how companies can attract talented programmers. Here are my answers to their questions, in order … Continue reading →

programminghiringjobprogrammerprogramming job

18 Feb 2013

31 Dec 2012

Henrik Warne 1 min read

The WordPress.com stats helper monkeys prepared a 2012 annual report for this blog. Here’s an excerpt: About 55,000 tourists visit Liechtenstein every year. This blog was viewed about 170,000 times in 2012. If it were Liechtenstein, it would take about … Continue reading →

uncategorizedmetastatisticsstats

12 Dec 2012

Henrik Warne 8 min read

I recently gave a presentation on what it is like to work as a software developer to first-year engineering students at KTH taking an introductory programming course. I wanted to give my view on the main differences between professional software … Continue reading →

learningprogrammingproduction softwareprogramming courseuniversity

21 Oct 2012

Henrik Warne 4 min read

Every once in a while I read something along the lines of: “most developers just want to write new features, they don’t want to work with maintenance and bug-fixing”. If that’s true, then most developers are missing out on the fun … Continue reading →

debugginglearningprogrammingbugs

23 Sept 2012

Henrik Warne 8 min read

When I found out about the book “How Google Tests Software“, it didn’t take long until I had ordered a copy. I find it quite fascinating to read about how Google does things, whether it is about their development process, their … Continue reading →

testingbookbook reviewgooglereview

22 Aug 2012

Henrik Warne 3 min read

Even though more than 20 years have passed, I still remember wondering what it would be like to finish university and start working. Up until that point, I had pretty much spent my whole life in school, with only a … Continue reading →

programmingsurprisesuniversityworking

17 Jun 2012

Henrik Warne 7 min read

For seven years I coded in C++ using Emacs. Four years ago, when I changed jobs, I switched to Java development using IntelliJ IDEA. Without a doubt, I am much more productive writing code in IntelliJ IDEA compared to using … Continue reading →

programmingemacsideideaintellij

2 Jun 2012

Henrik Warne 2 min read

I love coding. Ever since I bought my first computer (a VIC-20), I’ve been fascinated by computer programming. For many years I never thought of why I enjoyed it so much – I just knew I did. But that changed when … Continue reading →

programmingcodingcreativitylove

8 May 2012

26 Feb 2012

Henrik Warne 3 min read

Like I wrote in a previous post, the use of a break program was probably the main reason I beat Repetitive Stress Injury (RSI). For many years I used WorkPace, but when I switched to using a Macbook Pro a … Continue reading →

rsibreak programmac os xrepetitive stress injuryreview

25 Feb 2012

Henrik Warne 1 min read

Here are a few programming quotes I like: “A complex system that works is invariably found to have evolved from a simple system that worked.” John Gall “Enlightened trial and error outperforms the planning of flawless intellects.” David Kelley “It’s … Continue reading →

programmingquotes

18 Feb 2012

Henrik Warne 3 min read

Early in 2005 the muscles in my forearms started to hurt. In the beginning it was only a slight irritation, but over the course of about six months it gradually got worse, until it was so bad I actually thought … Continue reading →

rsiergonomicsrepetitive stress injury

18 Dec 2011

30 Sept 2011