Born in the 70th, yet ageless, and this is the place where I occasionally share my notes, thoughts and tutorials about open source, BSD and GNU/Linux system administration, and programming - the pragmatic way.
Please forgive any shortcomings and mistakes on this website. Also, English is not my native language.
I started programming in BASIC on the Sharp MZ-800 when I was about 9 or 10 and I have been passionately interested in computers and programming since then. :)
I had my first computer related job when I was only 15 years old in a security and communications company working primarily with modems and 10BASE2 Ethernet systems. There I learned a lot about soldering, electronics, and programming in machine code. It was a real dream job for a 15 year old kid. :)
I almost became an electronic engineer, but I never finished the last part of my studies because I was too busy working. Therefore I am mostly self-taught.
Most of my life I have been working as a system and network administrator and programmer, both as an employee and as a freelancer/consultant.
I am a passionate proponent of open source, and of making systems simple, clear, secure and very performant.
I am absolutely allergic to applications and system setups that have been put together by following hype and trends.
Whenever I am involved in a project I try to follow good software engineering principles such as:
- Simplicity: The system should always be as simple and small as possible. When software projects grow, so do errors and bugs. Techniques such as line-by-line inspection of software, relevant unit testing, and physical examination of hardware that implements protection mechanisms are great. For such techniques to be successful a small and simple design is essential. This is sometimes described as the KISS principle and YAGNI.
- Least privilege: Each user and program should operate using the fewest privileges possible.
- Open design: In order for a system to be secure it must never depend on attacker ignorance. Instead the design should be based upon technology that depend upon public scrutiny - whenever possible.
- Complete mediation: Every access attempt must be checked and validated.
- Easy to use: The human interface must be as easy and intuitive to use as possible. Easy and simple is always better than smart and fancy. Simple user testing is a great way to get valuable feedback.
- Usability: Well known usability standards should be met if required.
- Documentation: Lacking or inadequate documentation is a bug. Everything needs to be adequately documented from the very beginning, it is an integrate part of software development. I strongly abhor poor or lacking documentation.
I am also the author of PHP The Wrong Way, OpenBSD Router Guide and Programmering i Go (a Danish Go programming tutorial that I hope I have the time to finish some day).
I don't use social media so you can't find me there. I currently do have an account on GitHub, but I rarely have an opportunity to put stuff on there.
Why the "sheikh" part in the domain?
Just for fun.
The word "sheikh" is an honorific title in the Arabic language. The word in Arabic stems from the triliteral root connected with age and aging: ش-ي-خ, shin-ya-kha. The title carries the meaning leader, elder, or noble.