“Permissive licensing is wrong!” – Is it? (1/2)

A few weeks ago I’ve been attacked by some GNU zealots on a German tech site after speaking in favor of permissive licenses. Unfortunately a discussion was not possible there because that would require the will to actually communicate instead of simply accusing the other side of vile motives. Since I actually do care about this topic and a reader asked for a post about it in comments a while ago, here we go.

This first part tries to sum up the most important things around the topic. I deliberately aim for an objective overview that tries not to be one-sided. The second part will then contain my points in defence of permissive licensing.

Why license software at all?

Licenses exist for reasons of protection. If you’re the author/inventor of some software, a story or whatever product, you get to decide what to do with it. You can keep it for yourself or you can give it away. If you decide for the latter, you have to decide who may use it and in which way(s). In case you intend to give it to a (potentially) large group of people, you may not want to be asked for permission to xyz by everybody. That’s when you decide to write a license which states what you are allowing and explicitly disallowing.

Most of the well-known commercial licenses focus on what you’re not allowed to do (usually things like copying, disassembling, etc.). Open source licenses on the other hand are meant to grant the user rights (e.g. the right to distribute) while reserving some rights or only giving permission under certain conditions – and they usually make you claim responsibility for using the software. For these reasons licenses can actually be a good thing!

If you got an unlicensed piece of code, you’re not legally allowed to do anything with it without getting the author’s permission first. And even if you got that permission, your project would be risky, since the author can withdraw it later. A proper license protects both parties. The author doesn’t get his mail account full of email asking for permission, he’s save from legal trouble if his code breaks anything for you and at the same time you have legal certainty when you decide to put the code to long-term use.

Permissive vs. Copyleft (in a nutshell)

In short terms, permissive licensing usually goes like this: “Here you are, have fun. Oh, and don’t sue me if it does something else than what you expect!” Yes, it’s that easy and there’s little to dispute over.

Copyleft on the other side sounds like this (if you ask somebody in favor of Copyleft): “Sure, you can use it, it’s free. Just keep it free, ok?”. Also quite simple. And not too bad, eh? Other people however read the same thing like this: “Yes, you’re free to use it. Just read these ten pages of legalese and be dead certain that you comply. If you got something wrong, we will absolutely make you regret it.”

The GNU Public license (GPL)

The most popular copyleft license in use is the GPL (in various versions). It got more and more complex with each version – and to be fair, it had to, because it was necessary to react to new threats and loop holes that were found later. The GNU project states that they are committed to protect what they call the four freedoms of free software:

  • the freedom to use the software for any purpose
  • the freedom to change the software to suit your needs
  • the freedom to share the software with your friends and neighbors
  • the freedom to share the changes you make

These are freedoms that every supporter of open source software should be able to agree with. So what’s the deal with all the hostility and fighting between the two camps? Let’s take a look at a permissive license, too.

The BSD license

Unlike the GPL, the BSD family of licenses begun with a rather simple license that span four rules (“original BSD license”). It was later revised and reduced to three (“modified BSD license”). And the modern BSD license that e.g. FreeBSD uses is even just two (“simplified BSD license”).

Did you read the GPLv3 that I linked to above? If you are using GPL’d code you really should. In case you don’t feel like reading all of it, at least take a look and grasp how long that text is. Now compare it to the complete modern BSD license.

What’s the problem?

There are essentially two problems that cause all the trouble. The first one is the question of what should be subject to the freedom that we’re talking about. And closely related, the second one is where that freedom needs to end.

Ironically both camps claim that freedom is the one important thing and it must not be restricted. The GPL is meant to protect the freedom of the software and enforces the availability of the source code, hence limiting the freedom of actual persons. BSD on the other hand is meant to protect the freedom of human beings who should be able to use the software as they see fit – even if that means closing down former open source code!

The GNU camp taunts permissive licenses as being “lax” for not providing the protection that they want. The other camp points out that the GPL is a complex monster and that it is virulent in nature: Since it’s very strict in a lot of areas, it’s incompatible with many other licenses. This makes it complicated to mix GPL and non-GPL code and in the cases where it’s legally possible, the GPL’s terms will take precedence and necessarily be in effect for the whole combined work.

Who’s right?

That totally depends on what you want to achieve. There are pros and cons to both – and in fact we’re only looking at the big picture here. There’s also e.g. the Apache license which is often deemed as kind of middle ground. Then you may want to consider the difference between weak (e.g. LGPL) as well as strong copyleft (GPL). Licensing is a potentially huge topic. But let’s keep it simple here because the exact details are actually not necessary to understand the essence of our topic.

In the next post I’ll present my stance on why permissive licensing is a good thing and copyleft is more problematic than many people may think.

Advertisements

Eerie Linux: 5 years of bloggin’!


The Eerie Linux blog silently turned 5 years just last month. I thought a while about what kind of anniversary post I should write to celebrate the fifth birthday. I was even thinking of closing the blog on that day or at least announce that I would no longer be able to write posts regularly. I decided against it. While I don’t make any promises, I will try to keep the blog up for now.

The June marathon

In the end I decided not just to hold back that birthday post (this one) but do something special instead: Write a full article every five days! It was a lot of work, but June 2017 saw 6 posts each with over 1,600 words on average with one just falling short on 2,000. I put a lot of detail into those posts and also included quite some pictures.

It has been a fun experience but also an exhausting one. I have always been pressed for time and even though I tried to create as much material on weekends if the targeted date was during the week. Still I almost never managed to complete a whole article before the day it was due and often had to finish it in the late hours of evening after work. But now it’s done and I’m happy about that! 😉

5 years of blogging

A lot has happened in the last 5 years. When I started the blog in June 2012, I had quite some time on my hands but I wasn’t sure if I would always find enough topics to write about. This has changed completely. Free time is pretty scarce these days but there’s just so much going on in technology and related areas that I have a very, very long list of things that I’d like to write about – and that list grows faster than I can write and publish articles.

I’ve also moved houses three times over these years – and still haven’t missed a single month completely. Each and every month has had at least one new article and I’m a bit proud of that because a lot of times it really hasn’t been easy.

Since 2013 every year I get most page hits from the US with Germany being second. Ranks 3+ vary.

2012

After thinking about starting a blog for over a year, in 2012 I actually started it. I had been using SuSE and Ubuntu Linux on the desktop for a while and wanted to know more about the operating system. And I figured that it would make sense to pick an ambitious but realistic project and write about it as the journey continued.

In my first half-year I wrote 24 posts introducing myself, finding a suitable distro (looking info Gentoo first but then settling for Arch), thoughts on graphical toolkits and so on. The most important articles were part of a series on installing and comparing 20 Linux desktop environments.

