The Curious Engineer

All blogs / Software / engineering practice

blog.liw.fi

blog.liw.fi

Software / engineering practiceDev tools / editors / IDEsRustLinux / Unix

Posts
590 from 7 Apr 2009 to 21 Oct 2026
Posting
weekly (28 in the last year)
Kind
personal blog

2026 22

  1. This month in Radicle CI, October 2026
  2. Obnam community
  3. This month in Radicle CI, September 2026
  4. Thinking about software freedom
  5. This month in Radicle CI, August 2026
  6. This month in Radicle CI, July 2026
  7. On the new SFC recommendations for LLM/generative AI use
  8. State of Radicle CI and where it's going: June 2026
  9. State of Radicle CI and where it's going: May 2026
  10. Moderation policy
  11. State of Radicle CI and where it's going: April 2026
  12. State of Radicle CI and where it's going: March 2026
  13. english language feed
  14. The path less traveled by
  15. Ergonomic function arguments in Rust
  16. State of Radicle CI and where it's going: February 2026
  17. Riki: the shortcut directive
  18. Riki: positional parameters for directives
  19. State of Radicle CI and where it's going: January 2026
  20. Riki: shortcut directive failure
  21. Riki internal linking tests
  22. riki site generation, step 1

2025 23

  1. A sartorial adventure
  2. State of Radicle CI and where it's going: December 2025
  3. Stopping evil and open source: my thoughts
  4. Ambient CI, progress this year
  5. sopass 0.6.0: a command line password manager
  6. Obnam 3 status: chunks, credentials, help?
  7. clingwrap, a Rust library for command line applications
  8. sopass and cross-device syncing in a password manager
  9. I don't accept donations
  10. Future of vmdb2: need help
  11. callisto: free, experimental CI server, initially for Rust projects
  12. Human vs JSON output formatting: avoid mixing concerns
  13. Why I use Debian
  14. riki page names and internal links
  15. Implementing an ikiwiki subset in Rust
  16. Using Radicle CI for Development
  17. Command line interfaces in Rust
  18. Framework 13 inch AMD and HP Thunderbolt4 Dock G4
  19. Why is Debian the way it is?
  20. Why does Debian change software?
  21. Interviewed on the Open Source Security podcast
  22. Obnam, again
  23. I don't like Docker or Podman

2024 18

  1. Backup software implementation, part 7
  2. A QEMU question regarding user mode networking
  3. Backup software implementation, part 6
  4. Backup software implementation, part 5
  5. Error messages when running programs in Rust
  6. Backup software implementation, part 4
  7. Backup software implementation, part 3
  8. Ambient, a CI engine
  9. Backup software implementation, part 2
  10. Backup software implementation
  11. Framework 13 AMD, first impressions
  12. Software supply roles
  13. Checklist for primary laptop
  14. Debian Git monorepo
  15. vmdb2 version 0.40 released
  16. 40 years as a programmer
  17. Billion file filesystem
  18. The XY solution

2023 10

  1. De-duplicating $PATH
  2. New PGP key, and practice around it
  3. Updated my GTD introduction guide
  4. Tickets, issues, tasks
  5. New job: Radicle
  6. vmdb2 and v-i releases
  7. Using clap to build nice command line interfaces
  8. CI annoyances
  9. 'The early days of Linux' on LWN
  10. Tricking your brain to get things done

2022 26

  1. Rant: year of Linux on the desktop
  2. Can you run your test suite successfully 1000 times in a row?
  3. Keyboardio Model100 keyboard: review at one month
  4. Rust training for FOSS devs: November 20
  5. Rust training for FOSS devs: how did it go?
  6. Rust training for FOSS programmers
  7. Not breaking things is hard
  8. Earth 2.0 by Soile Mottisenkangas
  9. FUUG grant for Obnam development: what happened then
  10. DPL elections: candidate counts
  11. v-i version 0.2: non-interactive Debian installer for bare metal machines
  12. On home Internet routers
  13. Obnam 0.8.0 - encrypting backup program
  14. Rust training
  15. Unix command line conventions over time
  16. Release notes: why and how?
  17. On Linus's Law
  18. A year of README reviews
  19. v-i 0.1, a Debian installer using vmdb2
  20. Insert a million rows into Sqlite, from Rust
  21. sq stakeholder interviews: summary
  22. Subplot talk at FOSDEM
  23. Security ratchet
  24. My split external brain
  25. We're breaking Subplot for a while
  26. A custom Debian installer: v-i

