Skip to main content

Expertise

Kristof Kovacs
Author
Kristof Kovacs
Software Architect & DevOps Consultant

Hello, I’m Kristof, a human being like you, and an easy to work with, friendly guy.

I've been a programmer, a consultant, CIO in startups, head of software development in government, and built two software companies.

Some days I’m coding Golang in the guts of a system and other days I'm wearing a suit to help clients with their DevOps practices.

My expertise covers... #

Nowadays I use Golang, JavaScript and PHP to craft scalable, high-performance web applications and backends, although I used to code a lot in C/C++, Assembly, Java, TCL and even Erlang.

Unix #

I'm using FreeBSD and Linux (most often Ubuntu server) for servers, with some OS X Server on the side. For firewalls and security, it's always OpenBSD.

PHP #

Most of the server-side web application development today happens in PHP, and I do lots of that.

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

Websites are best done in specialized frameworks like Drupal or WordPress. Both are good foundations and can be extended and bent to one's will with custom-built modules.

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.

The most interesting advancement recently in the JavaScript area is the advent of node.js, that allows asynchronous event-based programming on the server side using Google's shiny new V8 JavaScript engine.

Then there is the Bayeux protocol, that works over ajax/comet and allows real-time multi-point communication between clients. Combine it with an advanced framework like SproutCore for a world-changing mixture!

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.