Curriculum Vitae

This is the long-winded version, a concise version aimed at IoT industry is available.

TL;DR: I am a jack-of-all-trades, capable of tackling pretty much any engineering problem in software development, with an emphasis in software quality and testing, secure coding, and security protocols. In my various roles during my long career with my past employer(s), I have done everything that is related to releasing software products; for example, requirements engineering and product ownership, customer communications, quality assurance, architecting, and implementation.

Basic information

Full name:
Sami Juhani Lehtinen
Year of birth:
1975

Objective

My objective in life is to become as skilled as possible in programming and relevant areas. I consume blogs, read books, and attend conferences to keep up-to-date with current methodologies and technologies. I attend online courses on various subjects.

The future of computing is in the cloud and portable devices; internet access happens from the go, wherever the users may be. Securing this access and making sure the users can trust the communications is an enabling technology, and one in which I want to continue being an expert.

I strive for professionalism in my work; I'm not a "cowboy coder" and I make no extravagant promises. If I promise something, I do my damnest to keep that promise; but I don't make those commitments lightly. I can forecast things, and even if my forecasts are more accurate than most, accurate forecasting is very hard. If I need to choose, I choose quality over speed of delivery.

Timeline

2017 -
Full-time consulting for Semeai Oy (Ltd) as a freelance consultant.
2012 -
Co-founder and chairman of Semeai Oy (Ltd).
May 2017 -

Full-time consulting for KONE Corporation.

January 2018 -
Consulting KONE Corporation in a software lead role. I'm responsible for getting a major project delivered in time with the necessary set of functionality, working with over a dozen teams comprising as many architects and several dozen engineers. I do hands-on installation and testing of the final software system, with a smidgeon of coding in C++, in addition to the design, review, negotiation, and meetings that are normally part of this kind of role.
June 2017 - January 2018
Oversaw Saija Sorsa's M.Sc. Thesis "Fuzz Testing as part of Secure Software Development Life Cycle" for KONE Corporation.
May 2017 - December 2017
Consulting KONE Corporation for software and IoT security. My duties also involve software design and implementation in C++ and Python.
May 2017 - February 2019
Completed the Udacity VR Developer Nanodegree.
February 2017 - June 2018
Consulting Sportywe, a startup creating a social app for sports. Backend REST API development and testing improvements, design and implementation of new APIs and coaching software development practices.
2012 - May 2017
Master of Science with honours from Aalto University, School of Science.
October 2011 - December 2016

Full-time consulting for SSH Communications Security (Tectia Corporation) on behalf of Clausal Computing developing next-generation security solutions (CryptoAuditor).

November 2015 - December 2016
Head of the Client/Server product line in SSH Communications Security.
February 2015 - November 2015
Senior Development Manager in SSH Communications Security. Team leader for the Client/Server project and advisor for the CryptoAuditor project.
October 2014 - February 2015
Team leader and project manager for the CryptoAuditor project in SSH Communications Security.
March 2014 - October 2014
Team leader and project manager for a small technology incubation team in SSH Communications Security.
January 2014 - December 2016
Thesis work for SSH Communications Security.
October 2011 - October 2014
Working as a software architect in the CryptoAuditor project.
September 2012
Graduated as a Bachelor of Science. My thesis was graded as Pass with distinction.
October 2010 - October 2011
Working at Clausal Computing as a Senior Software Engineer developing solutions for natural language processing.
2007 - September 2010
Working at SSH Communications Security as a researcher/senior software architect.
1998 - 2007
Working at SSH Communications Security as a chief engineer and software architect for the Secure Shell product family.
2001
Changed to Faculty of Computer Science at the HUT.
1994
Started studies at Helsinki University of Technology in the Faculty of Chemical Engineering.

Projects

I have participated in numerous projects for my employers, most of those being closed source. I have also written a substantial amount of code on my own, for example, to provide tools for the role-playing game I play with friends. Some of these are published in my GitHub page. Here I write about some of the projects I've participated in and about my role in them.