2021 26

  1. Obnam 0.6.0 released: encrypting backup program
  2. Obnam 0.5.0 released: encrypting backup program
  3. User guide for Sequoia sq: feedback please
  4. Essay on re-thinking email
  5. I work on Sequoia-PGP now
  6. Tilde expansion in Rust
  7. SSH host identity certification
  8. Subplot 0.2.2 released—acceptance testing tool
  9. I installed Debian on a Thinkpad X220
  10. Please try Subplot, for acceptance criteria
  11. Obnam version 0.4.0: encrypting backup program
  12. Sponsored-by proposal
  13. Vulnerability testing of patch review processes in FOSS
  14. Book club: Program Comprehension and Code Complexity Metrics: An fMRI Study
  15. Debian disappointment
  16. Obnam iteration planning: April 18—April 25
  17. I'd like to review your README
  18. The leadership problem for free software
  19. Book club: Hillel Wayne's What we know we don't know
  20. Obnam version 0.3.0: backup program
  21. vmadm: helping me manage my local libvirt VMs
  22. The XDG base directory specification and Rust
  23. On planning and estimating software development work
  24. Asymptotic awesomeness
  25. Obnam2 version 0.2.2, backup program: an alpha version
  26. Backup interchange format

2020 19

  1. Why write Obnam?
  2. Counting Obnam users
  3. My test setup for my Ansible roles
  4. Obnam2 - a new backup system
  5. On Digital Ocean's Hacktoberfest
  6. A billion files
  7. Book club: Testing Firefox more efficiently with machine learning by Mozilla
  8. Transfer speeds
  9. Book club: The communicative value of using Git well
  10. I miss inboxes
  11. Rethinking email: the spam problem
  12. Book club: Latacora -- Stop using encrypted email
  13. Contractor: build software more securely
  14. Godwin on empowering people
  15. What people like or hate about email
  16. Demo site for how I journal
  17. Alternative Debian installer based on vmdb2: v-i
  18. Security isolation in CI engines
  19. Subplot volunteers? (Acceptance testing tool)

2019 15

  1. Why Debian isn't fun for me
  2. Date formats in international contexts
  3. Free software development doesn't have to be awful
  4. Code coverage is almost pointless for tests
  5. Review: Keyboardio Model 01 keyboard
  6. The reMarkable tablet: a review
  7. Subplot - new name for acceptance testing tool
  8. Fable for acceptance testing
  9. Debian and the SKS signature flooding attack
  10. Dijkstra was only partially correct about testing
  11. Two guys walk into a bar... to talk about debugging
  12. On learning Rust and Go: migrating away from Python
  13. On deep, constructive online discussions about technical topics
  14. Starting new project: Yuck (an identity provider)
  15. Unit test coverage and confidence

2018 37

  1. Thanking authors of the free software you use
  2. Roadmap visualisation
  3. Retiring from Debian
  4. Idea for a Debian QA service: monitoring install size with dependencies
  5. Rewrote summain from Python to Rust
  6. On flatpak, snap, distros, and software distribution
  7. New job: WMF release engineering
  8. GITR: Parsing Text with Nom; Pain points
  9. GITR: Object-Orientation in Rust
  10. GITR: Threads, Networking and Sharing
  11. GITR: Error Handling
  12. GITR: Standard Library Containers
  13. vmdb2 roadmap
  14. GITR: Modules and Cargo
  15. A filesystem walker as an iterator
  16. GITR: Filesystem and Processes
  17. New website for vmdb2
  18. GITR: Structs, enums, and matching
  19. GITR: Introduction, Basics
  20. A plan to learn Rust
  21. Learning Rust
  22. Short-term contracting work?
  23. Federated CI
  24. Software freedom for the modern era
  25. On requiring English in a free software project
  26. Building Debian packages in CI (ick)
  27. Ick version 0.53 released: CI engine
  28. Ick ALPHA-6 released: CI/CD engine
  29. Hacker Noir developments
  30. Architecture aromas
  31. Storing passwords in cleartext: don't ever
  32. New chapter of Hacker Noir on Patreon
  33. dpkg maintainer script containerisation
  34. What is Debian all about, really? Or: friction, packaging complex applications
  35. Qvisqve - an authorisation server, first alpha release
  36. Ick: a continuous integration system
  37. On using Github and a PR based workflow