The 6 month of 2012 saw just over 1,000 page views and I even got my first “likes” and comments. However I had no idea if I was doing good for a blog of that kind. Considering that it was public and that the whole world could potentially visit the blog, it seemed pretty low. Especially if you consider the many hours that went into the posts. “There must be thousands of Linux blogs out there and who should read them all?”, I thought. But I went on doing what I was doing because of my own interest in Linux topics. And I also continued to blog about it. If somebody would read and enjoy it: Execllent. If not it had at least made me write an English text which is quite valuable for the non-native speaker.

2013

In retrospective, 2013 was an interesting year. I got the most comments and “likes” that I ever got in a single year. And page hits increased to just over 6,600! You can imagine that I was extremely happy that there actually proved to be some interest in what I was doing. I already had less time now and managed to write 22 posts in the whole year instead of 24 in 6 just months the year before.

I continued to explore and compare applications build with the Qt and GTK toolkits and these proved to be my most popular articles. But I also decided to take a little peek into the bigger world of *nix and have a shy first look at Hurd and BSD. My focus completely remained on Linux, though (little did I know that this would come to an end in the future!). Then I dug into package building and learned a lot by trying to update an old and no longer supported Linux distro. Finally I got my domain elderlinux.org and made the first step towards my original goal: Building my own Linux distribution (you have to have done that once, right? And if only for learning purposes).

2014

In 2014 things started to decline. The page hits raised slightly to over 6,800 but that was it. I published 14 posts, but all top ten most popular ones were written in previous years. I didn’t notice that back in the day, though. I managed to get a wide variety of topics covered, including my first post on hardware (writing about the new RISC-V platform that I still keep an eye on).

The most important achievement of the year was that I completed my Arch:E5 project. My own distribution was Arch-derived but did a lot of things different. It used the de-blobbed Linux libre kernel, was based on a different libc, replaced systemd with runit and used LLVM/Clang as the default compiler among other things. It also used a more modular repository architecture compared to mainline Arch Linux. I took this project pretty far: In the end I had a nice self-hosted distro that even came with two desktop environments to choose from. I learned a lot by doing this but since nobody else seemed to be interested in it (I didn’t reach out on the Arch forums or anything, though, to be honest!), I ended the project, continuing to explore other things.

2015

This was the year things changed. Page hits dropped: With about 6,500 hits fewer people visited my blog than even in 2013. I only wrote one post per month (with the exception of April where it was one April fools article and another setting things straight again). Only two posts of this year made it to the top 10 of most popular posts: One about the “Truly Ergonomic Keyboard” (which obviously brought some people to my blog who would probably not be interested in most other articles that I wrote) and another one that was a “FreeBSD tutorial for Linux users” (that received unusual attention thanks to being featured on FreeBSDNews).

I didn’t intend it to, but 2015 was the first year on the blog that was totally dominated by *BSD topics. Since I had started to seriously explore FreeBSD and OpenBSD, this looks like a natural thing. I wrote an April Fools post about Arch Linux’s Pacman coming to OpenBSD and then tried to prove that actually works. Then a friend asked me about FreeBSD and I decided to write a little introduction series. And then the year was more or less over.

2016

After the disappointment of declining public interest in my blog I didn’t expect much from 2016. Especially as I had been venturing deeper int *BSD territory – and liked it enough to continue writing about it. This was obviously even more niche than Linux and how many people would want to read that stuff, especially from a beginner? I was in for a surprise: the blog got more than 7,100 hits that year with four new posts (all of which were featured on FreeBSDNews) making it into to top 10 this time! I had hoped to reach 7,000 hits in 2014 and after it looked like things weren’t going in a good direction, this was a pretty rewarding experience.

I wrote about various *BSD topics: A howto on setting up a dual-boot FreeBSD/OpenBSD with full disk encryption, a little comparison of documentation in Linux and (Free)BSD, a short introduction to Vagrant and a series on getting started with Bacula on FreeBSD. And finally in December an article on using TrueOS for over three months as my daily driver. This post would spark a lot of interest in 2017, making it the top ranked popular post at the time I write this.

2017

In the first half of this year I have already written 14 articles, including two series that a lot of work went into: The adventures of reviving and updating an ancient FreeBSD 4.11 system with Pkgsrc and building a home router with OPNsense/pfsense. And now after only 6.5 month page hits had already climbed up to over 6,700! Recent 3 month have all totalled in more that 1,000, a mark that I had never reached before.

And that’s all before FreeBSD News, Lobsters and even DragonFlyDigest linked to either my pfSense vs. OPNsense article or even to the whole BSD home router series! That made the stats really skyrocket over the previous two weeks. It definitely looks like there are quite some other people out there that don’t think *BSD is boring!

Current stats

Daily blog stats 07/2017

Before the great rush I was receiving about 20 to 60 page hits each day. The new record is now 425 hits on Jul 18 after Lobste.rs picked up the pfSense vs. OPNsense comparison!

Weekly blog stats 07/2017

Weekly hits were between 140 and 370 between Jan and Jul. And then there was this week that saw 1.200 page hits – this is as much as the whole month of May this year and that was the absolute monthly record before!

Monthly blog stats 07/2017

Between January 2016 and June 2017, the blog received 440 (January ’16) and 1.200 (May ’17) hits. And then July happened with over 2.700 hits!

Yearly blog stats 07/2017

The best blogging year so far had been 2016 with 7.100 hits – now at the end of July 2017, this blog has already seen over 8.800 hits. I’m pretty confident to reach the magic mark of 10.000 this time (wow!).

The future?

Of course I cannot say for sure. But I’ve found my place in the FreeBSD community and made a comfortable home with GhostBSD. After becoming part of the small team that develops this OS, I’ve faced quite some challenges and without any doubt there are more to come. But it is a great learning experience and being a (albeit small) part of it feels very rewarding.

And even though time is a very limiting factor I currently don’t feel like taking a break any longer! I will definitely continue to explore more BSD and write about it. Next station: Some preparations for an article on using jails on the newly installed OPNsense router (or anywhere else!). Thanks for reading – and see you soon.

Back and forth: Linux and *BSD

This is kind of the post that I wanted to write much earlier this year. After running a Linux-only environment at home for years, I had become less and less happy with the general direction things seem to be heading. I had run FreeBSD and OpenBSD on real hardware (old laptops) and several versions of PC-BSD in VirtualBox over the years. In January I decided to step forward and install PC-BSD (10.2) on my primary computer for daily usage. It remained a short episode – and this post will describe why. When TrueOS was released to the public I decided to try out that right away. But that will be another post.

Initial contact

I cannot remember when I first read about the BSDs. That must have been many years ago when I became interested in reading a bit about UNIX. I remember beastie and puffy and I remember that I failed installing a system in a VM because it was somehow too complicated. It likely was OpenBSD and the chance is quite high that I quit during the partitioning which probably was way over my head at that time.

