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

Important Open Source projects should not use GitHub
Published on 2020-10-23. Updated on 2020-10-25.
Choose your browser carefully
Published on 2020-10-20. Updated 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.
Technical reasons to choose FreeBSD over GNU/Linux
Published on 2020-04-11.
Vim - I hate to love you
Published on 2020-04-07.
Turning suckless into suckmore
Published on 2020-03-23.
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.
systemd isn't safe to run anywhere
Published on 2020-02-07.
Choosing between OpenBSD and FreeBSD
Published on 2020-02-07.
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-23.
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.
Why you should migrate everything from Linux to BSD - part 2
Published on 2020-01-21.
FreeBSD is an amazing operating system
Published on 2020-01-20.
Why you should migrate everything from Linux to BSD
Published on 2020-01-18.
Job interviews in web development gone haywire
Published on 2019-12-25.
When the modern approach is nothing but hype
Published on 2019-11-07.
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.
Go (Golang) - Logging that matters
Published on 2019-07-14.
Stop pushing JavaScript!
Published on 2019-07-02.
When abstraction, design patterns, and principles leads to spaghetti code
Published on 2019-06-26.
Battle testing data integrity verification with ZFS, Btrfs, and mdadm+dm-integrity
Published on 2019-05-05. Updated on 2020-01-23.
Installing Arch Linux with ZFS on a USB stick
Published on 2019-03-28.
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. Updated on 2020-01-28.
Void Linux - a great and unique Linux distribution
Published on 2018-03-30. Updated on 2020-03-02.
Real full disk encryption using GRUB on Void Linux for BIOS
Published on 2018-03-30. Updated on 2020-03-21.
Package management in OpenBSD
Published on 2018-03-29. pdated: on 2020-01-18.
OpenBSD is fantastic
Published on 2018-03-13.
Arch Linux mail server tutorial - part 3: Get DNS right, it's important!
Published on 2017-12-29. Updated on 2019-07-06.
Arch Linux mail server tutorial - part 2: OpenSMTPD, Dovecot, DKIMproxy, and Let's Encrypt
Published on 2017-12-28. Updated on 2019-07-06.
Arch Linux mail server tutorial - part 1: What is email?
Published on 2017-12-27. Updated on 2019-07-06.
Stay away from CloudFlare
Published on 2017-12-20.
Is Google evil?
Published on 2017-12-13. Updated on 2020-01-25.
Make the current commit the initial commit in a Git repository
Published on 2017-12-10. Updated 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. Outdated content
Real full disk encryption using GRUB on Arch Linux for BIOS and UEFI
Published on 2017-05-30. Updated on 2019-11-24.
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. Updated on 2019-04-02.
Programming languages and programming paradigms
Published on 2016-01-02.
Bummer PHP
Published on 2015-12-20.
Composer and Packagist - a bad implementation!
Published on 2015-12-10. Updated 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.
Design Patterns Can Be Very Evil
Published on 2015-03-15.
Procedural Programming vs Object Oriented Programming
Published on 2015-02-28.
Web application with a single entry point
Published on 2015-01-01.
Keeping your home directory in Git, the right way
Published on 2014-12-17. Updated on 2020-04-02.
Some notes on Arch Linux - 2
Published on 2013-10-16. Outdated content
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. Updated on 2016-07-26.
How to set your hostname and domain name correctly
Published on 2012-01-18.
How to Create a New and Empty Branch in Git
Published on 2012-01-18.
GnuPG Tutorial
Published on 2012-01-18.
Enforce strong passwords in Debian
Published on 2011-03-17. Outdated content
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 Sucks
Published on 2010-11-18.
The Book: Pro PHP Refactoring
Published on 2010-11-05.
Code Navigation, Design Patterns, and Too Many Functions
Published on 2010-10-21.
Code comments are good right? Well, not if there is too much of it
Published on 2010-10-21.
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. Outdated content
PHP include path problems
Published on 2009-09-15.
Some notes on Arch Linux
Published on 2009-08-17. Outdated content
Why I do not like derived Linux distributions
Published on 2009-08-13.
Mount an OpenBSD slice from Linux
Published on 2009-08-04.
Mozilla Firefox Keywords Shortcuts
Published on 2009-08-01.
Finding and removing duplicate files with fdupes
Published on 2009-08-01.
Encrypting and decrypting files using GnuPG, OpenSSL or Mcrypt
Published on 2009-04-01. Updated on 2016-07-26.
Remove -- MARK -- from the message log
Published on 2009-03-15.
Keeping the system time precise using NTP
Published on 2009-03-15. Updated on 2016-07-26.
CD or DVD Boot problems on MAC
Published on 2009-03-15.
Cache your DNS requests using Bind
Published on 2009-03-15.
Resume SFTP transfer with PuTTY
Published on 2009-03-14.
PHP Security
Published on 2008-11-28. Updated on 2015-04-05.
Ubuntu as in Debian?
Published on 2008-11-03.
Using EncFS to encrypt some of your files
Published on 2008-11-02. Updated on 2016-05-23.
Choosing a new backup solution, Duplicity, rdiff-backup or Rsnapshot
Published on 2008-10-30.
Speed down your CPU
Published on 2008-08-12. Outdated content
Pointers in C
Published on 2007-12-26.
Programming in C, C++, and Ada
Published on 2007-12-25.
Choosing a good book on programming
Published on 2007-12-14. Updated on 2016-04-02.
Revision control
Published on 2007-11-17.
Wrong default encoding on the Apache webserver
Published on 2007-08-22.
Who is listening on my ports
Published on 2007-01-13. Updated on Updated 2020-01-25.
diff and patch
Published on 2006-05-22.