2017 16

  1. The proof is in the pudding
  2. Unit and integration testing: an analogy with cars
  3. Debian and the GDPR
  4. Attracting contributors to a new project
  5. Retiring Obnam
  6. Enabling TRIM/DISCARD on Debian, ext4, luks, and lvm
  7. Dropping Yakking from Planet Debian
  8. Adding Yakking to Planet Debian
  9. Obnam 1.22 released (backup application)
  10. Vmdb2 first alpha release: Debian disk image creation tool
  11. Using a Yubikey 4 for ensafening one's encryption
  12. Distix movement
  13. Ick2 design discussion
  14. Hacker Noir, chapter 2: Development setup phase
  15. Improving debugging via email, followup
  16. Hacker Noir, chapter 1: Negotiation

2016 17

  1. Debian miniconf in Cambridge
  2. Obnam 1.20 released
  3. A tiny PC as a router
  4. Thinking about CI, maybe writing ick2
  5. Linux 25 jubilee symposium
  6. 20 years ago I became a Debian developer
  7. Debugging over email
  8. Two-factor auth for local logins in Debian using U2F keys
  9. New APT signing key for code.liw.fi/debian
  10. Qvarn Platform announcement
  11. New job: QvarnLabs
  12. Obnam user survey, 2016
  13. Not-platform for Debian project leader elections 2016
  14. Update on 'Backups as a service in Debian': no news is bad news
  15. Obnam 1.19.1 released (backup software)
  16. Obnam survey (January 2016)
  17. Obnam 1.19 released (backup software)

2015 18

  1. Coming back to Finland after five years
  2. Software Freedom Conservancy donation
  3. Obnam 1.18 released (backup software)
  4. On Norbert Preining, Sage Sharp, and Debian
  5. FUUG grant for Obnam development
  6. Obnam 1.17 released (backup software)
  7. On the cost analysis of dependencies
  8. Obnam 1.14 released (backup software)
  9. Obnam 1.13 released (backup software)
  10. /u/liw no more
  11. Obnam 1.12 released (backup software)
  12. Obnam 1.10 released (backup software)
  13. Software development estimation
  14. Jessie release part in Helsinki
  15. DPL elections for 2015 are going on
  16. Obnam 4.1 released
  17. Obnam 1.9 released (backup software)
  18. The shape of a solution

2014 12

  1. 'It Will Never Work in Theory' and software engineering research
  2. A vision of backups in Debian
  3. Matthew Garret and Intel and the so-called gamergate
  4. 45
  5. On ticketing systems
  6. Bald again
  7. Obnam 1.8 (backup program)
  8. Programming performance art
  9. Applying the Doctorow method to coding
  10. Obnam 1.7.4 release (backup software)
  11. Obnam 1.7.1 and 1.7.2 releases (backup software)
  12. Obnam 1.7 (backup software)

2013 33

  1. Thoughtful, inspiring words from Russ
  2. Obnam 1.6.1 (backup software) and larch 1.20131130 (B-tree) releases: serious bug fixes
  3. Debian: developing it wrong
  4. Configuring gitano
  5. Moving repositories to git.liw.fi
  6. My GTD booklet no longer on Amazon
  7. Ending squeeze support in my software
  8. Yakking: a new group blog targeting new free software hackers
  9. Yarn, a scenario testing tool
  10. recompress.yarn
  11. fling.yarn
  12. Obnam 1.5 (backup software) release
  13. Married
  14. Consistency in backups
  15. Oops: Making sure your backups work
  16. Obnam bug list length
  17. Who knows what evil lurks in the data of men? Security aspects of backups
  18. How long is a string: how many backups are enough?
  19. If it quacks like a duck: what is a backup?
  20. "Um, I know I should": talking about backups
  21. On the usefulness of wishlist bugs
  22. Machine-parseable embedded license summary information
  23. Two new t-shirt designs
  24. Obnam 1.4 (backup software) release
  25. cliapp 1.20130313 released (Python command line utility framework)
  26. ttystatus 0.22 (terminal status and progress reporting for Python)
  27. Daniel and the shaved yak
  28. Thinkpad X200s scroll wheel emulation
  29. Makefiletab plugin for Gedit 3
  30. Can the world be saved by coding?
  31. Kickstarter: Maria Eveliina
  32. Public libraries bad for authors and publishers?
  33. Baserock talk at FOSDEM

