Herwig Hochleitner @bendlas

User-Stack Software Engineer

This a CV and profile of my skills and interests.

Areas of Expertise top

My professional skills and interests, grouped by strength of expertise into senior, working and junior.

Senior Level

To consider myself "senior level" in an area, I need to feel comfortable to offer in-depth analyses of existing systems and to design, create and maintain lastable systems.

Functional Architecture

I have extensive experience with functional programming techniques. That includes Nix(OS) on the operations level, Clojure(Script) on the application level and React(Native) on the UI level.

I like to focus on declarative, reproducible and introspectable systems, with explicit effects, based on functional techniques.

User Stack Engineering

The user stack is the part of the "Full Stack" running in the user space provided by a typical posix kernel. For a typical project, engineering the user stack entails:

I do not consider myself a "Full Stack" developer. For that I would need to also become proficient in:

Preferred Stack

To deliver full systems, I like to rely on these technologies in particular

  1. Nix + NixOps
  2. PostgreSQL / Datomic
  3. JVM + Clojure
  4. GraphQL / HTTP
  5. React + ClojureScript

Working Level

To consider myself "working level" in an area, I need to feel comfortable to become productive within an existing system quickly and to create a new system after some research.

Java Programming

I have delivered projects on JavaME, Android and JavaEE, and I know my way around the JVM pretty well.

For server programming, I prefer using Clojure to program the JVM. For Android, I prefer using ReactNative, to keep the necessary Java to a minimum. At these, I'd consider myself senior level.

Browser Programming

With web standards changing as fast as they do, I consider it really hard to stay senior level at this. I have been delivering UIs via the browser for all my programming life, habitually working around browser quirks. I care about accessability and progressive enhancement.

Web APIs, I've used as a frontend programmer, include:

Still on my TODO list:

For browser work, I prefer to use ClojureScript with React. At this, I'd consider myself senior level.

Infrastructure Operations

Many of my deliverables have been full user-facing systems, spanning browsers, mobile devices and server-side components. Often, I'd also operate the hardware for the servers.

This means, that I'm basically familiar with Monitoring, Provisioning, Scaling and Load Balancing and I design my systems, such that they interact well with these.

Apart from running my personal and development infrastructure, I prefer to work with an ops team. Though, I believe that functional, reactive architecture can bring development very close to operations.

Shell / Systems Programming

It's hard to enumerate all the languages and technologies, I've worked with during my activity as a package maintainer for NixOS, most often there is Python (which I also did some application programming in), bourne shell, autotools, systemd and small C programs.

Event Sourcing

Deriving consistency guarantees from the single-writer principle leads to simpler and more introspectable systems and I like to apply it in my designs, if possible. I have experience with Datomic, which designs a database system around this, as well as Matrix.org, which is ostensibly a chat protocol, but it's really a standardized event DAG.

Lisp

In addition to Clojure, I've worked with Common Lisp and Emacs Lisp, and I found my skills to carry over well.

Docker

I really appreciate docker for guiding me towards discovering the power of unshare(1).

Junior Level

To consider myself "junior level" in an area, I need to have set up a working environment and written some code myself. Here are some that I'm interested for expanding my skill in.

Custom Android Builds / ChromeOS Ecosystem

Due to maintenance of the Chromium package in NixOS, as well as experiments with WebRTC, I'm somewhat familiar with the ChromeOS build system and infrastructure. I also developed a prototype of a kiosk, which included developing patches for Android.

Realtime Graphics

I have developed an OpenGL ES feature for an android app at some point and I'm generally interested in hardware - accelerated realtime graphics, as well as scientific programming using CUDA or OpenCL.

Programming Languages

I've done some toy projects / prototypes in these. Interested in picking them up again.

Unfortunately no experience in Rust

If you're willing to let me learn this on the job, I'd be delighted.

Working Experience top

My work so far, in roughly chronological order.

Employments

Network Administrator at Urbas

Linux, SunOS, Windows. Also did my first paid development: A python server + web UI for transferring files too large for email attachments (shouldn't be a problem nowadays .. hah).

Junior .. Senior Developer at Bolldorf

A small shop, that I helped build up from very early stage. There I got my holistic view on systems, as well as an opportunity to use many different technologies in the field.

Frontend Developer at Diagnosia

Helped them with expanding into the german market.

Open Source Engagements

Projects with actual users, that I work on regularly. For more, visit my github profile.

Maintainer of Clojure's data.xml library

Started out by implementing missing namespacing support. Got handed the keys.

Maintainer of nixpkgs

The package collection for NixOS. This is a full linux distribution and I've been involved (amongst other) with the following packages:

Projects

Notable projects from my employments and freelance gigs.

RingIt

A smartphone gadget for a managers of a hotel chain, to display current resident when getting called from a room. Python on Nokia S60.

DIWNFC

A full system for a facility management company, generating SLA compliance reports. Clojure, jQuery, NFC, JavaME on Nokia S40, Java on Android.

Car2Go for BlackBerry

Carsharing app, cross-platform for BBOS6 and BBOS10. Clojurescript in WebView + native JavaME extensions on BBOS6.

diekriseverstehen.net

Political information. Clojurescript, SVG.

Heterodox Newsletter backend

A CMS and authoring system for an academic newsletter. Clojure, ClojureScript, Datomic.

lebensretter.at backend

Service for volunteer first responders, to get notified in emergency situations near them. Clojure, ClojureScript

CNPView mobile map viewer

High-Performance viewer for a map with vector and marker overlays. Java and GLES on Android, OpenGL ES.

Diagnosia germany UI

Browser UI, as well as setup to unify native apps. ClojureScript, React, ReactNative.

Education top

Mechanical Engineering

Cambridge 1st Certificate in English

Software & Information Engineering

Other Interests top

Beatbox

I'm a passionate beatboxer and regularly attend jam sessions and other events.

Climbing / Bouldering

I love climbing as a holistic workout, but also as an excuse to visit interesting places.

Free Software

The free software community enriched my life and carreer to a great deal and I try to give back, when I can.

Event Management / Volunteer Coordination

After many years of being involved in the beatbox community in Vienna, I have started to host a regular beatbox event. Also, I have been involved in organizing a 2-day festival, based on voluntary work, in my home town.

Cycling

I'm really into cycling as a means of transportation and have worked in a bicycle workshop. I used to do the occasional single-trail.