Title and info   ignore

#+AUTHOR:Daniel Karling #+email:daniel.karling@gmail.com

Document settings   ignore

\setlength{\parskip}{1em}

About me

I am a highly driven and ambitious developer, a maker that enjoys building things and a problem solver that loves to pick apart complex systems while searching for the solution.

In my spare time I enjoy working on personal projects involving programming, electronics engineering and 3D printing. I also enjoy downhill skiing, flying drones, and cooking.

Employment

Embedded Software Developer

Embedded Linux Software developer, developing Linux application for an embedded electronics package for powered mobility chairs. Development in C++, with a Yocto based Linux distribution. Development process centered around Gitlab and Jira.

Embedded Software Developer

Embedded Software Developer, developing firmware for Lithium Ion backup battery solutions, as well as some Android and iOS development. Among other things, I developed and oversaw integration between the batteries and solar MPPT solutions and other battery charge controllers.

System Developer

After Unit4 I went back to my previous role at Check Point, see the role description below.

Windows Application Developer

At Unit4 I was a Windows Application Developer, working mainly on their MAP product, a complete solution for construction project management, cost calculation, planning, purchasing and financial control. I programmed mostly in C++. My stay at Unit4 was fairly short due to them deciding to downsize the Sundsvall office. References are available upon request.

System Developer

After two years at Check Point I applied internally for a developer position on the Full Disk Encryption solution. As a developer for this product I wrote, debugged and maintained everything from x86 realmode assembler to C# Windows applications. Due to the product consisting of a custom OS that handled authentication before OS boot, a harddrive filter driver and Windows applications for configuration and management I gained experience in OS development, BIOS/UEFI development, Windows Driver development and Windows application development. The position offered many interesting challenges in debugging a wide variety of issues: from bugs in laptop BIOS firmwares to Windows driver deadlocks. References are available upon request.

Quality Assurance Engineer

I started my career at Check Point as a Quality Assurance Engineer. I wrote test cases for, and tested, the Full Disk Encryption solution. The position gave me a great insight into the QA side of R&D, which I have kept with me in my other roles.

Support Technician

I worked at Com Hem as a Support Technician, helping customers via telephone to resolve issues with TV, telephone and broadband internet.

Education

Computer Science

I studied computer science for two years at Mälardalens Högskola. I did not stay to finish my degree, but chose to start my professional career instead.

Skills

I have come across a lot of programming languages and environments during both my professional career and my personal life, and what follows is a list of languages and environments which I have the most experience with. If you have any questions regarding my experience in any other setup, feel free to ask.

Programming languages

  • C
  • C++
  • C#
  • PHP
  • Python
  • x86 assembler

Environments and utilities

  • Visual Studio/Visual Studio Code I have experience in using Visual Studio for C/C++ and C# development – both applications and Windows/UEFI drivers – from version 2008 up to the current versions.
  • Makefile/cmake/gcc/clang/gdb Most of my personal projects are done with gcc or clang with cmake for building, and git for version control.
  • Other tools

    • Eclipse
    • IAR Embedded Workbench
    • STM32Cube
    • WinDBG
    • KiCad
    • PlatformIO
    • GNU/Linux
    • git/SVN/CVS

Other skills

  • Licensed amateur radio operator since 2017
  • Holds a swedish drivers license (B)
  • Fluent in Swedish and English \pagebreak

Personal projects

Below is a selection of some of my private projects that I feel has challenged me and caused me to grow as a developer.

nanoAltair

\begin{wrapfigure}{r}{0.5\textwidth} ∈cludegraphics[width=0.38\textwidth]{images/nanoaltair1} ∈cludegraphics[width=0.38\textwidth]{images/nanoaltair2}

\end{wrapfigure}

I've always been interested in old computing technology, and I've long wanted to have an Altair 8800 from the 70's: the computer that ignited the microcomputer revolution and got Bill Gates started. Unfortunately they are prohibitively expensive, so I set out to make my own version of it.

To add my own spin on it, I decided to create a credit card sized version with most of the same blinking lights and buttons/switches as the original. The software component consists of a completely self-written emulator of the Altair 8800 and it can run both the CP/M operating system and the original game Zork. Virtual diskettes mimicking the diskettes of the original can be loaded from an SD card, and a terminal can be connected via the USB port.

The hardware is designed in KiCad and the code is written in C targetting the STM32 microcontroller.

This project is not yet released to the public.

redeye

The aim of this project was to create an infrared printer that is compatible with the HP Redeye protocol, used by old HP calculators. Many of these calculators had an infrared LED that could be used to connect to a printer, in order to print graphs, calculations, program listings and so on.

The hardware part of the project consists of an Arduino and some simple circuitry to detect the infrared LED. The software decodes the protocol that the calculators use and forwards the data received to a thermal printer module.

This project is complete and code as well as instruction can be found on GitHub.

Project URL: https://github.com/dankar/redeye/

Electronic Load

\begin{wrapfigure}{r}{0.5\textwidth} ∈cludegraphics[width=0.38\textwidth]{images/variableload}

\end{wrapfigure}

I started this project when I needed both a safe way of discharging batteries as well as a programmable electronic load. The safety was achieved by monitoring the discharge with both hardware and software, measuring voltage, temperature and current.

The device can handle up to 10A of current and can be configured to switch off at either a voltage point, a temperature, or at a total capacity discharged. The project is still in development, but the hardware and code is available on GitHub.

The code is written in C/C++.

Project URL: https://github.com/dankar/variableload/

Vector Network Analyzer

The purpose of this project was to make a portable Vector Network Analyzer for analysis of RF antenna performance in the shortwave bands.

A working prototype was created using an STM32 microcontroller and custom circuitry. It measure amplitude- and phase-change of a reference signal to calculate the complex impedance and is capable of measuring the impedance of one port systems, at frequencies from 50kHz up to 30MHz.

Due to other very similar open source solutions becoming available, I've abandoned this project.

Project URL: https://github.com/dankar/antennaanalyzer/

pnglite

pnglite is a light-weight library for handling png files. It wraps zlib and offers a very minimal interface for opening, reading and writing png files. It is used by a few open source projects and is available in most Linux package managers.

Project URL: https://github.com/dankar/pnglite/