All blogs / Software / engineering practice
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
- This month in Radicle CI, October 2026
- Obnam community
- This month in Radicle CI, September 2026
- Thinking about software freedom
- This month in Radicle CI, August 2026
- This month in Radicle CI, July 2026
- On the new SFC recommendations for LLM/generative AI use
- State of Radicle CI and where it's going: June 2026
- State of Radicle CI and where it's going: May 2026
- Moderation policy
- State of Radicle CI and where it's going: April 2026
- State of Radicle CI and where it's going: March 2026
- english language feed
- The path less traveled by
- Ergonomic function arguments in Rust
- State of Radicle CI and where it's going: February 2026
- Riki: the shortcut directive
- Riki: positional parameters for directives
- State of Radicle CI and where it's going: January 2026
- Riki: shortcut directive failure
- Riki internal linking tests
- riki site generation, step 1
2025 23
- A sartorial adventure
- State of Radicle CI and where it's going: December 2025
- Stopping evil and open source: my thoughts
- Ambient CI, progress this year
- sopass 0.6.0: a command line password manager
- Obnam 3 status: chunks, credentials, help?
- clingwrap, a Rust library for command line applications
- sopass and cross-device syncing in a password manager
- I don't accept donations
- Future of vmdb2: need help
- callisto: free, experimental CI server, initially for Rust projects
- Human vs JSON output formatting: avoid mixing concerns
- Why I use Debian
- riki page names and internal links
- Implementing an ikiwiki subset in Rust
- Using Radicle CI for Development
- Command line interfaces in Rust
- Framework 13 inch AMD and HP Thunderbolt4 Dock G4
- Why is Debian the way it is?
- Why does Debian change software?
- Interviewed on the Open Source Security podcast
- Obnam, again
- I don't like Docker or Podman
2024 18
- Backup software implementation, part 7
- A QEMU question regarding user mode networking
- Backup software implementation, part 6
- Backup software implementation, part 5
- Error messages when running programs in Rust
- Backup software implementation, part 4
- Backup software implementation, part 3
- Ambient, a CI engine
- Backup software implementation, part 2
- Backup software implementation
- Framework 13 AMD, first impressions
- Software supply roles
- Checklist for primary laptop
- Debian Git monorepo
- vmdb2 version 0.40 released
- 40 years as a programmer
- Billion file filesystem
- The XY solution
2023 10
2022 26
- Rant: year of Linux on the desktop
- Can you run your test suite successfully 1000 times in a row?
- Keyboardio Model100 keyboard: review at one month
- Rust training for FOSS devs: November 20
- Rust training for FOSS devs: how did it go?
- Rust training for FOSS programmers
- Not breaking things is hard
- Earth 2.0 by Soile Mottisenkangas
- FUUG grant for Obnam development: what happened then
- DPL elections: candidate counts
- v-i version 0.2: non-interactive Debian installer for bare metal machines
- On home Internet routers
- Obnam 0.8.0 - encrypting backup program
- Rust training
- Unix command line conventions over time
- Release notes: why and how?
- On Linus's Law
- A year of README reviews
- v-i 0.1, a Debian installer using vmdb2
- Insert a million rows into Sqlite, from Rust
- sq stakeholder interviews: summary
- Subplot talk at FOSDEM
- Security ratchet
- My split external brain
- We're breaking Subplot for a while
- A custom Debian installer: v-i
2021 26
- Obnam 0.6.0 released: encrypting backup program
- Obnam 0.5.0 released: encrypting backup program
- User guide for Sequoia sq: feedback please
- Essay on re-thinking email
- I work on Sequoia-PGP now
- Tilde expansion in Rust
- SSH host identity certification
- Subplot 0.2.2 released—acceptance testing tool
- I installed Debian on a Thinkpad X220
- Please try Subplot, for acceptance criteria
- Obnam version 0.4.0: encrypting backup program
- Sponsored-by proposal
- Vulnerability testing of patch review processes in FOSS
- Book club: Program Comprehension and Code Complexity Metrics: An fMRI Study
- Debian disappointment
- Obnam iteration planning: April 18—April 25
- I'd like to review your README
- The leadership problem for free software
- Book club: Hillel Wayne's What we know we don't know
- Obnam version 0.3.0: backup program
- vmadm: helping me manage my local libvirt VMs
- The XDG base directory specification and Rust
- On planning and estimating software development work
- Asymptotic awesomeness
- Obnam2 version 0.2.2, backup program: an alpha version
- Backup interchange format
2020 19
- Why write Obnam?
- Counting Obnam users
- My test setup for my Ansible roles
- Obnam2 - a new backup system
- On Digital Ocean's Hacktoberfest
- A billion files
- Book club: Testing Firefox more efficiently with machine learning by Mozilla
- Transfer speeds
- Book club: The communicative value of using Git well
- I miss inboxes
- Rethinking email: the spam problem
- Book club: Latacora -- Stop using encrypted email
- Contractor: build software more securely
- Godwin on empowering people
- What people like or hate about email
- Demo site for how I journal
- Alternative Debian installer based on vmdb2: v-i
- Security isolation in CI engines
- Subplot volunteers? (Acceptance testing tool)
2019 15
- Why Debian isn't fun for me
- Date formats in international contexts
- Free software development doesn't have to be awful
- Code coverage is almost pointless for tests
- Review: Keyboardio Model 01 keyboard
- The reMarkable tablet: a review
- Subplot - new name for acceptance testing tool
- Fable for acceptance testing
- Debian and the SKS signature flooding attack
- Dijkstra was only partially correct about testing
- Two guys walk into a bar... to talk about debugging
- On learning Rust and Go: migrating away from Python
- On deep, constructive online discussions about technical topics
- Starting new project: Yuck (an identity provider)
- Unit test coverage and confidence
2018 37
- Thanking authors of the free software you use
- Roadmap visualisation
- Retiring from Debian
- Idea for a Debian QA service: monitoring install size with dependencies
- Rewrote summain from Python to Rust
- On flatpak, snap, distros, and software distribution
- New job: WMF release engineering
- GITR: Parsing Text with Nom; Pain points
- GITR: Object-Orientation in Rust
- GITR: Threads, Networking and Sharing
- GITR: Error Handling
- GITR: Standard Library Containers
- vmdb2 roadmap
- GITR: Modules and Cargo
- A filesystem walker as an iterator
- GITR: Filesystem and Processes
- New website for vmdb2
- GITR: Structs, enums, and matching
- GITR: Introduction, Basics
- A plan to learn Rust
- Learning Rust
- Short-term contracting work?
- Federated CI
- Software freedom for the modern era
- On requiring English in a free software project
- Building Debian packages in CI (ick)
- Ick version 0.53 released: CI engine
- Ick ALPHA-6 released: CI/CD engine
- Hacker Noir developments
- Architecture aromas
- Storing passwords in cleartext: don't ever
- New chapter of Hacker Noir on Patreon
- dpkg maintainer script containerisation
- What is Debian all about, really? Or: friction, packaging complex applications
- Qvisqve - an authorisation server, first alpha release
- Ick: a continuous integration system
- On using Github and a PR based workflow
2017 16
- The proof is in the pudding
- Unit and integration testing: an analogy with cars
- Debian and the GDPR
- Attracting contributors to a new project
- Retiring Obnam
- Enabling TRIM/DISCARD on Debian, ext4, luks, and lvm
- Dropping Yakking from Planet Debian
- Adding Yakking to Planet Debian
- Obnam 1.22 released (backup application)
- Vmdb2 first alpha release: Debian disk image creation tool
- Using a Yubikey 4 for ensafening one's encryption
- Distix movement
- Ick2 design discussion
- Hacker Noir, chapter 2: Development setup phase
- Improving debugging via email, followup
- Hacker Noir, chapter 1: Negotiation
2016 17
- Debian miniconf in Cambridge
- Obnam 1.20 released
- A tiny PC as a router
- Thinking about CI, maybe writing ick2
- Linux 25 jubilee symposium
- 20 years ago I became a Debian developer
- Debugging over email
- Two-factor auth for local logins in Debian using U2F keys
- New APT signing key for code.liw.fi/debian
- Qvarn Platform announcement
- New job: QvarnLabs
- Obnam user survey, 2016
- Not-platform for Debian project leader elections 2016
- Update on 'Backups as a service in Debian': no news is bad news
- Obnam 1.19.1 released (backup software)
- Obnam survey (January 2016)
- Obnam 1.19 released (backup software)
2015 18
- Coming back to Finland after five years
- Software Freedom Conservancy donation
- Obnam 1.18 released (backup software)
- On Norbert Preining, Sage Sharp, and Debian
- FUUG grant for Obnam development
- Obnam 1.17 released (backup software)
- On the cost analysis of dependencies
- Obnam 1.14 released (backup software)
- Obnam 1.13 released (backup software)
- /u/liw no more
- Obnam 1.12 released (backup software)
- Obnam 1.10 released (backup software)
- Software development estimation
- Jessie release part in Helsinki
- DPL elections for 2015 are going on
- Obnam 4.1 released
- Obnam 1.9 released (backup software)
- The shape of a solution
2014 12
- 'It Will Never Work in Theory' and software engineering research
- A vision of backups in Debian
- Matthew Garret and Intel and the so-called gamergate
- 45
- On ticketing systems
- Bald again
- Obnam 1.8 (backup program)
- Programming performance art
- Applying the Doctorow method to coding
- Obnam 1.7.4 release (backup software)
- Obnam 1.7.1 and 1.7.2 releases (backup software)
- Obnam 1.7 (backup software)
2013 33
- Thoughtful, inspiring words from Russ
- Obnam 1.6.1 (backup software) and larch 1.20131130 (B-tree) releases: serious bug fixes
- Debian: developing it wrong
- Configuring gitano
- Moving repositories to git.liw.fi
- My GTD booklet no longer on Amazon
- Ending squeeze support in my software
- Yakking: a new group blog targeting new free software hackers
- Yarn, a scenario testing tool
- recompress.yarn
- fling.yarn
- Obnam 1.5 (backup software) release
- Married
- Consistency in backups
- Oops: Making sure your backups work
- Obnam bug list length
- Who knows what evil lurks in the data of men? Security aspects of backups
- How long is a string: how many backups are enough?
- If it quacks like a duck: what is a backup?
- "Um, I know I should": talking about backups
- On the usefulness of wishlist bugs
- Machine-parseable embedded license summary information
- Two new t-shirt designs
- Obnam 1.4 (backup software) release
- cliapp 1.20130313 released (Python command line utility framework)
- ttystatus 0.22 (terminal status and progress reporting for Python)
- Daniel and the shaved yak
- Thinkpad X200s scroll wheel emulation
- Makefiletab plugin for Gedit 3
- Can the world be saved by coding?
- Kickstarter: Maria Eveliina
- Public libraries bad for authors and publishers?
- Baserock talk at FOSDEM
2012 35
- Obnam 1.3 (backup software) and other releases
- Made some t-shirt designs
- Tools I use
- Intervewed on FLOSS Weekly about Baserock
- Obnam 1.2 (backup software)
- New format to replace tar: some notes
- Debian discussion culture: what doesn't work
- Dabbling in diplomacy
- Baserock, or what I've been doing at work last year
- Bald
- Obnam 1.1 (backup software)
- Helsingin kaupungilla liikaa rahaa
- In Kindle store: Getting Things Done for Hackers booklet
- btree 0.10
- GTD for hackers talk
- errno lookups on the command line
- Obnam 1.0 (backup software); a story in many words
- Obnam 0.29 (backup software)
- Larch 1.20120527 (Python B-tree library)
- Summain 0.13 (file manifest/metadata/checksum tool)
- Obnam 0.28 (backup program)
- Quality of discussion in free software development
- Obnam 0.27 released (backup software)
- Obnam 1.0 planning
- What is a Linux distribution?
- Getting Things Done for Hackers
- World Backup Day
- Obnam 0.26 released (backup software)
- branchable-noncorporate
- New Obnam mailing list
- Soile's Kickstarter campaign a succes
- Copyright as theft
- Obnam 0.25 released (backup software)
- FOSDEM 2012
- MIX 1/2 Albanian Kickstater
2011 64
- Cafe coding and other productivity hacks
- Like/dislike buttons in free software
- Obnam 0.24 released (backup software)
- Effin lakanakampanja
- #backuphackers and plea for help
- Obnam backup speed to local disk
- Moving from SD to Ikiwiki for bug tracking
- On the future of Linux distributions
- Luxury
- In search of boredom
- Obnam 0.23 released (backup software)
- Entropy key: a review
- File copying and removal benchmarking
- Obnam version 0.22 (backup application)
- Obnam 0.21 released (backup software)
- Linux at 20
- Oh Amazon...
- Linux 20 years: anecdotes from 1998
- Obnam version 0.20 (backup software)
- Missing roles in software: build engineers
- Using OpenPGP subkeys in Debian development
- Obnam 0.19 (backup software)
- Obnam Ubuntu PPA
- Obnam version 0.18
- rm is too slow
- Instapaper versus MAFF
- My first t-shirt design
- strncpy? just say no
- A tiny step towards TDDD and FreedomBox-NAS
- Chunkwise Debian package downloads
- Train coding: summain speed
- Living off freedom
- Test driven distribution development
- TDDD systest tool proof of concept
- Obnam 0.17: second BETA release
- TDDD, more thoughts
- vmdebootstrap and FreedomBoxLite
- I'm in the movie business now
- vmdebootstrap, for real
- Beep be gone
- I'm a digital luddite, me
- python-tracing 0.3
- Obnam 0.16: no longer alpha
- Project Harmony
- cliapp, a Python command line app framework
- Blackmail as an argumentation technique
- World Backup Day
- Obnam version 0.15 and 0.15.1, and btree/larch 0.19
- QR codes for backup?
- Truth in advertising
- Keep companies honest
- Kaka ear
- DPL nomination period for 2011
- What's a good name for a Python B-tree library?
- Experiences with SD
- Nokia ja rakennemuutos
- Growing the Debian development community
- Idea: addsysuser
- Edinburgh squeeze release party
- Python B-tree library, 0.16.2
- Egypt blocks all communication: thoughts
- Obnam and btree journal dump
- New job, at Collabora
- DEP5 is CANDIATE
2010 128
- Micro-optimizing btree
- Obnam 0.14 and btree 0.14
- On PDF restrictions and software freedom
- Shadow of a bug
- On showing respect
- Manpage tutorial
- Write intent bitmaps with Linux software RAID
- Welcome to my newest blog
- Vera on what women really want
- Desktop user logging service
- Using coverage.py with Python unittests to ensure good test coverage
- UDW session on piuparts
- system-cleaner in intrepid
- Suvi Lindénin oma pikku maailma
- Suomi-kalenteritiedosto vuodelle 2009
- Stress graph
- Still climbing onto the bandwagon
- Personality conflict
- Selling my apartment
- Screensavers are evil
- Scary things first, hard things second
- Saving files reliably under Unix
- Sähköinen äänestäminen ei kelpaa koodaajille
- Renaming a Linux host
- Remember to uncomment
- Reittiopas ja GPS ne yhteen soppii...
- Reason to become rich, #12765
- RAID0 on gytha
- Python fstab library 1.0
- Progress bars everywhere!
- Privacy for free software development
- Piraattipuolueen kannattajakortit
- Parrot image drawn in pure CSS
- Magazines on paper a thing of the past
- Oikeusministeriö on luotettava
- Oikeusministerien luotettavuudesta
- Oikean nimen vaatiminen hs.fi:n keskusteluissa
- Notifications be gone!
- Non-evil music stores
- NRJ Cash or Crash: typerä vai pahis?
- Perustuslaki: kallis vessapaperi
- My name is...
- Multitasking for humans
- Minor things, major obstacles
- Manuaalisivujen kirjoittaminen – esitelmä Linux-teemaillassa
- PBS: The Machine That Changed The World
- Linux-tekijä 2008
- Masinointia Lex Nokiasta. Perkele.
- Learning to cook
- Lait kansatajuisiksi
- Using KVM for Ubuntu ISO testing
- Ubuntu 9.04 (jaunty) released
- The Hugenholtz letter
- Huey packaging
- My home directory, my name space
- Head, meet desk. Softly.
- GTD collection
- Finding trust paths between PGP keys
- GNOME renaming tool
- GNOME currency converter
- Gartner: mobiles to replace landlines in business use
- Finhack, 29.11. Forssassa
- Finhack-idea
- Valtakoneisto: Ei sananvapaudella ole mitään väliä
- edustajamme.fi
- Editor search continues
- Doping. Genetics. Blah.
- CC music spammer
- No more movies, music, TV
- Bold Bash prompt
- I got wheels
- Anonymity and trust
- Älä kailota edes ilman puhelinta?
- Reducing online distractions
- Qemu/KVM caps lock
- Post-vacation e-mail processing
- Ouch, or things to remember when setting up a file server
- Agree: Disagree Agreeably
- Five seconds to display a text message?!
- Debian VM image creation tool?
- Geographical uncertainty
- Distributed bug tracking
- Packaging tutorial for Debian-Women
- E-kirjoja, kiitos
- In defense of Nicole
- 100 things?
- Monopoly variants
- No orange dents
- My Plans for Debian
- Oops, I did it again
- Undo for mail sending in Evolution
- Debian CUT
- Debconf10
- Should I re-join Debian?
- Branchable
- Keyboard for hire
- Obnam version 0.13
- Obnam and btree versions 0.12
- KD:n Maanselkä: pienpuolueiden toiminta lopetettava
- Obnam version 0.11, btree version 0.11
- Obnam 0.10 (ALPHA)
- Python profile inspector
- Python library for terminal status updates
- Obnam benchmarking
- Soile source
- LRU cache for Python
- btree 0.9
- Obnam benchmark specification
- Glass's Fact 19 and open source
- B-trees with cloning
- Lazyweb: B-tree code review?
- Duplicate data in filesystems
- GUI app to configure locale for GNOME
- Hashlib patch for Enemies of Carlotta
- Server maintenance styles
- Keeping a journal
- Obnam performance requirement
- Living with limited Internet access: saving web pages instead of bookmarking them
- Autojen GPS-urkinta etenee
- Obnam is feature complete (sort of)
- Cable management while travelling
- Computer driving licenses
- Obnam storage API
- LCA, rest of the week
- LCA2010 Monday
- Collaborative storytelling with audience voting
- Obnam command line interface
- Obnam, or once more a backup program
2009 71
- On free software parenting
- bzr OO.o support?
- Geotagging news
- Brother P-touch QL-550 with Ubuntu 9.10 (karmic)
- Dimbola 0.0.3
- sftpsync
- Ninja school taunting
- Effi sananvapaus-juliste
- Dimbola 0.0.2
- Tags in Dimbola
- Kirja-arvostelu: Elämäpeli, Ville Vuorela
- Stop sending e-mail?
- Street photography
- Retired from Debian
- Viimeinkin jotain rajaa holtittomalle sananvapauden käytölle mediassa!
- The death of parody in Finland
- Sähköautojen vero pois!
- Queue, don't stack
- Phone ringtones and stress
- Dimbola background processing
- My GNOME keyboard shortcuts
- Dimbola prototype: a photo organizer
- Listat eivät ole demokratiaa
- Läpinäkyvä yhteiskunta
- Outi Mäkelä vihaa minua
- Onneksi olkoon, Piraattipuolue
- Automatically connecting signals in PyGTK
- Olen mies, olen siis pedofiili
- Freedom in online services
- Cranes for balconies
- Kernel oops message compression
- Downloading updates faster
- Lessons about travelling
- Bug exchange format
- Semi-retiring from Debian
- Uncluttering my life
- Using zsync for .deb downloads: initial benchmark results
- Giving up on freedom temporarily?
- Rsync in Python
- LRU cache for obnam in Python
- On mono
- IRC proxy for productivity
- Laptop stickers begone!
- Microblogging
- Using mr on my laptop
- Perustuslakituomioistuin Suomeen
- The Pirate Bay kills online music business
- Size of a new window
- On the Okularm DRM feature
- Time machine for logging
- Mäkisen Paja - hyvä idea
- Seurasaari, today
- Kaupan portti sanoo piip!
- Suomalaisen politiikan ongelmat
- Personal data, personal organs
- watch(1)
- Toy Story 3 is coming
- Switching editors
- Stolen laptop, call home!
- Secret Life of Machines
- Online secure timestamping
- Leaving Planet Debian
- Kauhu-aiheinen taidetyöpaja selvästi toiminut hyvin
- A Distributed Internet Witness Service
- Dishwasher mutex
- Declarative .deb maintainer scripts
- Debian Developers per capita
- Control-D confusion
- Copy-on-write files
- Libc is broken. What now?
- 256 the movie manuscript