Areas of Interest
Computer networks, encryption and computer security,
mathematics, free and open source software, algorithms,
programming languages, and Unix system programming.
Previous experience
Automatic control, signal processing, time synchronization,
algorithm design and implementation, TCP/IP, Secure Shell, TLS,
Posix, Unix, Open Source, programming language design and
implementation, object oriented programming, embedded software,
client/server programming, XML & XSLT, encryption, finite
state machines, SMTP, IMAP, HTTP, HTTPS, RTP, RSA, ECC, IEEE
1588, RTP, WebRTC, GNU, Linux.
Over the years, I've used many different programming languages.
In roughly chronological order: Basic, 6502 assembly, Pascal, C,
Common LISP, M68k assembly, Objective C, Python, Pike, Scheme,
Emacs lisp, C++, tcl, awk, x86 and x86_64 assembly, CPU
microcode, ARM assembly, Javascript, Java, OpenGL Shading
Language, Verilog. Languages of choice are C, Scheme, and Pike.
Long experience with development tools such as make, emacs, git,
and automated testing.
As for human languages, my mother tongue is Swedish. Good
command of written and spoken English. Beyond English, basic
knowledge of Danish, German, Spanish, and Russian, and some
knowledge of French and Japanese.
Degrees
- 2008
-
PhD degree in Telecommunications, at KTH. Thesis title: Window-based
congestion control – Modeling, analysis and design.
- 2005
-
Licentiate degree in Telecommunications, at KTH. Thesis title:
Automatic control in TCP over wireless.
- 1998
-
Master of science in Applied Physics and Electrical
Engineering, at Linköping university. Thesis title: NCash – an
experimental digital cash system.
Curriculum Vitae
- 2015 –
-
Working as software engineer at the Google office in
Stockholm. Most projects have revolved around video and
networking in the open source WebRTC library, and supporting
various Google products using WebRTC. I have also worked with
overall code quality and architectural issues in WebRTC, and
deleted more than 100000 lines over 4 years, to reduce code
complexity.
- 2013 – 2015
-
Worked at Southpole Consulting AB. Projects included:
- Adaptation of the Nettle library for embedded
systems, with ECC signatures and optimized ARM code,
supported by the .SE Internet fund.
- A clean room implementation of an audio decoder, for a
large consumer electronics company. Project included some
ARM fixed point FFT assembly and integration with the
Android "stagefright" media framework.
- Design and implementation of a real-time video
distribution protocol for Net Insight, deployed on cloud
servers as well as on Android and iOS devices.
- 2008 – 2012
-
Worked at Conemtech AB (when I started, part of Imsys
Technologies AB, Conemtech was spun off as an independent
company in 2009). Worked mainly with development of control and
signal processing algorithms for IEEE 1588 time and frequency
synchronization, occasionally involved in other development,
e.g., writing CPU microcode for signal processing.
- 2008
-
A two month contract at the KTH School of Computer Science,
working on the GNU GMP library. First month spent mainly on
integration and optimization of new code for computing the
greatest common divisor. Second month spent mainly on new
multiplication code based on small-prime FFT, including some
highly optimized x86_64 assembly for the most importantant
transform routines. Also published On Schönhage's algorithm
and subquadratic integer gcd computation in the AMS
journal Mathematics of Computation.
- 2005 –
-
Contributor to GNU GMP, a library for high performance
arbitrary precision arithmetic. Main author of the greatest
common divisor routines, using state-of-the-art subquadratic
divide-and-conquer algorithm for large sizes. I have also
contributed to multiplication and division.
- 2002 – 2008
-
Graduate studies at the Automatic Control group at the KTH
School of Electrical Engineering (previously, the Department
of Signals, Sensors and Systems), Stockholm. Research into
applications of control theory to computer networking.
- 2000 – 2001
-
Worked full time at E-hand, as security officer and developer.
Development was mainly for the Palm Pilot. I also spent a few
hours a week working on free software.
- 1999 – 2000
-
Worked full time at StreamServe AB (now OpenText). Development
included systems programming on Unix and Windows NT, security,
XML, and Unicode support.
- 1998 –
-
Main author of GNU LSH, a free software implementation of the
Secure Shell protocols, and the GNU Nettle low-level
cryptographics library. The LSH project is currently mostly
dormant, while Nettle is quite active, and it also used by
GnuTLS. Contributed to RFC 4251 – 4254 within the IETF
Secure Shell WG.
- 1996 – 1999
-
Worked part time at Idonex AB (now Roxen Internet Software).
Worked on the Roxen web-server. Among other things, wrote its
SSL (Secure Socket Layer) implementation.
- 1993 – 1996
-
Worked part time at the Mathematics department at LiTH
(Linköping Institute of Technology). Taught several math
courses for the engineering students.
- 1991 – 1992
-
Civil service, which included training as nurse and ambulance
assistant, and a few months of practice at nursing home,
hospitals and the ambulance service in Stockholm.
- 1990 – 1998
-
Studied Applied Physics and Electrical Engineering at LiTH.
Branch of studies: Applied Mathematics.
- 1987 – 1990
-
Studied at Brännkyrka gymnasium, the science program.
Niels Möller