https://henrikwarne.com/2023/01/07/there-is-no-software-maintenance/
There Is No Software Maintenance | Henrik Warne's blog
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...
software maintenancehenrik warneblog
https://henrikwarne.com/tag/learning-2/
learning | Henrik Warne's blog
Posts about learning written by Henrik Warne
henrik warnelearningblog
https://henrikwarne.com/2019/12/08/eurostar-testing-conference-prague-2019/
EuroSTAR Testing Conference Prague 2019 | Henrik Warne's blog
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...
conference praguehenrik warneeurostartestingblog
https://henrikwarne.com/tag/science/
science | Henrik Warne's blog
Posts about science written by Henrik Warne
henrik warnescienceblog
https://henrikwarne.com/2017/08/20/developer-testing/
Developer Testing | Henrik Warne's blog
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...
henrik warnedevelopertestingblog
https://henrikwarne.com/2019/09/29/when-tdd-is-not-a-good-fit/
When TDD Is Not a Good Fit | Henrik Warne's blog
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...
good fithenrik warnetddblog
https://henrikwarne.com/2019/10/27/classic-computer-science-problems-in-python/
Classic Computer Science Problems in Python | Henrik Warne's blog
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....
computer sciencehenrik warneclassicproblemspython
https://henrikwarne.com/2022/12/11/switching-to-go-first-impressions/
Switching to Go – First Impressions | Henrik Warne's blog
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...
first impressionshenrik warneswitchinggoblog
https://henrikwarne.com/tag/surprises/
surprises | Henrik Warne's blog
Posts about surprises written by Henrik Warne
henrik warnesurprisesblog
https://henrikwarne.com/2017/03/12/programmer-career-planning/
Programmer Career Planning | Henrik Warne's blog
Here are my thoughts on programmer career planning. You should always stay employable, mostly by changing jobs regularly (every five years or so). When...
career planninghenrik warneprogrammerblog
https://henrikwarne.com/tag/set-game/
SET game | Henrik Warne's blog
Posts about SET game written by Henrik Warne
set gamehenrik warneblog
https://henrikwarne.com/2013/03/26/what-do-programmers-want/
What Do Programmers Want? | Henrik Warne's blog
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...
henrik warneprogrammerswantblog
https://henrikwarne.com/2014/12/15/programmer-knowledge/
Programmer Knowledge | Henrik Warne's blog
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...
henrik warneprogrammerknowledgeblog
https://henrikwarne.com/2012/02/26/mac-os-x-break-programs-review/
Mac OS X Break Programs Review | Henrik Warne's blog
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,...
mac oshenrik warnebreakprogramsreview
https://henrikwarne.com/category/testing/
Testing | Henrik Warne's blog
Posts about Testing written by Henrik Warne
henrik warnetestingblog
https://henrikwarne.com/2025/06/15/lessons-from-9-more-years-of-tricky-bugs/
Lessons From 9 More Years of Tricky Bugs | Henrik Warne's blog
Since 2002, I have been keeping track of all the tricky bugs I have come across. Nine years ago, I wrote a blog post with the lessons learned from the bugs up...
henrik warnelessonsyearstrickybugs
https://henrikwarne.com/tag/intellij/
intellij | Henrik Warne's blog
Posts about intellij written by Henrik Warne
henrik warneintellijblog
https://henrikwarne.com/category/debugging/
Debugging | Henrik Warne's blog
Posts about Debugging written by Henrik Warne
henrik warnedebuggingblog
https://henrikwarne.com/category/work/
Work | Henrik Warne's blog
Posts about Work written by Henrik Warne
henrik warneworkblog
https://henrikwarne.com/2012/06/02/why-i-love-coding/
Why I Love Coding | Henrik Warne's blog
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...
henrik warnelovecodingblog
https://henrikwarne.com/
Henrik Warne's blog | Thoughts on programming…
Thoughts on programming...
henrik warneblog thoughts
https://henrikwarne.com/tag/command/
command | Henrik Warne's blog
Posts about command written by Henrik Warne
henrik warnecommandblog
https://henrikwarne.com/2015/04/16/lessons-learned-in-software-development/
Lessons Learned in Software Development | Henrik Warne's blog
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....
lessons learnedsoftware developmenthenrik warneblog
https://henrikwarne.com/2019/06/15/nordic-testing-days-tallinn-2019/
Nordic Testing Days Tallinn 2019 | Henrik Warne's blog
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....
henrik warnenordictestingdaystallinn
https://henrikwarne.com/tag/job-hunt/
job hunt | Henrik Warne's blog
Posts about job hunt written by Henrik Warne
job hunthenrik warneblog
https://henrikwarne.com/tag/recruiting/
recruiting | Henrik Warne's blog
Posts about recruiting written by Henrik Warne
henrik warnerecruitingblog
https://henrikwarne.com/tag/rsi/
RSI | Henrik Warne's blog
Posts about RSI written by Henrik Warne
henrik warnersiblog
https://henrikwarne.com/2016/03/07/ph-d-or-professional-programmer/
Ph.D. or Professional Programmer? | Henrik Warne's blog
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...
henrik warnephprofessionalprogrammerblog
https://henrikwarne.com/2018/08/11/my-favorite-command-line-shortcuts/
My Favorite Command-Line Shortcuts | Henrik Warne's blog
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...
command linehenrik warnefavoriteshortcutsblog
https://henrikwarne.com/tag/emacs/
emacs | Henrik Warne's blog
Posts about emacs written by Henrik Warne
henrik warneemacsblog
https://henrikwarne.com/tag/statistics/
statistics | Henrik Warne's blog
Posts about statistics written by Henrik Warne
henrik warnestatisticsblog
https://henrikwarne.com/tag/coding/
coding | Henrik Warne's blog
Posts about coding written by Henrik Warne
henrik warnecodingblog
https://henrikwarne.com/2019/05/26/book-review-accelerate/
Book review: Accelerate | Henrik Warne's blog
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...
book reviewhenrik warneaccelerateblog
https://henrikwarne.com/2012/12/31/blog-stats-for-2012-by-wordpress/
Blog stats for 2012 (by WordPress) | Henrik Warne's blog
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....
henrik warneblogstatswordpress
https://henrikwarne.com/2014/01/21/session-based-logging/
Session-based Logging | Henrik Warne's blog
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...
henrik warnesessionbasedloggingblog
https://henrikwarne.com/2016/04/28/learning-from-your-bugs/
Learning From Your Bugs | Henrik Warne's blog
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...
henrik warnelearningbugsblog
https://henrikwarne.com/tag/interruption/
interruption | Henrik Warne's blog
Posts about interruption written by Henrik Warne
henrik warneinterruptionblog
https://henrikwarne.com/2013/04/02/programmer-productivity-interruptions-meetings-and-working-remotely/
Programmer Productivity – Interruptions, Meetings and Working Remotely | Henrik Warne's blog
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...
working remotelyhenrik warneprogrammerproductivityinterruptions
https://henrikwarne.com/tag/meeting/
meeting | Henrik Warne's blog
Posts about meeting written by Henrik Warne
henrik warnemeetingblog
https://henrikwarne.com/2014/01/27/a-bug-a-trace-a-test-a-twist/
A Bug, a Trace, a Test, a Twist | Henrik Warne's blog
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....
henrik warnebugtracetesttwist
https://henrikwarne.com/tag/knowledge/
knowledge | Henrik Warne's blog
Posts about knowledge written by Henrik Warne
henrik warneknowledgeblog
https://henrikwarne.com/2021/12/13/on-code-reviews/
On Code Reviews | Henrik Warne's blog
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...
code reviewshenrik warneblog
https://henrikwarne.com/tag/programming-job/
programming job | Henrik Warne's blog
Posts about programming job written by Henrik Warne
henrik warneprogrammingjobblog
https://henrikwarne.com/tag/chatgpt/
ChatGPT | Henrik Warne's blog
Posts about ChatGPT written by Henrik Warne
henrik warnechatgptblog
https://henrikwarne.com/tag/office/
office | Henrik Warne's blog
Posts about office written by Henrik Warne
henrik warneofficeblog
https://henrikwarne.com/category/learning/
Learning | Henrik Warne's blog
Posts about Learning written by Henrik Warne
henrik warnelearningblog
https://henrikwarne.com/tag/idea/
idea | Henrik Warne's blog
Posts about idea written by Henrik Warne
henrik warneideablog
https://henrikwarne.com/2015/10/20/coursera-course-review-software-security/
Coursera Course Review: Software Security | Henrik Warne's blog
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...
course reviewsoftware securityhenrik warnecourserablog
https://henrikwarne.com/2013/11/09/automatically-include-revision-in-log-statement/
Automatically Include Revision in Log Statement | Henrik Warne's blog
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...
henrik warneautomaticallyincluderevisionlog
https://henrikwarne.com/2016/06/16/18-lessons-from-13-years-of-tricky-bugs/
18 Lessons From 13 Years of Tricky Bugs | Henrik Warne's blog
In Learning From Your Bugs, I wrote about how I have been keeping track of the most interesting bugs I have come across. I recently reviewed all 194 entries...
henrik warnelessonsyearstrickybugs
https://henrikwarne.com/tag/devops/
DevOps | Henrik Warne's blog
Posts about DevOps written by Henrik Warne
henrik warnedevopsblog
https://henrikwarne.com/tag/coursera/
coursera | Henrik Warne's blog
Posts about coursera written by Henrik Warne
henrik warnecourserablog
https://henrikwarne.com/2019/04/03/more-good-programming-quotes-part-3/
More Good Programming Quotes, Part 3 | Henrik Warne's blog
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...
henrik warnegoodprogrammingquotespart
https://henrikwarne.com/2023/09/10/what-i-have-changed-my-mind-about-in-software-development/
What I Have Changed My Mind About in Software Development | Henrik Warne's blog
I really like this quote from Jeff Bezos: “Anybody who doesn’t change their mind a lot is dramatically underestimating the complexity of the world we live in.”...
software developmenthenrik warnechangedmindblog
https://henrikwarne.com/category/programming/
Programming | Henrik Warne's blog
Posts about Programming written by Henrik Warne
henrik warneprogrammingblog
https://henrikwarne.com/tag/java/
java | Henrik Warne's blog
Posts about java written by Henrik Warne
henrik warnejavablog
https://henrikwarne.com/tag/job/
job | Henrik Warne's blog
Posts about job written by Henrik Warne
henrik warnejobblog
https://henrikwarne.com/about/
About | Henrik Warne's blog
Hello, and welcome to my blog. My name is Henrik Warne. I am a software developer in Stockholm, Sweden. I have been programming professionally for more than 30...
henrik warneblog
https://henrikwarne.com/2017/01/15/book-review-the-effective-engineer/
Book Review: The Effective Engineer | Henrik Warne's blog
Last month we finished reading “The Effective Engineer” by Edmond Lau in the book club at work. It is a great book full of practical advice on how to get more...
book reviewhenrik warneeffectiveengineerblog
https://henrikwarne.com/2021/07/12/book-review-a-philosophy-of-software-design/
Book Review: A Philosophy of Software Design | Henrik Warne's blog
I really liked A Philosophy of Software Design by John Ousterhout. It is compact and short, only 170 pages, so it is a quick read, but it contains many good...
book reviewsoftware designhenrik warnephilosophyblog
https://henrikwarne.com/tag/programmer/
programmer | Henrik Warne's blog
Posts about programmer written by Henrik Warne
henrik warneprogrammerblog
https://henrikwarne.com/2026/01/31/in-praise-of-dry-run/
In Praise of –dry-run | Henrik Warne's blog
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...
henrik warnepraiserunblog
https://henrikwarne.com/tag/conference/
conference | Henrik Warne's blog
Posts about conference written by Henrik Warne
henrik warneconferenceblog
https://henrikwarne.com/tag/meta/
meta | Henrik Warne's blog
Posts about meta written by Henrik Warne
henrik warnemetablog
https://henrikwarne.com/2015/12/27/social-engineering-from-kevin-mitnick/
Social Engineering from Kevin Mitnick | Henrik Warne's blog
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...
social engineeringhenrik warnekevinblog
https://henrikwarne.com/tag/developer-testing/
developer testing | Henrik Warne's blog
Posts about developer testing written by Henrik Warne
henrik warnedevelopertestingblog
https://henrikwarne.com/tag/mac-os-x/
Mac OS X | Henrik Warne's blog
Posts about Mac OS X written by Henrik Warne
mac oshenrik warneblog
https://henrikwarne.com/2016/04/17/more-good-programming-quotes/
More Good Programming Quotes | Henrik Warne's blog
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...
henrik warnegoodprogrammingquotesblog
https://henrikwarne.com/tag/ide/
ide | Henrik Warne's blog
Posts about ide written by Henrik Warne
henrik warneideblog
https://henrikwarne.com/2021/04/16/more-good-programming-quotes-part-5/
More Good Programming Quotes, Part 5 | Henrik Warne's blog
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...
henrik warnegoodprogrammingquotespart
https://henrikwarne.com/2023/04/23/well-maintained-software/
Well-maintained Software | Henrik Warne's blog
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...
well maintainedhenrik warnesoftwareblog
https://henrikwarne.com/2017/11/19/benefits-of-continuous-delivery/
Benefits of Continuous Delivery | Henrik Warne's blog
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...
continuous deliveryhenrik warnebenefitsblog
https://henrikwarne.com/2020/01/20/more-good-programming-quotes-part-4/
More Good Programming Quotes, Part 4 | Henrik Warne's blog
Here are more good programming quotes I have found since my last post. Microservices “Microservices are just dynamic linking over HTTP” via @mononcqc...
henrik warnegoodprogrammingquotespart
https://henrikwarne.com/2017/07/10/programming-conference-qcon-new-york-2017/
Programming Conference – QCon New York 2017 | Henrik Warne's blog
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...
qcon new yorkhenrik warneprogrammingconferenceblog
https://henrikwarne.com/tag/testing-2/
testing | Henrik Warne's blog
Posts about testing written by Henrik Warne
henrik warnetestingblog
https://henrikwarne.com/2013/04/07/set-card-game-variation-complementary-pairs/
SET Card Game Variation – Complementary Pairs | Henrik Warne's blog
I recently got an e-mail from Michael Sherman, a teacher in New York. He had developed a variation of the card game Set called Complementary Pairs. This is how...
card gamehenrik warnesetvariationcomplementary
https://henrikwarne.com/2016/04/11/the-wisdom-of-programming-quotes/
The Wisdom of Programming Quotes | Henrik Warne's blog
I love good programming quotes. The best ones say something true about the craft of programming, usually both concisely and humorously. Recently I started...
henrik warnewisdomprogrammingquotesblog
https://henrikwarne.com/tag/google/
Google | Henrik Warne's blog
Posts about Google written by Henrik Warne
henrik warnegoogleblog
https://henrikwarne.com/2021/06/15/on-comments-in-code/
On Comments in Code | Henrik Warne's blog
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...
henrik warnecommentscodeblog
https://henrikwarne.com/tag/hiring/
hiring | Henrik Warne's blog
Posts about hiring written by Henrik Warne
henrik warnehiringblog
https://henrikwarne.com/tag/logging/
logging | Henrik Warne's blog
Posts about logging written by Henrik Warne
henrik warneloggingblog
https://henrikwarne.com/tag/dry-run/
dry-run | Henrik Warne's blog
Posts about dry-run written by Henrik Warne
henrik warnedryrunblog
https://henrikwarne.com/2020/08/30/deployed-to-production-is-not-enough/
Deployed To Production Is Not Enough | Henrik Warne's blog
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...
henrik warnedeployedproductionenoughblog
https://henrikwarne.com/tag/book-review/
book review | Henrik Warne's blog
Posts about book review written by Henrik Warne
book reviewhenrik warneblog
https://henrikwarne.com/2012/02/25/favorite-programming-quotes/
Favorite Programming Quotes | Henrik Warne's blog
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...
henrik warnefavoriteprogrammingquotesblog
https://henrikwarne.com/tag/creativity/
creativity | Henrik Warne's blog
Posts about creativity written by Henrik Warne
henrik warnecreativityblog
https://henrikwarne.com/2015/01/01/coursera-course-review-computational-investing-part-1/
Coursera Course Review: Computational Investing Part 1 | Henrik Warne's blog
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...
course reviewhenrik warnecourseracomputationalinvesting
https://henrikwarne.com/2013/02/18/coursera-algorithms-course-part2/
Coursera course review: Algorithms: Design and Analysis, Part 2 | Henrik Warne's blog
I recently finished the Coursera course Algorithms: Design and Analysis, Part 2 by Professor Tim Roughgarden of Stanford. I’ve already reviewed part 1, and...
course reviewhenrik warnecourseraalgorithmsdesign
https://henrikwarne.com/2013/08/31/7-ways-more-methods-can-improve-your-program/
7 Ways More Methods Can Improve Your Program | Henrik Warne's blog
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....
henrik warnewaysmethodsimproveprogram
https://henrikwarne.com/2013/12/08/tdd-unit-tests-and-the-passage-of-time/
TDD, Unit Tests and the Passage of Time | Henrik Warne's blog
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...
unit testshenrik warnetddpassagetime
https://henrikwarne.com/tag/integration-testing/
integration testing | Henrik Warne's blog
Posts about integration testing written by Henrik Warne
integration testinghenrik warneblog
https://henrikwarne.com/tag/test-driven-development/
test-driven development | Henrik Warne's blog
Posts about test-driven development written by Henrik Warne
test driven developmenthenrik warneblog
https://henrikwarne.com/tag/interview/
interview | Henrik Warne's blog
Posts about interview written by Henrik Warne
henrik warneinterviewblog
https://henrikwarne.com/tag/unit-testing/
unit testing | Henrik Warne's blog
Posts about unit testing written by Henrik Warne
unit testinghenrik warneblog
https://henrikwarne.com/2018/12/03/developer-on-call/
Developer On Call | Henrik Warne's blog
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...
henrik warnedevelopercallblog
https://henrikwarne.com/2018/06/25/6-git-aha-moments/
6 Git Aha Moments | Henrik Warne's blog
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...
henrik warnegitahamomentsblog
https://henrikwarne.com/tag/linkedin/
linkedin | Henrik Warne's blog
Posts about linkedin written by Henrik Warne
henrik warnelinkedinblog
https://henrikwarne.com/2014/09/04/a-response-to-why-most-unit-testing-is-waste/
A Response to “Why Most Unit Testing is Waste” | Henrik Warne's blog
A few months ago I came across the article Why Most Unit Testing is Waste by James O Coplien. The title is an accurate description of the contents – James...
unit testinghenrik warneresponseblog
https://henrikwarne.com/tag/software-development/
software development | Henrik Warne's blog
Posts about software development written by Henrik Warne
software developmenthenrik warneblog
https://henrikwarne.com/tag/algorithms/
algorithms | Henrik Warne's blog
Posts about algorithms written by Henrik Warne
henrik warnealgorithmsblog