While I never lost interest in it (Unix fascinated me) I decided to “learn Linux first” as that was the system I had chosen to run my computers with. As the Linux world was big enough for years (trying out the various desktops, doing a lot of distro hopping, …) I touched *BSD only rarely. Basically it was limited to installing PC-BSD in a VM when I found out that a new version was released. It seemed to be nice but I didn’t see any benefit over my Linux systems and so I stuck with that.

After studying something entirely different, I had made the decision to break up and get into the IT instead, even though was I well beyond the age that you usually start an apprenticeship. In my country that means that you apply to a company to work as an apprentice there half of the week and go to school the other days. Being somewhat of a Linux nerd I had only applied to companies that I knew weren’t using Windows – I had left that mess and was determined to avoid it in the future as far as possible. In the end I signed a contract of apprenticeship with a hosting company, moved into the area and started learning Linux a lot deeper than I had before. And… I came in contact with FreeBSD.

Being a hosting company that had been founded in the nineties, it had of course started on FreeBSD. Even though the focus of the company shifted to Linux years ago, there still were about 100 servers running FreeBSD. My colleagues generally disliked those servers – simply because they were different. And our CIO declared that he hated them and would love to get rid of them as FreeBSD was totally obsolete these days. If it hadn’t been for our boss to have a soft spot for them (as that had been what he started with and also what he had come to know best over the years) there definitely would have been far less FreeBSD servers around.

Digging into FreeBSD

Now for whatever reason I do have a heart for underdogs and so I begun to be interested in those odd systems quite a bit. Nobody wanted to touch those dinosaurs if he didn’t really have to. However somebody had to take care of them anyways, right? They were production servers after all! I volunteered. There were moments where I kind of regretted this decision but now in hindsight it was an excellent choice. I’ve learned a ton of little things that made me understand *nix and even the IT in general quite a bit better compared to what I would know now if I had followed the straight Linux path.

I also found out that only very few things that the colleagues hated about our FreeBSD boxes were things to actually blame FreeBSD for. By far the biggest problem was that they simply had been neglected for like a decade? Our Linux systems used configuration management, the FreeBSDs were still managed by hand (!). We had some sophisticated tooling on Linux, on the BSD boxes there were crude old scripts to (kind of) do the same job. Those systems were not consistent at all; some at least had sudo others made you use su if you needed to use privileged commands… Things like that. A lot of things like that. So it wasn’t exactly a miracle that the BSDs were not held in very high regard.

As I said, I didn’t really see any real advantage of BSD before. Linux even seemed to be easier! Think network interfaces for example: “eth + number” is easier than “abbreviation of interface driver + number”. But Linux has since moved to “enp0s3” and the like… And when you think again, it does make a lot of sense to see what driver an interface uses from the name. Anyways: I begun to like that OS! FreeBSD’s ports framework was really great and I realized the beauty of rc.config (Arch Linux did away with their central config file to get systemd. What a great exchange… – not!). Also I liked the idea of a base system quite a bit and /rescue was just genius. Would my colleagues lose their contempt for our BSD servers if they were configured properly? I thought (and still think) so.

My apprenticeship was nearing its end and I had to choose a topic for the final project work. I was advised to NOT do something Linux related because the examiners… *cough* lacked experience in that field (in the past an apprentice even failed because they have no idea what they are doing. He went before court and it was decided in his favor. A re-examination by people who knew Linux got him an A!). Now things like that make me angry and calls upon the rebel in me. I handed in a FreeBSD topic (evaluating Puppet, Chef, SaltStack and Ansible for orchestration and configuration management of a medium-sized FreeBSD server landscape).

So for servers I was already sold. But could *BSD compete on the desktop, too? I built two test systems and was rather happy with them. However I wanted to try out a BSD system optimized for desktop usage. Enter PC-BSD.

Working with PC-BSD

I was called nuts for making that switch just days before the final presentation of the written project work (“you need to pass this – your entire career depends on it!!”). But I didn’t want to do a presentation on a FreeBSD topic using a Linux machine! Well, in fact I had been too optimistic as the installation turned out to be… rather problematic due to a lot of bad surprises. To be fair: Most of them weren’t PC-BSD’s fault at all. The BIOS mode on my computer is broken in it not supporting booting off GPT partitions in non-UEFI mode. This lead to my drives disappearing after installation – and myself wondering if my classmates were right… Never change a running system! Especially not if you’re pressed for time!

After I found out what the problem was, installing to MBR was an easy thing to do. I still needed every single night that I had left but I got everything to work to at least the level that allowed me to hold my presentation. Another thing was that I had enabled deduplication on my ZFS pool. “24 gigs of memory should be enough to use that feature!”, I thought. Nobody had told me that it slows down file deletion so much that deleting about 2 GB of data meant to go and do something else while ZFS was doing its thing. Even worse: The system was virtually unresponsive while doing that so you could forget browsing the web or something like that in the meantime. But truth be told this was my own mistake due to my very own ignorance about ZFS and I can hardly blame PC-BSD for it.

I kept PC-BSD on my laptop for about 1.5 month before I needed to return to Linux – and I would in fact even have returned earlier had I had the time to reinstall. While some issues with PC-BSD vexed me, too, I could have lived with most of them. But my wife complained all the time and that of course meant the end for my PC-BSD journey.

So what were (some) of the issues with it? My wife mostly uses the PC to check email when our children are occupied with something for a moment. For her the very long boot time was extremely annoying. And really it took multiple times as long as the Linux system before (and that was still one with Upstart!). Keeping one user logged in and changing to another user quickly wasn’t possible – which meant that I had to shut down my multiple virtual machines and log out completely if my wife just wanted to quickly check mail or something. Not cool. Things like that.

And then there were a few things that annoyed me. It drew power from the battery much, much faster than the previous Linux system. When watching a video, the screen saver kept interrupting it. Firefox had strange issues from time to time and liked to crash. Working with EXT4 formatted disks was a pain. And so on and so forth.

Of course there were good parts, too. I had a real FreeBSD system at my hands with access to ports. Two firewalls (that are nothing like the mess that is netfilter/iptables!) to choose from. Excellent documentation. Nice helper tools (like the automounter, wifi manager, disk manager, etc.). Several supported desktops to choose from. And of course the well thought-out update system that I liked a lot. Thinking about it, there are a lot of good parts actually. Unfortunately even a ton of things nice to have have a hard time covering things conceived as no-gos. That’s life.

I had intended to update to 10.3 and then write a complete blog post about PC-BSD. My wife didn’t like the idea much, though. In addition to that I had little spare time and no alternative spare hardware, so there wasn’t a chance for me to actually do that.

Interlude: Linux

