I have been working as a software developer since 1999, but I still have a passion for creating high quality software. Most of the work have been on embedded platforms, but my skills are diversified.

My expertise are:

  • C++
  • This is my primary skill. I can not always recite the standard but I have the knowledge of what is efficient what is not. I am not afraid to work with software that uses template meta programming but instead I enjoy using such techniques. I enjoy and master the new C++11 (c++14, c++16) standards.

  • Embedded systems
  • I enjoy working close to the hardware and reading datasheets. I am experienced in setting up interrupt routines, handling realtime requirements, analyzing latency and priorities, configuring clocks and PLLs, configuiring memories and DMA, setting up peripherals, making bootloaders and so forth. I also have experience with embedded Linux and Yocto.

  • Graphics and GUI frameworks
  • I have working with a number of GUI frameworks including Qt(both QML/quick and widgets), VTK, PCL and created a couple of my own, I worked 4 years on the Populus product that is now owned by Luxoft. I have rendered with both OpenGL, DirectX, OpenVG, Renesas D/AVE, Fujitsi Pixel Engine, and QNX advanced graphics as well as making software renderers and using FPGA solution. I have experience with writing drivers for the Linux DRM/KMS stack as well as V4L2

  • Optimiztions
  • I have lots of experience with optimization for both speed and memory size. I do both algorithmic optimizations as well as employing cpu/memory/gpu optimization.

  • Software & System architecture
  • With almost 20 years experience in the business I have acquired the knowledge of what works and what doesn't

I am also good at:

  • Test driven development
  • I am not a purist in this, thus I do not generally develop test before the code but I try to do it alongside. For my own projects I usually use google test. I also try to add test that test the collaboration of components because faults often manifest here and it works good for regression testing.

  • SCRUM and agile
  • Although I beleive my own Ad Hoc programming is the most agile of all, I do recognise the gain of doing some planning and formalization.

  • Build systems
  • I prefer using CMake, but I can also work with make files as well as directly with IDEs. Some of the IDEs I have been using are: Visual Studio, Eclipse, Greenhills, CodeWarrior, Android Studio, XCode.

  • Operating systems
  • I have worked with a lot of different OS, for example Linux, Windows, Windows CE, QNX, OSEK, Android, iOS, MacOS, Integrity.

  • Automotive development
  • Most of the work I have done has been for the automotive industry

I have some knowledge in:

  • Web development
  • I have a decent knowledge of HTML and css. In the past I have made some implementations using JSP, but my current choice is ASP MVC with C#

  • Graphics and video design
  • Although I am not designer I do at least have some experience with using software like Photoshop, Illustrator, Gimp, 3d studio Max, Blender, After effects, and I do have an active subscription to Adobe Creative Cloud.

  • Programming languages
  • I have tried a lot of programming languages in my days besides C/C++. Here are some examples: Java, C#, Basic, Ada, Objective C, Pascal, Simula, SR, Haskell, TCL, Lisp, Php, Perl, Java script, Lua.

  • Mobile platforms
  • I have developed for both Android and iOS, and in the good old days I also did some development for Pocket PC and Symbian.

  • Databases
  • I have developed some applications that uses SQL databases.

  • Artificial Intelligence and Machine Learning
  • This has always facinated me and in school I tried to take as many courses as possible about this.