2012 35

  1. Obnam 1.3 (backup software) and other releases
  2. Made some t-shirt designs
  3. Tools I use
  4. Intervewed on FLOSS Weekly about Baserock
  5. Obnam 1.2 (backup software)
  6. New format to replace tar: some notes
  7. Debian discussion culture: what doesn't work
  8. Dabbling in diplomacy
  9. Baserock, or what I've been doing at work last year
  10. Bald
  11. Obnam 1.1 (backup software)
  12. Helsingin kaupungilla liikaa rahaa
  13. In Kindle store: Getting Things Done for Hackers booklet
  14. btree 0.10
  15. GTD for hackers talk
  16. errno lookups on the command line
  17. Obnam 1.0 (backup software); a story in many words
  18. Obnam 0.29 (backup software)
  19. Larch 1.20120527 (Python B-tree library)
  20. Summain 0.13 (file manifest/metadata/checksum tool)
  21. Obnam 0.28 (backup program)
  22. Quality of discussion in free software development
  23. Obnam 0.27 released (backup software)
  24. Obnam 1.0 planning
  25. What is a Linux distribution?
  26. Getting Things Done for Hackers
  27. World Backup Day
  28. Obnam 0.26 released (backup software)
  29. branchable-noncorporate
  30. New Obnam mailing list
  31. Soile's Kickstarter campaign a succes
  32. Copyright as theft
  33. Obnam 0.25 released (backup software)
  34. FOSDEM 2012
  35. MIX 1/2 Albanian Kickstater

2011 64

  1. Cafe coding and other productivity hacks
  2. Like/dislike buttons in free software
  3. Obnam 0.24 released (backup software)
  4. Effin lakanakampanja
  5. #backuphackers and plea for help
  6. Obnam backup speed to local disk
  7. Moving from SD to Ikiwiki for bug tracking
  8. On the future of Linux distributions
  9. Luxury
  10. In search of boredom
  11. Obnam 0.23 released (backup software)
  12. Entropy key: a review
  13. File copying and removal benchmarking
  14. Obnam version 0.22 (backup application)
  15. Obnam 0.21 released (backup software)
  16. Linux at 20
  17. Oh Amazon...
  18. Linux 20 years: anecdotes from 1998
  19. Obnam version 0.20 (backup software)
  20. Missing roles in software: build engineers
  21. Using OpenPGP subkeys in Debian development
  22. Obnam 0.19 (backup software)
  23. Obnam Ubuntu PPA
  24. Obnam version 0.18
  25. rm is too slow
  26. Instapaper versus MAFF
  27. My first t-shirt design
  28. strncpy? just say no
  29. A tiny step towards TDDD and FreedomBox-NAS
  30. Chunkwise Debian package downloads
  31. Train coding: summain speed
  32. Living off freedom
  33. Test driven distribution development
  34. TDDD systest tool proof of concept
  35. Obnam 0.17: second BETA release
  36. TDDD, more thoughts
  37. vmdebootstrap and FreedomBoxLite
  38. I'm in the movie business now
  39. vmdebootstrap, for real
  40. Beep be gone
  41. I'm a digital luddite, me
  42. python-tracing 0.3
  43. Obnam 0.16: no longer alpha
  44. Project Harmony
  45. cliapp, a Python command line app framework
  46. Blackmail as an argumentation technique
  47. World Backup Day
  48. Obnam version 0.15 and 0.15.1, and btree/larch 0.19
  49. QR codes for backup?
  50. Truth in advertising
  51. Keep companies honest
  52. Kaka ear
  53. DPL nomination period for 2011
  54. What's a good name for a Python B-tree library?
  55. Experiences with SD
  56. Nokia ja rakennemuutos
  57. Growing the Debian development community
  58. Idea: addsysuser
  59. Edinburgh squeeze release party
  60. Python B-tree library, 0.16.2
  61. Egypt blocks all communication: thoughts
  62. Obnam and btree journal dump
  63. New job, at Collabora
  64. DEP5 is CANDIATE