So it was back to Linux. With systemd this time. I’m not exactly friends with that omnivoristic set of tools that annoyed me perhaps just not enough to switch the system over to runnit or openrc. Other than that life was good again (as my wife was happy and I could do my work). But there was one thing in the short period of time with PC-BSD that had changed everything: I had caught the bug with ZFS!

Fourtunately there’s ZFSonLinux, right? So I installed that and created a pool to use for my data. In general that worked but it’s a bit more hassle to set up compared to FreeBSD where you basically get it for free without having to do anything special! If you don’t want to compile all packages related to ZFS yourself for each new kernel, there’s a third-party package repository for Arch. ZFS is not in the official ones. At some point the names of the packages changed and the update failed. I didn’t find anything about that and had to figure out myself what happened.

After another kernel and ZFS update that I did in the morning succeed. But when I came home, my wife told me that when she logged in, she was logged out again almost instantly. I booted the computer and logged in – the same thing happened. What was that? No error message, no nothing. The system simply dropped me back at the login manager… So I switched to text mode to take a look at what might be wrong with the system. Long story short: My pool “homepool” which held all user’s home directories was not available! And worse: zpool import said that there were no pools available for import… With the update, ZFS had stopped working! That hit me in the wrong moment whan I had very little time and so I had to downgrade as the quickest solution.

In the end I chose to compile the “solaris porting layer” and the other packages myself. This was not so bad actually but knowing that on FreeBSD I’d have access to ZFS provided by the operating system without having to do anything (and that nobody was going to break it without it probably being fixed again in no time) vexed me. Of course there were other things, too, and using FreeBSD on other boxes, I wanted it back on my main desktop machine as well.

What’s next?

I installed TrueOS and used it for over three months. The next post will be a critical writeup about TrueOS.

School, exams and… BSD!

Alright, January is already almost over, so there’s not much use in wishing my readers a happy new year, right? I wanted to have this month’s blog post out much earlier and in fact wanted to write about a completely different topic. But after January 27th it was pretty obvious for me what I’d have to write about – On that day I passed my final exam and now I’m a Computer Science Expert by profession. Time to take a look back at the apprenticeship and the status of *nix in German IT training today.

Spoiler: It’s Microsoft, Microsoft and again Microsoft. Only then there’s one drop of Linux in the ocean. I had left the (overly colorful) world of Windows in 2008. When I started the apprenticeship I was determined not to eat humble pie and come crawling back to that. While it was at times a rather tough fight, it was possible to do. And I’m documenting it here because I want to encourage other people to also take this path. The more people take the challenge the easier it will become for everyone. Besides: It is absolutely necessary to blaze the trail for better technology to actually arrive in mainstream business. This is of great importance if we do not want to totally fall behind.

Detours

I didn’t take the straight way into IT. While I had been hooked with computers since I was a little child, I also found that I had a passion to explain things to others. I gave private lessons after school for many years and after passing the Abitur (think of the British A levels) I chose to go to the university to become a teacher.

It took me a very long time of struggle to accept that I could not actually do that for a living. I am in fundamental opposition to how the German school system is being ruined and I could not spend all my work life faithfully serving an employer that I have not even the least bit of respect for.

The situation is as follows: We once had a school system in Germany that aimed at educating young people to be fit for whatever their life holds. The result was people who could stand on their own feet. Today the opposite is true: A lot of people who leave school have no idea how to find their way in life. Playing computer games is the only thing that a lot of young men (and an increasing number of women) actually do. They have not developed any character, they have no passion for anything (and thus no goals in life) and they often haven’t learned no empathy at all (and thus keep hurting other people – not even because of bad will but because of total ignorance).

At the same time things taught in school aim purely at making people available as workmen as soon as possible. Sounds contradictory? Sure thing. At the university I enjoyed the benefits of the old system where there was relatively large academic freedom and you were encouraged to take your time to learn things properly, to do some research if you hit topics of interest to you and to take courses from other faculties, etc. And this is pure insanity: All that is largely gone. New students are forced to hasten through their studies thanks to tight requirements (which semester to take which course in – very schoolish, no freedom at all)… In the name of “comparability” we did away with our own academic degrees only to adopt the inferior “master” (as well as the even more inferior “bachelor”).

Secondary schools are lowering their standards further and further so that almost anybody can get their A levels and flood the universities. At the same time there are not enough people remaining for other paths of education – and those who are far too often are completely useless to the companies: People who can be described as unreliable at best are of no use at all. I did not want to be part of that madness and so I finally decided to get out and do what I probably should have done right from the start.

Vocational school: Windows

The German vocational school system is a bit special: You only go to school one or two days (this varies among semesters). What about the other days? You spend them in a company you apply at before you can start the apprenticeship. That way you get to know the daily work routine right from the start (which is a really good thing). School is meant to teach some general skills and at work you learn practical things.

On the first day I went to vocational school, I kind of felt… displaced. Why? Well, coming back to school to teach children is something that takes a moment to adjust to. I enjoyed teaching in general (even though there are always horrible classes as well ;)) but becoming a student again afterwards is really strange. At least for a while.

Subject matter was extremely easy for me. But being almost 30 years old when I started the apprenticeship of course meant that I had a lot more of knowledge and experience than the typical 18 or 20 years old student. However this was a good thing for me since I also have a wife, two children and had to drive about 1.5 hours to school and the same distance back. Which meant that I had far less time for homework or learning than the others. In fact I only found a few hours to learn for the preliminary exam as well as for the final exam. But that’s it.

We had PCs with Windows XP and were required to work with that. Most of my classmates protested because they were used to Windows 7. I simply installed Cygwin, changed tho panel position to top and things were pretty much ok for me (it’s only for a few hours, right?). A while later we got new PCs with Windows 8(.1?) and new policies. The later made it impossible for me to use Cygwin. Since I had never touched anything after Windows XP, I took my time to take a look at that system. In fact I tried to be open for new things and since a lot of time passed since I left Windows, I no longer had any strong feelings towards it. Still Win 8 managed to surprise me: It was even worse than I had thought possible…

The UI was just plain laughable. I have no idea how anybody could do some actual work with it using the mouse. Now, I’m a console guy and I need no mouse to do stuff (if I at least have Cygwin that is). But that must have been a joke, right?

Then I found out that Windows still was not capable of even reading an EXT2 file system. Oh my. So I decided to format one USB key to FAT32 for school. But guess what? When I attached it, Windows made some message pop up that it was installing drivers – which then failed… I removed the USB key and inserted it again. Same story. A classmate told me to try another USB connector. I thought that he was fooling me but he insisted on it so I did it (expecting him to laugh at me any second). To my big surprise this time the driver could be installed! But the story does not end here. No drive icon appeared in the explorer. I removed the USB key again and reattached it once more. Nothing. My classmate took it out yet again and plugged it into the former connector (the one from which installing the driver failed). And this time the drive appeared in the explorer! It was that moment that I realized not too much had changed since XP – despite the even uglier looks. Bluescreens, program crashes and cryptic error messages that I had not seen in years all were back.

I decided that I could not work like that and decided to bring a laptop each school day. Just about all my classmates were fine with Windows however. But speaking of classmates: We lost five of them in the first two years. Two simply never showed up again, two more were fired by their companies (due to various misbehavings) and thus could not continue their apprenticeship and the other one had a serious problem with alcohol (being just 17 years old) and was also fired.

BYOD: Linux desktop

My laptop was running Linux Mint. When I bought it, it came with Mint pre-installed. My wife got used to that system and did not like my idea to install a different system (I mainly use Arch Linux as a desktop at work and on other PCs at home) and so Linux Mint stayed on there.

There were a few classmates interested in Linux in general. These quickly became the ones that I spend most of my time in school with. Three already had some experience with it but that’s it. One of them decided that it was time to switch to Linux about a year ago. I introduced him to Arch and he’s a happy Antergos (an Arch-based distro) user since then. Another classmate was also unhappy with Windows at home. I answered a few questions and helped with the usual little problems and she successfully made the switch and runs Mint now.

Some teachers couldn’t quite understand how one could be such a weirdo and not even have one single Windows PC. We were supposed to finish some project planning using some Microsoft software (forgot the name of it). I told the teacher that the required software wouldn’t run on any of my operating systems. Anything not Windows obviously wasn’t thinkable for him and he replied that in that case I’d really have to update! I explained to him that this was not the case since I ran a rolling-release distro which was not just up to date but in fact bleeding edge.

When he understood that I only had Linux at home, he asked me to install Windows in that case. Now I told him that I didn’t own any current version of Windows. He rolled his eyes and replied that I could sign up for some Microsoft service (“dream spark” or something?) where each student or apprentice could get it all for free. Then I objected that this would be of no use since I could not install Windows even if I had a license because I did not agree to Microsoft’s EULA. For a moment he did not know what to say. Then he asked me to please do it at work then. “Sorry”, I replied, “we don’t use Windows in the office either.” After that he just walked away saying nothing.

We were required to learn some basics about object-orientated programming – using C#. So I got mono as well as monodevelop and initially followed the course.

Another Laptop: Puffy for fun!

I got an older laptop for a really cheap price from a classmate and put OpenBSD on there. After having played a bit with that OS in virtual machines I wanted to run it on real hardware and so that seemed to be the perfect chance to do it. OpenBSD with full disk encryption and everything worked really nice and I even got monodevelop on there (even though it was an ancient version). So after a week I decided to use that laptop in school because it was much smaller and lighter (14″ instead of 18.3″!) – and also cheaper. 😉

After upgrading to OpenBSD 5.6 however, I realized that the mono package had been updated from 2.10.9p3 to 3.4.0p1 which broke the ancient (2.4.2p3 – from 2011!) version of monodevelop. Now I had the option of bringing that big Linux laptop again or downgrade OpenBSD to 5.5 again. I decided to go with option 3 and complain about .NET instead. By now the programming course teacher already knew me and I received permission to do the exercises with C++ instead! He just warned me that I’d be mostly on my own in that case and that I’d of course have to write the classroom tests on C# just like everyone else. I could live with that and it worked out really well. Later when we started little GUI programs with winforms I would have been out of luck even on Linux and mono anyway. So I did these with C++ and the FLTK toolkit.

Around christmas I visited my parents for some days. My mother’s computer (a Linux machine I had set up for her) stopped working. As my father decided that he’d replace it with a new Windows box (as that’s what he knows), I gave up my OpenBSD laptop. I installed Linux on it again and gave it to my mother as a replacement to prevent her having to re-learn everything on a Windows computer…

Beastie’s turn

So for the last couple of weeks I was back on Linux. However the final exam consists of two parts: A written exam and an oral one. The later is mostly a presentation of a 35 hour project that we had to do last year. I took the chance and chose a project involving FreeBSD (comparing configuration management tools for use on that particular OS). We also had to hand in a documentation of that project.

Six days before the presentation was to be held, I decided that it would suck to present a FreeBSD project using Linux. So I announced to my wife that I’d install a different OS on it now, did a full backup, inserted a PC-BSD 10.2 cd and rebooted. What then happened is a story of its own… With FreeBSD 10.3 just around the corner I’ll wait until that is released and write about my experiences with PC-BSD in a future blog post. Just so much for now: I have PC-BSD installed on the laptop – and that’s what I use to write this post.

The presentation also succeeded more or less (had a problem with Libre Office). But the big issue was that I obviously chose a topic that was too much for my examiners. My documentation was “too technical” (!) for them and they would have liked to see “a comparison with other operating systems, like Windows (!)” – which simply was far beyond the scope of my project… I ended up with a medicore mark for the project which is in complete contrast to the final grade of the vocational school (where I missed a perfect average by 0.1).

Ok, I cannot say that this came completely unexpected. I had been warned. Just a few years earlier, another apprentice chose a Linux topic and even failed the final exam! He took action against the examiners and court decided in his favor. His work was reviewed by people with Linux knowledge – and all of a sudden he was no longer failing but in fact got a 1 (German equivalent to an A)! I won’t sue anybody since I have passed. Still my conclusion here is that we need more people who dare to bring *nix topics on the list. I would do it again anytime. If you’re in the same situation: Please consider it.

Oh, and for another small success: The former classmate who runs Antergos also tried out FreeBSD on his server after I recommended it. He has come to like jails, the ports system and package audit among other things. One new happy *BSD user may not be much. But it’s certainly a good thing! Also all of my former classmates now at least know that *BSD exists. I’ve held presentations about that and mentioned it in many cases. Awareness for *nix systems and what they can do may lead to giving it a try some time in the future.

Top things that I missed in 2015

Another year of blogging comes to an end. It has been quite full of *BSD stuff so that I’d even say: Regarding this blog it has been a BSD year. This was not actually planned but isn’t a real surprise, either. I’ve not given up on Linux (which I use on a daily basis as my primary desktop OS) but it’s clear that I’m fascinated with the BSDs and will try to get into them further in 2016.

Despite being a busy year, there were quite a few things that I would have liked to do and blog about that never happened. I hope to be able to do some of these things next year.

Desktops, toolkits, live DVD

One of the most “successful” (in case of hits) article series was the desktop comparison that I did in 2012. Now in that field a lot has happened since then and I really wanted to do this again. Some desktops are no longer alive others have become available since then and it is a sure thing that the amount of memory needed has changed as well… 😉

