Thoughts

Lacking a blog [1] I write down random thoughts here.

APIs, GUIs, CLIs, Services

You write a small program beginning with a lib that exposes an API (with procedures to call). Then you write a simple CLI, e.g. by using Click. It would be great if it had a GUI for casual users (QT of course). Let’s integrate it with the rest of our Distributed Computing Platform (TM), so you build a service (Flask maybe?) obviously REST-Style. And all of these are built by hand, because 500 lines of XML and FooFactoryFactoryConfigurator is not your style.

There was WSDL, and there are WADL and RSDL. But what would be really cool is ADL: API Description Language.

Writing a new tool should be a three-step process:

  1. define the public API
  2. write the lib
  3. define the interfaces you want (and I mean CLI / GUI / Web API)
[1]I have a strong dislike for Wordpress and a strong affinity towards rst. Unfortunately there is no rst-based blog. That would be nice.

Why Ubuntu

A friend recently asked why I used Ubuntu. He thinks of it as a nub’s distro and to a certain extent he is right. Ubuntu (Server) comes with lots of stuff and automatism you do not necessarily need. In a specialized, bigger installation I would definitely go for something stable as Debian or ArchLinux, because they both are lean distros. Debian for something stable and well-maintained. Arch makes it easy to stay bleeding edge due to its rolling release model.

Ubuntu has some main advantages in my mind:

  • You have an error message: Google it, append or prepend “Ubuntu”, and in most cases you get a helpful forum or Stackoverflow post. Problem solved. Don’t get me wrong. Arch’s docs are the best I’ve seen, if you want to get into the nitty gritty details and really want to know what you are doing.
  • Package versions hit the middle ground. You basically get Debian’s stable packages (admittedly with Ubuntu’s crazy patches applied), but if you want latest builds then just grab a PPA and you’re good. Also, many projects supply Ubuntu packages.
  • I like to keep my servers and my desktop environment as close as possible. This way I can reuse server Salt states on the desktop and vice versa. It also makes building development VMs for Mac or Windows users easier and keeps dev / test / prod as close together as possible (also, Kubuntu’s UI looks neat).