2010 128

  1. Micro-optimizing btree
  2. Obnam 0.14 and btree 0.14
  3. On PDF restrictions and software freedom
  4. Shadow of a bug
  5. On showing respect
  6. Manpage tutorial
  7. Write intent bitmaps with Linux software RAID
  8. Welcome to my newest blog
  9. Vera on what women really want
  10. Desktop user logging service
  11. Using coverage.py with Python unittests to ensure good test coverage
  12. UDW session on piuparts
  13. system-cleaner in intrepid
  14. Suvi Lindénin oma pikku maailma
  15. Suomi-kalenteritiedosto vuodelle 2009
  16. Stress graph
  17. Still climbing onto the bandwagon
  18. Personality conflict
  19. Selling my apartment
  20. Screensavers are evil
  21. Scary things first, hard things second
  22. Saving files reliably under Unix
  23. Sähköinen äänestäminen ei kelpaa koodaajille
  24. Renaming a Linux host
  25. Remember to uncomment
  26. Reittiopas ja GPS ne yhteen soppii...
  27. Reason to become rich, #12765
  28. RAID0 on gytha
  29. Python fstab library 1.0
  30. Progress bars everywhere!
  31. Privacy for free software development
  32. Piraattipuolueen kannattajakortit
  33. Parrot image drawn in pure CSS
  34. Magazines on paper a thing of the past
  35. Oikeusministeriö on luotettava
  36. Oikeusministerien luotettavuudesta
  37. Oikean nimen vaatiminen hs.fi:n keskusteluissa
  38. Notifications be gone!
  39. Non-evil music stores
  40. NRJ Cash or Crash: typerä vai pahis?
  41. Perustuslaki: kallis vessapaperi
  42. My name is...
  43. Multitasking for humans
  44. Minor things, major obstacles
  45. Manuaalisivujen kirjoittaminen – esitelmä Linux-teemaillassa
  46. PBS: The Machine That Changed The World
  47. Linux-tekijä 2008
  48. Masinointia Lex Nokiasta. Perkele.
  49. Learning to cook
  50. Lait kansatajuisiksi
  51. Using KVM for Ubuntu ISO testing
  52. Ubuntu 9.04 (jaunty) released
  53. The Hugenholtz letter
  54. Huey packaging
  55. My home directory, my name space
  56. Head, meet desk. Softly.
  57. GTD collection
  58. Finding trust paths between PGP keys
  59. GNOME renaming tool
  60. GNOME currency converter
  61. Gartner: mobiles to replace landlines in business use
  62. Finhack, 29.11. Forssassa
  63. Finhack-idea
  64. Valtakoneisto: Ei sananvapaudella ole mitään väliä
  65. edustajamme.fi
  66. Editor search continues
  67. Doping. Genetics. Blah.
  68. CC music spammer
  69. No more movies, music, TV
  70. Bold Bash prompt
  71. I got wheels
  72. Anonymity and trust
  73. Älä kailota edes ilman puhelinta?
  74. Reducing online distractions
  75. Qemu/KVM caps lock
  76. Post-vacation e-mail processing
  77. Ouch, or things to remember when setting up a file server
  78. Agree: Disagree Agreeably
  79. Five seconds to display a text message?!
  80. Debian VM image creation tool?
  81. Geographical uncertainty
  82. Distributed bug tracking
  83. Packaging tutorial for Debian-Women
  84. E-kirjoja, kiitos
  85. In defense of Nicole
  86. 100 things?
  87. Monopoly variants
  88. No orange dents
  89. My Plans for Debian
  90. Oops, I did it again
  91. Undo for mail sending in Evolution
  92. Debian CUT
  93. Debconf10
  94. Should I re-join Debian?
  95. Branchable
  96. Keyboard for hire
  97. Obnam version 0.13
  98. Obnam and btree versions 0.12
  99. KD:n Maanselkä: pienpuolueiden toiminta lopetettava
  100. Obnam version 0.11, btree version 0.11
  101. Obnam 0.10 (ALPHA)
  102. Python profile inspector
  103. Python library for terminal status updates
  104. Obnam benchmarking
  105. Soile source
  106. LRU cache for Python
  107. btree 0.9
  108. Obnam benchmark specification
  109. Glass's Fact 19 and open source
  110. B-trees with cloning
  111. Lazyweb: B-tree code review?
  112. Duplicate data in filesystems
  113. GUI app to configure locale for GNOME
  114. Hashlib patch for Enemies of Carlotta
  115. Server maintenance styles
  116. Keeping a journal
  117. Obnam performance requirement
  118. Living with limited Internet access: saving web pages instead of bookmarking them
  119. Autojen GPS-urkinta etenee
  120. Obnam is feature complete (sort of)
  121. Cable management while travelling
  122. Computer driving licenses
  123. Obnam storage API
  124. LCA, rest of the week
  125. LCA2010 Monday
  126. Collaborative storytelling with audience voting
  127. Obnam command line interface
  128. Obnam, or once more a backup program

