Thoughts and tutorials about open source, BSD and GNU/Linux system administration, and programming - the pragmatic way.

Code has to be simplified until it becomes absolutely correct
Published on 2021-02-16.
This is how you keep your dignity and not sell your soul
Published on 2021-02-11.
Are you trusting open source blindly? Then you're in for a world of hurt!
Published on 2021-02-10.
One sure way to determine if you are stupid
Published on 2021-02-10.
Real full disk encryption using GRUB on Artix Linux for BIOS and UEFI
Published on 2021-02-10. Modified on 2021-02-11.
The problems with the GPL
Published on 2021-02-02. Modified on 2021-02-13.
Future prediction: The so-called modern web will die soon
Published on 2021-01-24.
The terminal, the console and the shell - what are they?
Published on 2021-01-13. Modified on 2021-01-16.
The Social Dilemma
Published on 2020-11-08.
OpenBSD Router Guide
Published on 2020-11-05.
Important open source projects should not use GitHub
Published on 2020-10-23. Modified on 2021-02-04.
Choose your browser carefully
Published on 2020-10-20. Modified on 2020-10-26.
Come full circle - back to HTML
Published on 2020-10-18.
No, you cannot have a third of my life!
Published on 2020-06-08. Modified on 2020-06-29.
Technical reasons to choose FreeBSD over GNU/Linux
Published on 2020-04-11. Modified on 2020-04-13.
Vim - I hate to love you
Published on 2020-04-07. Modified on 2021-01-15.
Turning suckless into suckmore
Published on 2020-03-23. Modified on 2020-03-25.
How you can manage the i3 window manager on multiple computers
Published on 2020-03-21.
Migrating ZFS from Linux to FreeBSD
Published on 2020-02-11.
Some of the great GNU/Linux distributions
Published on 2020-02-09. Modified on 2021-02-12.
Choosing between OpenBSD and FreeBSD
Published on 2020-02-07.
systemd isn't safe to run anywhere
Published on 2020-02-07. Modified on 2021-02-10.
Samba and NFS performance - ZFS on Linux vs ZFS on FreeBSD
Published on 2020-02-01.
How to setup FreeBSD with a riced desktop - part 3 - i3
Published on 2020-01-24.
How to setup FreeBSD with a riced desktop - part 2 - Xfce
Published on 2020-01-23.
How to setup FreeBSD with a riced desktop - part 1 - Basic setup
Published on 2020-01-22. Modified on 2020-01-23.
Why you should migrate everything from Linux to BSD - part 2
Published on 2020-01-21. Modified on 2020-02-02.
FreeBSD is an amazing operating system
Published on 2020-01-20. Modified on 2020-01-21.
Why you should migrate everything from Linux to BSD
Published on 2020-01-18. Modified on 2021-02-17.
Job interviews in web development gone haywire
Published on 2019-12-25. Modified on 2020-04-13.
When the modern approach is nothing but hype
Published on 2019-11-07. Modified on 2019-12-22.
My favorite note-taking method
Published on 2019-11-03.
Go (Golang) - understanding the object oriented features with structs, methods, and interfaces
Published on 2019-11-02.
Go (Golang) - Errors and panics
Published on 2019-07-16. Modified on 2019-07-17.
Go (Golang) - Logging that matters
Published on 2019-07-14.
Stop pushing JavaScript!
Published on 2019-07-02. Modified on 2019-09-19.
When abstraction, design patterns, and principles leads to spaghetti code
Published on 2019-05-26.
Battle testing data integrity verification with ZFS, Btrfs and mdadm+dm-integrity
Published on 2019-05-05. Modified on 2020-01-23.
Installing Arch Linux with ZFS on a USB stick
Published on 2019-03-28. Modified on 2019-11-24.
Remuxing ISO, DVD, or Bluray using cat and ffmpeg on Linux
Published on 2018-12-05.
Reviving Cubox with Arch Linux ARM
Published on 2018-11-11.
The real motivation behind systemd
Published on 2018-05-01. Modified on 2021-02-12.
Void Linux - a great and unique Linux distribution
Published on 2018-03-30. Modified on 2020-03-02.
Real full disk encryption using GRUB on Void Linux for BIOS
Published on 2018-03-30. Modified on 2021-02-11.
Package management in OpenBSD
Published on 2018-03-29. Modified on 2021-01-15.
OpenBSD is fantastic
Published on 2018-03-13. Modified on 2020-11-20.
Arch Linux mail server tutorial - part 3 - Get DNS right, it's important!
Published on 2017-12-29. Modified on 2019-07-06.
Arch Linux mail server tutorial - part 2 - OpenSMTPD, Dovecot, DKIMproxy, and Let's Encrypt
Published on 2017-12-28. Modified on 2019-07-06.
Arch Linux mail server tutorial - part 1 - What is email?
Published on 2017-12-27. Modified on 2019-07-06.
Stay away from CloudFlare
Published on 2017-12-20.
Is Google evil?
Published on 2017-12-13. Modified on 2021-02-11.
Make the current commit the initial commit in a Git repository
Published on 2017-12-10. Modified on 2018-11-12.
The typical discussions about BSD vs Linux
Published on 2017-10-15.
Real full disk encryption using GRUB on Debian GNU/Linux for BIOS
Published on 2017-06-23.
Real full disk encryption using GRUB on Arch Linux for BIOS and UEFI
Published on 2017-05-30. Modified on 2021-02-09.
No your PHP framework isn't MVC, but don't worry, it really shouldn't be!
Published on 2016-12-19.
How to split your DNS requests when using a VPN
Published on 2016-11-14. Modified on 2019-04-02.
Programming languages and programming paradigms
Published on 2016-01-02. Modified on 2021-01-26.
Bummer PHP
Published on 2015-12-20. Modified on 2020-12-12.
Composer and Packagist - a bad implementation!
Published on 2015-12-10. Modified on 2016-08-07.
To framework or not to framework?
Published on 2015-11-10.
No your API isn't REST, but don't worry, it really shouldn't be!
Published on 2015-11-01. Modified on 2016-03-07.
Design Patterns Can Be Very Evil
Published on 2015-03-15.
Procedural Programming vs Object Oriented Programming
Published on 2015-02-28. Modified on 2021-01-26.
Web application with a single entry point
Published on 2015-01-01.
Keeping your home in Git, the right way
Published on 2014-12-17. Modified on 2020-12-27.
Some notes on Arch Linux - 2
Published on 2013-10-16. Modified on 2019-01-19.
PSR-0 is not a solution it is a bypass!
Published on 2013-04-23.
Most PHP Frameworks are not for programmers
Published on 2013-04-17.
When templates gets in the way
Published on 2013-03-26.
Be careful when using docking stations
Published on 2013-02-04.
An alternative way to play YouTube videos without using Flash
Published on 2012-12-15. Modified on 2016-07-26.
GnuPG Tutorial
Published on 2012-01-18. Modified on 2018-09-27.
How to Create a New and Empty Branch in Git
Published on 2012-01-18.
How to set your hostname and domain name correctly
Published on 2012-01-18.
Enforce strong passwords in Debian
Published on 2011-03-17.
Unloading of modules at boot time in Debian
Published on 2011-02-12.
Benchmark 4 - Notes About Caching and Benchmarking
Published on 2010-12-17.
Benchmark 3 - The Alternative PHP Cache (APC)
Published on 2010-12-16.
Benchmark 2 - MySQL Cache
Published on 2010-12-15.
Benchmark 1 - Dynamic pages vs. static pages vs. Memcached
Published on 2010-12-14.
Social Networking Suck
Published on 2010-11-18. Modified on 2020-11-08.
The Book "Pro PHP Refactoring"
Published on 2010-11-05.
Code comments are good right? Well, not if there are too many!
Published on 2010-10-21.
Code Navigation, Design Patterns, and Too Many Functions
Published on 2010-10-12.
Git bare vs. non-bare repositories
Published on 2010-10-09.
What does GRUB see?
Published on 2010-09-07.
Windows XP nv4_disp infinite loop problem
Published on 2010-01-19.
umount - device is busy
Published on 2010-01-12.
For Debian - what package does that file belong to?
Published on 2010-01-12.
Simple CHM to PDF conversion on Linux
Published on 2010-01-07.
Resume SFTP transfer with rsync
Published on 2009-12-15.
Passwords from the hackers point of view
Published on 2009-10-21.
Localized version in the console? No thanks!
Published on 2009-10-20.
How to convert a man page into PS, PDF or DVI
Published on 2009-10-15.
Mercurial branching, main and stable, a possible workflow
Published on 2009-10-14.
Some personal notes on revision control and backup
Published on 2009-10-12.
PHP include path problems
Published on 2009-09-15.
Why I do not like derived Linux distributions
Published on 2009-08-13.
Mount an OpenBSD slice from Linux
Published on 2009-08-04.
Finding and removing duplicate files with fdupes
Published on 2009-08-01.
Mozilla Firefox Keywords Shortcuts
Published on 2009-08-01.
Encrypting and decrypting files using GnuPG, OpenSSL or Mcrypt
Published on 2009-04-01. Modified on 2016-07-26.
Cache your DNS requests using Bind
Published on 2009-03-15.
CD or DVD Boot problems on MAC
Published on 2009-03-15.
Keeping the system time precise using NTP
Published on 2009-03-15. Modified on 2016-07-26.
Remove -- MARK -- from the message log
Published on 2009-03-15.
Resume SFTP transfer with PuTTY
Published on 2009-03-14.
PHP Security
Published on 2008-11-28. Modified on 2015-04-05.
Some notes on Arch Linux
Published on 2008-11-04. Modified on 2009-08-17.
Ubuntu as in Debian?
Published on 2008-11-03.
Using EncFS to encrypt some of your files
Published on 2008-11-02. Modified on 2016-05-23.
Choosing a new backup solution, Duplicity, rdiff-backup or Rsnapshot
Published on 2008-10-30. Modified on 2012-02-10.
Speed down your CPU
Published on 2008-08-12.
Pointers in C
Published on 2007-12-26.
Programming in C, Cpp, and Ada
Published on 2007-12-25.
Choosing a good book on programming
Published on 2007-12-14. Modified on 2016-04-02.
Revision control
Published on 2007-11-17. Modified on 2010-10-10.
Wrong default encoding on the Apache webserver
Published on 2007-08-22.
Who is listening on my ports
Published on 2007-01-13. Modified on 2020-01-25.
diff and patch
Published on 2006-05-22.