Kristof Kovacs

Software architect, consultant

My expertise covers...

expertise

Unix

I'm using various Linuxes (Ubuntu, Alpine, CentOS) for servers, with some FreeBSD on the side. For firewalls and security, it's often OpenBSD.

I have even built custom Linux distributions for clients, based mostly on Debian, and once Manajro (an Arch Linux fork).

Golang (GO)

Golang is, in many ways, "C 2.0". As my "mother tongue" is C, of course I was drawn to this modern and safe language.

Go collected some of the best traits of other languages, namely:

  • massive paralellism, from Erlang;
  • being a compiled language, from C, etc;
  • while still being memory-safe and garbage-collected, from Java and C#;
  • opinionated about coding style (invented this, I guess after Kernighan learned from the brace-style wars of C :) );
  • an easy, integrated hash table (map) type, from script languages.

JavaScript

On the browser there is no alternative to JavaScript, but it's peculiarities and the browsers' inconsistencies make it almost mandatory to use a framework like jQuery or mootools.

PHP

Lots of the server-side web application development happens in PHP, and I do lots of that. PHP programs can be written relatively quickly and easily because it's a very powerful and forgiving language; unfortunately this also means that a lot of horrible code gets written in PHP, attracting some hate to the language. Ultimately, it's just a tool that can be used both well and badly.

For complex web applications it's often practical to build on an MVC framework. In my case it's usually the CodeIgniter, or occasionally Laravel.

Java

For years I was programming in Java when we were developing Austria's first real-time trading system. Recently I'm developing interfaces in it for connecting Java-based systems to the rest of the Internet.

I'm waiting for an opportunity to use ZK, Spring, Hibernate, GWT and AndroMDA in a real-life project!

Erlang

Concurrent programming is not easy. Distributed programming is even harder. But Erlang, the language and the platform, is a very potent foundation for some interesting software, like -- for example -- mixing Erlang and "share nothing" scripting languages like PHP to create best of both worlds applications.

I love Erlang's ability to trace the workings of live systems, the ability to upgrade programs on-the-fly (!), the clean code that results from non-defensive programming (because error handling is in the supervisors), the Mnesia distributed database, the code loading over network...

C/C++

I used to program a lot in C/C++, and it's still one of my favorite languages.

I did systems programming like device drivers for video capture hardware, an object-oriented Windows framework, and interfaces for wearable computers; and I worked on applications like capacity planning software for assembly lines, medical systems, and a CAD program.

Scripting

Obviously, every unix guy uses shell scripting: bash, ksh, tcsh, and my favorite zsh.

TCL is one of the best scripting languages, but it just didn't hit critical mass. This didn't stop me from developing a Linux-based pay-as-you-go Internet terminal system for hospitals in it.

Python is another language that is getting more and more popular, especially with the emergence of Django and other python-based web frameworks. Interestingly, many of the Comet servers are written in Python, like Tornado, Diesel and Twisted. (Just like Erlang is used lately in such advanced software like CouchDB and Scalaris.)

Then there is PERL, that many call a "write-only language", since PERL programs sometimes tend to look like line noise. Still, it's legacy at many places, and it's some people's choice of a scripting language.

Computer networks

Communicating computers is a huge interest of mine. I know the Internet's protocols starting from ethernet and PPP, thru ARP, IP, TCP, UDP, ICMP up to the application protocols like DNS, HTTP, SMTP, IMAP and FTP.

I remember old protocols like xmodem, zmodem, kermit and bluewave; and I understand the newest ones like Comet, Bayeux and SPDY pretty well, because I know the foundations they are built on.

This knowledge enables me to build systems like high-availability clusters, and to tune applications to make better use of resources.

What can I do to help you?

Your name:

Your email (so I can reply. Confidential.)

Message: