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 even Manajro (an Arch Linux fork).

Golang (go)

Go is where I do most of my programming nowadays. It is, in many ways, "C 2.0", and as my "mother tongue" is C, of course I was drawn to this modern and safe language.

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

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

JavaScript

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

PHP

Yes, PHP! :) PHP with the right framework (in my case it's usually CodeIgniter, Laravel or Yii2) is NOT the sorry little hack that you remember from 2005 :)

Lots of the server-side web application development happens in PHP (like Facebook), 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 or badly.

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...

Java

For years around 2000 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.

But my Java skills are a bit rusty, and I'm not looking for Java development projects -- there are so many more efficient and interesting tools out there now!

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.

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 and network security

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, QUIC, SMTP, IMAP and FTP (way outdated now, but it had many interesting features!)

I remember old protocols like xmodem, zmodem, kermit and bluewave; and I understand the newest ones like QUIC, HTTP/2.0, Wireguard, etc 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: