TL;DR; Curriculum Vitae
The purpose of this page is to give you an idea of what kind of person and programmer I am. It will go into some detail about my professional and hobby background. To me, this kind of information about other people is interesting; however, if you find it to tedious, please feel free to skip to the more compact CV, or simply shoot me an email and schedule a phone call of an IRL meeting.
My name is Johan Liseborn and I have been working with software development since the 80s. Growing up during the home computer revolution during the 80s, I am an autodidact programmer, who later went to university for more formal training.
My first real job as a programmer was in 1989, when I, after having finished technical college and the mandatory Swedish military service, joined Ericsson in Bollmora. After a few years of developing PBX:s in Plex-M I went to study computer science in Linköping. During that time, the internet became a thing, and since then, most of what I have been working on has been internet related.
In 1999 I co-founded Hotsip, where we built voice, video, and chat applications and infrastructure based on SIP. Hotsip got acquired by Oracle in 2006, and I spent a few years there. After that I co-founded a company offering mobile based task management for small businesses, but that never took off. I spent a few years working in the financial industry, first with TriOptima, and then briefly with Klarna.
In 2010 I joined Glactic to work on a web based dating service including real-time voice and video speed dating. The system was pretty cool, including a real-time matching engine based on Apache Solr, and a real-time voice and video exchange engine built in Erlang, but once again, the service never took off.
In late 2011 I became employee #1, Lead Developer, and CTO at MagineTV, where I was part of designing and building, from the ground, a real-time transcoding and streaming system for live, linear TV. I left MagineTV at the beginning of 2015, to found Castlerock and work on new, exciting projects.
Since 2015 I have been working as an independent consultant/freelancer. I have been working with streaming systems, embedded systems, IoT, and 6LoWPAN among other things.
I have learned that I like startups, and I like to be part of solving new problems and creating new systems from scratch.
Through the years, I have been working with many different things, from being a junior programmer to being a manager, a CTO, a board member, and a chairman of the board. I have found that what I like most is to work in a bright team, solving new problems, and building systems from scratch.
If you think that there is something I could help out with, please do not hesitate to drop me a mail.
I started out learning programming on my own in the early 80s. The first computer I used was a friends ZX81. I got my own VIC-20 in 1981, followed by a C64 in 1982. I started out programming in BASIC on the ZX81 and the VIC-20, but I soon realized that the bundled BASIC would not allow you real access to the power of the machines. This led me to learn 6502/6510 assembler. My two bibles at the time where Mapping the Commodore 64 by Sheldon Leemon and Programming the 6502 by Rodnay Zaks. Dabbling in assembler not only put the full power of my machines at my hands, it also gave me a much improved understanding of how a computer actually work.
Around ‘84/‘85 I got a Sinclair QL, which was a really cool machine. It had a BASIC interpreter that was really easy, to extend with your own commands (in assembler), and it had a 68008 CPU, which meant I could start playing around with 68k assembler. It also had a pretty neat storage system, consisting of two “microdrives” with infinite loop tape cartridges. The only thing that sucked was the graphics, so it was no-good for gaming.
In 1986 I got an Atari 1040ST, and around this time I came across an interview with Richard M. Stallman in the Swedish computer magazine Datateknik. This was my first real exposure to free software. I found out that there was quite a lot of free software available for the Atari, including alternative operating systems, compilers, and interpreters for all kinds of wonderful languages. At the time, I was learning C by reading “Programmering i C”, the Swedish translation of the first edition of “C Primer Plus” by Mitchell Waite, Stephen Prata, and Donald Martin. I now found I could download GCC and be able to actually compile C programs, not only write them on paper! This was followed by exposure to all kinds of fantastic languages, such as LISP, Scheme, Prolog, and others.
Sometime during ‘89/‘90 I got exposed to UNIX when I got one of the first Sun workstations in my group at Ericsson. This opened up another world for me, both in how to approach software development (through the command line!), and in the form of even more easily accessible languages and tools, such as Perl, Tcl/Tk, SCCS/RCS/CVS, shell scripting, etc.
I got my first own regular PC, a 486, sometime in the early 90s, probably in ‘92. I ran windows for a while, I tried OS/2 (it was handed out for free at my university and it was completely useless on that machine), and then switched to GNU/Linux, probably late ‘92 or early ‘93.
In December ‘99 I got hold of OpenBSD 2.6 and fell in love with the OS and the approach of the project. The focus, the attention to detail, and the dedication to the project goals, as well as the somewhat brusk, no-nonsense, and to-the-point way of communication, which some people perceive as rude, are all things I appreciate. For a few years, I ran OpenBSD as my primary operating system, on a number of IBM ThinkPads. Eventually, I had to switch it out due to lack of availability of some software I needed for work.
Since the mid 90s I have had a whole bunch of machines, mostly laptops, and mostly IBM ThinkPads (and later Lenovos). I switched to Apple machines (I know, I know) sometime in the mid 00s, the first one was a 12” PowerBook. I have always been fond of small laptops, favoring portability rather than raw performance. This also goes well with my thought that most software is bloated, and that we in general should be able to get by with smaller, cheaper machines.
Since September 2015 I run GNU/Linux on my machines, and since October 2017 my main machine is a Lenovo ThinkPad X270 with an Intel Core i7-7500U CPU, 16GB RAM, 512GB SSD, and a US keyboard (because that is more convenient for programming).
With the introduction of the Raspberry Pi, and maybe even more so, the Arduino platform and the plethora of microcontroller based development boards (such as the Adafruit Feather series for example) that have become available for cheap, I was thrown back (happily so) to my early years of computing. Nowadays, I spend a lot of my spare time hacking on low-level programming on ARM and RISC-V based boards of various kinds.
On one of the most important questions of all, “what editor do you use”, I used to run Emacs, but have now switched to use Vim most of the time. I do sometimes use VSCode (together with PlatformIO. In general, I’m not very fond of IDEs. I do like some of the code completion and code browsing capabilities of some of the IDEs, but I thoroughly dislike the magic that often happen behind the scenes, preferring to fully understand the configuration and invocation of my tools, as well as how to build the source code skeletons for whatever environment I am programming.