SSH Cryptonaut

With a small team, we created a modern SSH client for the Windows operating system (Windows 7 and above). We followed the Kanban development process. In this project, I was the supervisor for the project team, product owner and I also did some development. Not an optimal set of hats for sure, but we were a small team.

My biggest contribution in code for this was that I developed the automatic updates for SSH Cryptonaut, from continuous integration and integrity verification of the packages to Amazon Cloudfront distribution integration. The updater itself is a small C#/.NET 4.5 program with a WPF/XAML UI like rest of SSH Cryptonaut.

I also designed the error reporting facility in the product; if users encountered exceptions during use, they could use the error reporting facility to notify us about the problem. Technologies included AWS S3, AWS Lambda, C# and Python. Our cloud architect implemented the AWS API endpoint according to our specifications.

The project was unfortunately canceled as part of the restructuring of the company in December 2016.

CryptoAuditor

CryptoAuditor is a product for auditing access by trusted individuals to mission-critical systems in the environment. We built the product from the ground-up. The protocol stacks are mostly SSH proprietary libraries, with large parts contributed by me. In this project, I participated in the design of the overall system, contributed the initial UI in its entirety and also built the continuous integration system. The product upgrade and installation system of the appliance have major parts designed and implemented by me. During this project I spearheaded the transitioning from SVN to Git, and installed a review practice for all contributions to the product.

Sheet for Advanced Engine

Combat sheet for our role-playing game. It started out as a pure server-side generated HTML page. As the requirements for different skills and weapons grew, I added JavaScript as progressive enhancements to help in dynamic UI for, e.g., ammunition selection. After I got introduced to React, I started "Reactifying" the sheet layout, with the current version of the sheet being almost completely client-side generated. As a side-effect, the project is now tagged in GitHub as JavaScript due to the amount of JavaScript code. Server-side is built with Django, a Python-based web framework, with the REST API built with django-rest-framework.

I have written about the Reactification in my blog.

The role-playing system rules are house rules that have origins in the TSR Amazing Engine.

I plan on Dockerizing the sheet, so that it would be easier to try out without a full installation. Currently the sheet is running on my private server. The sheet is not really usable without some bootstrap data, which is currently not included in the package.

The Sheet for Advanced Engine has a project page in GitHub.

VR Nanodegree

I have completed the Udacity VR Nanodegree. I created several projects over the course of the degree.

Galaxy Control

A small showcase game for HTC Vive, created for the Udacity VR Developer Nanodegree (project writeup).

Night at the Elevator

A mobile device VR experience, created for the Udacity VR Nanodegree VR Design course (project writeup).

Puzzler

A small game for mobile device VR, created for the Udacity VR Nanodegree VR Design course (project writeup).

Project Euler

As of this writing (Dec 2016), I've solved 43 out of 582 Euler problems, putting me in the top 7% of problem solvers. Most of my solutions have been written in Python.

SSH2

The original implementation of the IETF standard. I was part of the team designing the protocol.

When the protocol design was being done for SSH2, I was eventually principally responsible for the implementation of any new protocol features or changes to the current implementation. When I joined the project, there was already a working prototype; my colleagues and I built a working software suite. My title back in those days was Chief Engineer.

SSH Communications Security was investing heavily in the IPSec Express Toolkit at the time, and I was the only full-time employee working on SSH2. I implemented many parts of the products, such as scp2 and sftp2, basically from scratch. I was also responsible for external communications; I provided user support to people deploying the software package, I trained customers who were deploying the software, and as at the time this was kind of open source project (with a rather restrictive license), I was also the "community manager" (the concept was not in wide use at the time) for the product.

Later on, the product became closed-source and the team grew. I retained the technical leadership role in the project. With the team, we implemented PKI support and multiple authentication methods, among other features.

SSHG3