Also I’ve never been able to finish the toolkit comparison which I stopped in the middle of writing about GTK-based applications. This has been started in 2013 so it would also be about time. However my focus has shifted away from the original intend of finding tools for a light-weight Linux desktop. I’ve become involved with the EDE project (“Equinox Desktop Environment”) that uses the FLTK toolkit and so people could argue that I’m not really unbiased anymore. Then again… I chose to become involved because that was the winner of my last test series – and chances are that the reasons for it are still valid.

And then there’s the “Desktop Demo DVD” subproject that never really took off. I had an Arch-based image with quite some desktops to choose from but there were a few problems: Trinity could not be installed alongside KDE, Unity for Arch was not exactly in good shape, etc. But the biggest issue was the fact that I did not have webspace available to store a big iso file.

My traffic statistics show that there has been a constant interest in the article about creating an Arch Linux live-CD. Unfortunately it is completely obsolete since the tool that creates it has changed substantially. I’d really like to write an updated version somewhen.

In fact I wanted to start over with the desktop tests this summer and had started with this. However Virtual Box hardware acceleration for graphics was broken on Arch, and since this is a real blocker I could not continue (has this been resolved since?).

OSes

I wrote an article about HURD in 2013, too, and wanted to re-visit a HURD-based system to see what happened in the mean time. ArchHURD has been in coma for quite some time. Just recently there was a vital sign however. I wish the new developer best luck and will surely do another blog post about it once there’s something usable to show off!

The experiments with Arch and an alternative libc (musl) were stopped due to a lack of time and could be taken further. This has been an interesting project that I’d like to continue some time in some form. I also had some reviews of interesting but lesser known Linux distros in mind. Not sure if I find time for that, though.

There has been a whole lot going about both FreeBSD and OpenBSD. Still I would have liked to do more in that field (exploring jails, ZFS, etc.). But that’s things I’ll do in 2016 for sure.

Hardware

I’ve played a bit with a Raspberry 2 and built a little router with it using a security orientated Linux distro. It was a fun project to do and maybe it is of any use to somebody.

One highlight that I’m looking forward to mess with is the RISC-V platform, a very promising effort to finally give us a CPU that is actually open hardware!

Other things

There are a few other things that I want to write about and hope to find time for soon. I messed with some version control tools a while back and this would make a nice series of articles, I think. Also I have something about devops in mind and want to do a brief comparison of some configuration management tools (Puppet, Chef, Salt Stack, Ansible – and perhaps some more). If there is interest in that I might pick it up and document some examples on FreeBSD or OpenBSD (there’s more than enough material for Linux around but *BSD is often a rather weak spot). We’ll see.

Well, and I still have one article about GPL vs. BSD license(s) in store that will surely happen next year. That and a few topics about programming that I’ve been thinking about writing for a while now.

So – goodbye 2015 and welcome 2016!

Happy new year everyone! As you can see, I have not run out of ideas. 🙂

TEK – The “Truly Ergonomic Keyboard”

This post is a review of the Truly Ergonomic Keyboard (or TEK for short). This keyboard is very different from any keyboard that I’ve head so far. And since it is not exactly cheap (about 190 EUR or 250 USD!) I thought that I’d write about it so people who think about buying it can read some facts first.

My last two posts were about closely related topics: 1) keyboards, ergonomics, touch-typing and common typist’s injuries and 2) alternative keyboard layouts. I’ve already made clear that I love my TEK there and in fact I’m so enthusiastic about it that I’m going to buy a second one for work as soon as I can afford it.

Truly Ergonomic Ltd.

With such a name the company won’t win a modesty award for sure! And the claim “A revolution in typing” is quite bold, too. But then again, there’s absolutely no need for being modest if you sell a product like that. IMHO this Canadian company could rightfully claim to have re-invented the keyboard or created a “keyboard 2.0” / “keyboard reloaded” or whatever you want to call it. There are just so many things about the TEK that I’m having a hard time to decide where to start.

The company’s website of course explains a lot of things about the keyboard. I will of course mention everything that I deem important. But I’ll try to focus on my personal user experience with the TEK.

The dust cover that comes with the keyboard – a simple but useful idea!

A radical new approach

The first thing that you notice when you look at it is that the TEK reorganized the key positioning quite strongly. The letter keys stay in the same place compared to the classic keyboard layout. The same is true for the numbers, the Fx keys and the cursor (or arrow) keys. Same with Shift, Esc and so on. But this is more or less it.

Leaving the letter keys in their common position is a good choice because the TEK asks enough of you when you have to re-learn a lot of positions for the other keys. Most importantly: Return, Backspace and Del move from right of the letter keys to in-between. They are placed right in the middle of the keyboard. This feels very odd at first because typically you’ve been familiar with a position to the right for many years. It takes a few hours to get somewhat used to it and, at least for me, it took more than a week to feel “natural”.

The symmetric design makes the TEK look very nice. But aesthetics is of course not the real reason for such a radical re-design. Just as you would have guessed, the real motivation is – ergonomics! The little finger (aka “pinkie”) for example is much weaker than your other fingers. But instead of putting less strain on it, the classical keyboard requires you to use this finger for the Return and Backspace keys which are frequently used during the work day. Re-positioning these two keys so you can use your strong fingers for them makes a lot of sense from this perspective.

The TEK follows a very different keyboard design!

The Ctrl keys – required for a lot of key combinations – take the place of Caps lock and Return on the classical layout. Caps lock is a key most people use very rarely – if ever. Wasting the space of a nice big key for such a useless one is a shame. This is something not only the developers of the TEK have realized. There are some new laptop keyboards which simply remove the Caps lock key completely. The TEK moves it to the position below the Fx keys instead to make room for the left Ctrl.

Moving the Pg up, Pg down, Home and End keys to the left as another cross like the cursor keys, proves to be an excellent idea. I used these keys less frequently before because they were not within direct reach from the home row. Actually I didn’t even pay attention to that and it only came to my attention after using them really often on the TEK (to e.g. go to the beginning or end of a line). Whenever I’m typing on an ordinary keyboard now, this feels lacking an important feature: Those four keys without having to move the right hand off the letter keys!

Another useful thing (even though I don’t really use it) is the placement of the Fn key right below the Fx keys. You surely know this key from many laptops which however place it in the lower left corner of the keyboard. And that means you’ll need both hands to really use it (or completely over-stretch your fingers which is a very bad idea on the long run!). The Fn key on the TEK is in a much more reasonable position.

There’s exactly one design decision that I disagree with: Making Tab a small key is not a very bright idea. And I’m pretty sure that more people will think the same in this regard. Tab – the key for auto completion on the terminal! – a small key… However this is not really a problem. Why? Just follow along and see.

Fully customizable layout

Annoyed by the Tab thing? Well, just re-map that key. No, no, you don’t have to go through the pain of configuring your xmodmap on Linux or figuring out how to do something like that in Windows if you use it (or are forced to do so). You also don’t have to re-configure your keyboard on every computer you might attach it to. Why? Because there’s the Custom Layout Designer where you can create your own layout with ease.