2009 71

  1. On free software parenting
  2. bzr OO.o support?
  3. Geotagging news
  4. Brother P-touch QL-550 with Ubuntu 9.10 (karmic)
  5. Dimbola 0.0.3
  6. sftpsync
  7. Ninja school taunting
  8. Effi sananvapaus-juliste
  9. Dimbola 0.0.2
  10. Tags in Dimbola
  11. Kirja-arvostelu: Elämäpeli, Ville Vuorela
  12. Stop sending e-mail?
  13. Street photography
  14. Retired from Debian
  15. Viimeinkin jotain rajaa holtittomalle sananvapauden käytölle mediassa!
  16. The death of parody in Finland
  17. Sähköautojen vero pois!
  18. Queue, don't stack
  19. Phone ringtones and stress
  20. Dimbola background processing
  21. My GNOME keyboard shortcuts
  22. Dimbola prototype: a photo organizer
  23. Listat eivät ole demokratiaa
  24. Läpinäkyvä yhteiskunta
  25. Outi Mäkelä vihaa minua
  26. Onneksi olkoon, Piraattipuolue
  27. Automatically connecting signals in PyGTK
  28. Olen mies, olen siis pedofiili
  29. Freedom in online services
  30. Cranes for balconies
  31. Kernel oops message compression
  32. Downloading updates faster
  33. Lessons about travelling
  34. Bug exchange format
  35. Semi-retiring from Debian
  36. Uncluttering my life
  37. Using zsync for .deb downloads: initial benchmark results
  38. Giving up on freedom temporarily?
  39. Rsync in Python
  40. LRU cache for obnam in Python
  41. On mono
  42. IRC proxy for productivity
  43. Laptop stickers begone!
  44. Microblogging
  45. Using mr on my laptop
  46. Perustuslakituomioistuin Suomeen
  47. The Pirate Bay kills online music business
  48. Size of a new window
  49. On the Okularm DRM feature
  50. Time machine for logging
  51. Mäkisen Paja - hyvä idea
  52. Seurasaari, today
  53. Kaupan portti sanoo piip!
  54. Suomalaisen politiikan ongelmat
  55. Personal data, personal organs
  56. watch(1)
  57. Toy Story 3 is coming
  58. Switching editors
  59. Stolen laptop, call home!
  60. Secret Life of Machines
  61. Online secure timestamping
  62. Leaving Planet Debian
  63. Kauhu-aiheinen taidetyöpaja selvästi toiminut hyvin
  64. A Distributed Internet Witness Service
  65. Dishwasher mutex
  66. Declarative .deb maintainer scripts
  67. Debian Developers per capita
  68. Control-D confusion
  69. Copy-on-write files
  70. Libc is broken. What now?
  71. 256 the movie manuscript