A completely new approach to the protocol to enhance performance on the Windows operating system, this was basically a rewrite of the SSH2. I worked mostly on the Server; for example, the rule engine, which enforces the various policies in the configuration, is originally written by me. In this project, I learned first hand the hard way what POSIX threads mean to software.

Competencies

Programming languages

Over the years, I've used quite a few programming languages. I feel that a programmer needs first and foremost to know how to program, while the medium (the actual programming language) is less relevant. I try to learn a new programming language every year.

I have written non-trivial amounts of code with the following languages:

Python, JavaScript, C, C++, C#, Java, Perl, EmacsLisp, Scheme, Emil, Bourne-shell scripts.

I prefer functional and object-oriented languages; Python is my current favorite language.

I have dabbled with Standard ML and Scala. I'd like to learn Rust, Go, Elixir, Erlang, Ruby, and Scala.

Software engineering

I am a veteran in small startup software projects. I have much experience along with formal training in several software process methodologies, such as Scrum, extreme programming, and test-driven development (TDD). I have also been involved in software projects where the agile methodologies have not been used.

I have given presentations in TDD, also available in YouTube.

I am an experienced systems designer for small to large software systems. I have designed systems that have been maintained for more than a decade since they have been implemented. I have been involved with security software for most of my professional career, but I am no stranger to user interfaces or database applications.

I am passionate about organized configuration management. Automated tests should be run, preferably for all commits made for the project. The final deliverables should be built and tested daily. I have written, collaborated on and maintained several custom in-house tools for this purpose. I have also maintained a Buildbot buildfarm.

Protocol design

I've participated in designing a number of protocols. SSH2 is the most prominent one, although my contribution was relatively minor to the protocol itself, but I also have designed extensions and proprietary protocols, both in the network security field and more mundane uses. I was the RFC editor for the then-Internet Drafts for SSH2, now better known as RFCs 4250, 4251, 4252, 4253, and 4254. I'm the author for 4250 and a contributor for the rest.

From the network security point of view, I have implemented SSH almost from scratch, TLS from scratch (still in production use), and implemented various extensions for many other protocols, such as CMP.

Recruiting

I have recruited excellent people for technical positions at SSH. I recruit with coding samples first if possible; it saves time from the candidate and us. I've received good feedback for this approach, also from people who ultimately were not selected for the positions. I will not fill a position with the least bad candidate; I think that the new hires need to lift the team.

Web design

Django, React, HTML, XML, CSS.

Version control

All software projects require version control. I'm fluent in the following, in order of preference:

git, Mercurial (hg), Bazaar (bzr), Subversion (svn), CVS.

Typesetting

LaTeX, SGML, nroff.

Operating systems

Linux (many distributions), macOS (OSX), FreeBSD, NetBSD, AIX, Solaris, HP-UX, Win32.

Databases

PostgreSQL, SQLite, MySQL.

Languages

Finnish
native
English
fluent
Swedish
moderate (official rating: good command in written, moderate in spoken)

Bachelor's thesis

I wrote my thesis about the edge-coloring problem. The thesis is in Finnish, but there is an English abstract. My thesis was graded as Pass with distinction or 5/5.

Bachelor's Thesis

Master's thesis

The subject of my master's thesis was "Anomaly detection in interception proxies", where I investigated the use of a semi-supervised method for anomaly and misused detection based on clustering. My thesis received the grade of 4 out of 5.

Master's Thesis

Net courses

In addition to education in Aalto University, I have taken part in some of the net courses available.

AI Class: Introduction to Artificial Intelligence (fall 2011)
Statement of Accomplishment
Computer Science 373: Programming a Robotic Car (spring 2012)
Certificate of Accomplishment
Game Theory (spring 2012)
Statement of Accomplishment
VR Nanodegree (2017-2019)
Certificate of Completion, https://confirm.udacity.com/Q5HQMH6M

Hobbies

Role-playing games, computer games, board and card games, reading, movies, listening to music, gym.

links

social