Once you are done, you can download that layout and then flash the TEK’s firmware – so your changes are made directly inside the keyboard and thus completely independent of the computers you might plug it into later!

This is an extremely lovely feature. Think about it: The possibilities to customize your TEK are almost limitless. For example I’ve mapped Ctrl back to the lower corners of the keyboard and put Caps lock on the former Ctrl keys (remember that I’m using the sophisticated Neo² layout which uses Caps lock to access other layers with different characters for the keys). I’ve also re-mapped Return to the left Space key because I feel that two of them are a waste of keys. And thus the former Return key, a nice big one in an excellent position, is free for mapping Tab on it!

The layout designer is not only extremely easy to use. It also makes sharing your layouts a simple thing, since a link (a pretty long one of course) is created for it. View the layout that I use right now here as an example, if you wish.

Back side of the TEK: You can see the DIP switches here

On the back of the keyboard there are some DIP switches. Click on the image for a bigger version to have a closer look. With these you can change between Windows/Linux and Mac mode, choose the base layout for some countries (or for Dvorak) and if firmware flashing is allowed. Mine is set to German (DE).

The fully programmable custom layout is the one of the killer features of the TEK for me. There are only two things that I can criticize: For one the layout designer does not produce images with the current version of the firmware (v3.40 instead of v4.0 which the keyboard came with). I don’t know when they’re going to update the layout designer. For me it is nothing urgent as everything that I need works very well with v3.40 as well.

The second point is the more important one for me: Currently there’s only a Windows program to flash the TEK’s firmware! Probably not a problem for a lot of people who have at least one Windows machine. I don’t. And since I didn’t trust Wine or wanted to flash from VirtualBox or something, I had to set up a Windows machine to flash my TEK. This made me do something I didn’t want to do again – ever. While having breakfast I installed Windows 2000 on an old laptop. Then the service packs, etc… Ok, I’ll skip over the details. The outcome was that I was able to flash the keyboard and I did so quite a few times until I was satisfied with the layout.

I really hope that Truly Ergonomic releases a flashing software for Linux somewhen. OS X is probably first but anyway even this would be a huge step ahead IMHO. While I don’t have a Mac and thus would not directly benefit from it, it would at least give you a choice – and make a Linux version much more likely. 😉

More characteristics

Another pretty obvious fact is the very small size of the TEK. Truly Ergonomic Inc. advertise this as a huge benefit because the mouse can be closer to the keyboard – effectively reducing the way your hand travels whenever you switch between keyboard and mouse. I admit that I disregarded this point before I had the keyboard: There might be a theoretical benefit but it ought to be so little that you don’t ever notice it! Now I have the TEK and my mouse is much closer to the keyboard. Guess what: it feels good! I’m still using a Natural Ergonomic 4000 by Microsoft at work. And there really is a difference when it comes to a keyboard to mouse switch. It’s perfectly noticeable! So this is not just marketing after all.

The box which the TEK ships in

Less obvious is another strong point of the TEK: It uses mechanical key switches. In case you have no idea what this means I encourage you to do a bit of reading. For short: Most standard keyboards use a “rubber dome” technique to trigger a keypress. This is cheap to produce and is of rather low quality compared to other types of keyboards. Mechanical keyboards use a separate and independent mechanical switch for every single key and the key triggers at the moment you press it about half the way down. There’s actually no reason to press it all the way down. And thanks to the switches the keys are what is called “tactile”. It’s hard to describe the real difference while typing. Try it out for yourself if you’ve got the chance. I’ve come to like the mechanical switches of the TEK and many other people love the switches of e.g. Das Keyboard, a popular mechanical keyboard that uses them as well.

Another detail is that the keys of the TEK do not follow the standard key arrangement of placing them vertically staggered but in a straight line horizontally. In fact it follows the opposite approach – and this is a great idea! You won’t believe how much of a difference it makes if you didn’t feel it yourself. Our fingers do not all have the same length. The key arrangement of the TEK honors exactly this fact.

Remaining things

The TEK is advertised to be compatible with Windows, OS X and Linux. I’ve also used it together with FreeBSD and OpenBSD – just like you’d expect everything is fine of course.

Before purchasing this gem I read quite some reviews of course. There were complains from people who had problems with the so-called “ghosting” and such or needed to “type in” their keyboard before everything worked right. I never had such problems. My TEK worked from the moment on that I first connected it to my PC. But then again this was most likely an issue with the old 207 and 209 models and seems to be solved with the 229 that I own.

The only real problem that I noticed was that the embedded Num Pad (which can be switched on and off) behaves strangely and is not of much use. Since I don’t really depend on it, I simply don’t use it. However for some people this may be a total no-go. This is probably fixed by the firmware v4.0, but I didn’t try it out.

It’s much more of a shame that the TEK is only offered with an US layout. Again this is not much of a problem for me. But my wife is not happy with this at all. And as you can all imagine, this is NOT good (and does certainly not help to convince her that I need to spend so much money again to buy a second one!). Would be great if you could choose between some common keyboard layouts. I’d even be willing to spend some more money for a German one!

Back side of the box which shows some features of the TEK

Also many people wrote that the support of Truly Ergonomic Inc. is lousy and it takes extremely long to get an answer at all. I cannot say anything about this since I never had to contact them. (I’m thinking about writing to them about the Num Pad issue – if I do, I’ll update this article with the answer.)

Another thing is the detachable palm rest. I like it the way it is and never attempted to take it off. But I think for some people it may be nice to have an even smaller keyboard.

Depending on what you prefer, there are different models of the TEK. One model with wide Alt keys (model 227) which Emacs users will love and one with two normal-sized keys instead of one wide Alt (model 229). And then there’s an “MX brown”-compatible (soft tactile) and an “MX blue”-compatible (clicky tactile) version of either model. I’ve got 229 brown and that’s loud enough for me (at least until I finally learn not to push the keys down to the bottom!).

Conclusion

The TEK is not a keyboard for everyone. It is too expensive for many people and too different from the style everybody is used to. But for people who type a lot, who are willing to invest a bit of time to re-learn things and who take advantage of its special features (like the customizable layout), it is pretty close to the ultimate solution. It is well-thought-out in just about any area. A plastic dust cover for example is such a simple yet very effective thing!

The flaws that the TEK has are very few and mostly nothing too problematic. A choice between the US layout and some others printed on the keys would be my biggest wish, closely followed by a flashing software for Linux. However I guess that an updated layout designer to feature firmware version v4.0 is more likely – and of course I’d appreciate that as well.

Perhaps some of these wishes might come true if the TEK reached a much wider audience. Maybe even the price could be reduced then so that again more people could afford it. Ergonomics is an important topic when it comes to progress in the IT field. The TEK is not the only keyboard which tries to implement ergonomic considerations. But it is a very good one.

If you consider doing something about Ergonomics, to get a new keyboard and try out an alternative layout like Neo², Colemak or Dvorak, I suggest learning the alternative layout first. Trying to get used to a new layout while trying to adopt to a new keyboard will almost certainly fail. And learning a new layout is by far the bigger task – so it makes perfect sense to learn it on the keyboard that you are used to and make the switch afterwards.

Keyboards, layouts and ergonomics (pt. 2)

This is the second part of my article about ergonomic keyboards and keyboard layouts. In the first part I wrote about different characteristics of keyboards, touch-typing, typical injuries of people typing frequently and my first experience with an ergonomic keyboard: A curved keyboard from Microsoft.

Better ergonomics

Probably too late (I already suffered from pain in my hands) I decided to get one of Microsoft’s “Natural Ergonomic 4000” keyboards. It’s quite a bit more expensive than the average keyboard but I hoped that it was worth the money.

The initial impression was at least ambiguous – or probably even negative. I could see the idea behind the ergonomic design and wanted to believe that its wavy style was superior to the simpler curved one. But the whole thing is a true beast of a keyboard! It’s very big. No, actually it is huge – and not only in length but also in height. The later is a problem if you (like me) have a sliding board under your desk where you put the keyboard. Chances are that it won’t fit there. And then, for a personal view, it is really ugly.

Microsoft’s Natural Ergonomic 4000 Keyboard (german layout) – This was my prefered model until now

It wasn’t easy to develop a friendly attitude towards that thing. The first day I used it, I had to switch to my old keyboard again to enter my boot passphrase. I’m the kind of guy who cannot remember his passwords but knows pretty well which keys he presses. And so it was nearly impossible for me to enter a long password at first because the keyboard felt very different from anything I had ever typed on before.

Another thing is the split design; I used to type the ‘b’ key with my right hand for example. This was no longer feasible with the new keyboard thanks to the gab. This was a major nuisance until I realized that it was not the keyboard getting in my way but in fact a bad habit of mine. From this perspective the new keyboard even helped me to get rid of that bad habit and I’m quite happy with that fact now. As I was getting used to it this became less and less of a problem (the same is true for the passwords). It took me about two weeks to adopt the new style enough to type without pressing the wrong key too often. After a bit more than a month things started to feel alright again. My typing speed however was reduced for many months and I felt that I never actually reached my best times again. But the reason for that was not the keyboard. It was myself choosing to learn a new layout.

National keyboard layouts

While the US keyboard layout can be found around the world when it comes to servers, it simply does not qualify for most languages. This is perfectly clear for the Russian Cyrillic alphabet, the Greek one or the Asian languages. But also most European languages which use the Latin alphabet as well, have additional characters which English does not have. This is why there are so many national keyboard layouts.

The default German layout (from Wikipedia)

However the additional characters come at a price: Some other characters are moved and may even require a combination of keys. The German keyboard is a fine example of a very bad keyboard layout today. It features the umlauts (Ä,Ö,Ü) and other characters, but some special characters are not very convenient to reach. In the days of typewriters it may have been ok because you would not need characters like the backslash, curly braces and so on. These examples are located in hard to reach places with AltGr+Plus sign, AltGr+7 and AltGr+0. The problem is that you need them a lot on the computer. Just think how often you need the curly braces if you’re a programmer… You see the trouble.

A lot of programmers in Germany actually just use the US keymap for work. I can work with US pretty well, too, but this is not the ultimate solution. Fortunately there are the so-called alternative layouts.

Optimized keyboard layouts

In the English world Dvorak is the best known one. It has the same characters as the default US keyboard but another layout. A lot of people claim that they can type faster with this layout. The idea here is that the letters which are most often used in English are placed on the home row (this is the “start position” where touch-typists have their fingers when they start typing). This sounds like a good idea but critics claim that there’s barely an improvement in speed it at all. I’ve never used Dvorak so I cannot say much about it.

The Colemak layout (from Wikipedia)

There’s also a less well-known alternative for the English keyboard that is a more modern variant: The Colemak layout. If you are mostly typing English text you may really want to try it out. It’s meant as an even bigger improvement over Dvorak – and it adds a lot of characters from other European languages! Whether you need a Spanish Ñ, Scandinavic Å or Turkish Ç – no problem. While I’ve never used it myself I must say that it sounds pretty good.

And then there’s the most advanced layout that I know of: NEO². It’s a modern re-organisation of the German keyboard that considers letter frequency of both German and English. It uses several dead keys (keys which do not produce a character themselves but modify the next key pressed adding an accent or something to a letter) and has six (!) layers. Thanks to that it can create special characters like the whole Greek alphabet (in lower and upper case) and dozens of special symbols. Thanks to that unique flexibility you can use it for pretty much any language which uses Latin letters!

The 1st layer of the NEO² layout (from Wikipedia)

The letters are the following: Every normal key press is layer 1. Shift+key press is for layer 2. Caps lock+key produces a layer 3 symbol. And so on. Isn’t it great to finally have a good use for that nice big key below tab? Another cool thing is that this layout is already shipping with X11. So in the Unix world it is always just one “setxkbmap de neo -option” away!

Re-learning to type

I admit that I knew about alternative layouts for years but I never cared to take a look. When I finally did, I decided to give NEO² a try. It was self-evident that it would not be easy to fight two decades of QWERTZ writing. And yes, I was in for a fair share of pain. I had to learn a new keyboard completely from scratch. Damn, where was that letter again? I decided to practice a few minutes every day and after some time I found the right letters after thinking a few seconds. My WPM (words per minute) literally dropped to < 10!

As a (previously) fast typist this was a very distressing experience and I can see why quite some people quit instead of really finishing the migration. It takes a lot of resolve and endurance. But hey, there's no free lunch! I decided to stick with it and kept getting better and better. One day I found that I could reach 20 WPM again, then 30. You can imagine my relief when I hit 50 again. Now I could type fluently type texts with NEO².

After taking a one more week to learn the most important special characters and feeling bold one day I decided to switch my layout at work. The password problem was back again and for some weeks I switched layouts back and forth when I had to enter passwords. But it was only a matter of time until this was no longer necessary.

I've been writing NEO² for quite a while now and I'm still failing to hit 70 WPM on random text. Since I quit practicing after reaching 50 this is pretty much ok, I think. Was it worth the trouble to switch over to a new layout? You bet it was! Learning NEO² was one of the best decisions I've made in the computer field next to abandoning the Windows platform. I can only recommend it to everybody who is interested in this kind of thing. Invest some time – it really pays off.

What’s next?

The next post will finally feature my review of the TEK (Truly Ergonomic Keyboard).