Tomi Tuhkanen
Master of Engineering (Software, 2013)
Bachelor of Engineering (Software, 2007)
Software Engineer at Swappie (01/2020 --)
Tmi Tomi Tuhkanen (Sole Proprietorship) (05/2012 --)
CV (

Own Development
Web Links

What is considered a good looking web page changes way too fast, so better to have a simple page that always looks ugly.
I shamelessly copy the style from the masters ;) (e.g. Knuth, McCarthy, Norvig)


Go to blog

Run C# scripts with .NET Core (2/2020)
Use dotnet script to run C# scripts with .NET Core. Compare script and execution with JS, Python and Kotlin implementations.
Use Chocolatey to automate application installations on a Windows development machine (1/2019)
Automate application installations with Chocolatey package manager and make onboarding happier for new employees.
How to distribute a .NET Core application to users who don't have .NET Core installed (1/2018)
Use .NET Core self-contained deployments to distribute a .NET Core application to as wide user base as possible.
How to modify React TodoMVC example to use a REST API and WebSockets (2/2017)
Step by step guide how to modify Redux TodoMVC example to use Fake JSON Server as a Back End.
Fake JSON Server as an IoT Back End (2/2017)
How to use Fake JSON Server as an IoT Back End.
ASP.NET Core Performance Tests (2/2017)
How to execute performance tests for ASP.NET Core with wrk.
Philips Hue Outdoors Use (1/2017)
Philips Hue White bulbs outdoors at South Finland since 07/2016.


Tutorials / Educationals

Digital technology course for 5th graders
Digital technology course material for 5th graders (11-12 years old). Material is in Finnish.
Kotlin is like C#
Comparing the syntax of Kotlin and C#.
C# tutorial
Code examples used in C# training.
Patterns & Principles
Code examples for Patterns and Principles - are these important anymore? training. Has also OOP vs functional examples.
Docker: Chat Server
Example system for Docker training.
React examples
Different implementations of a small React app (plain, container components and Redux).



Some are MeWare, some are now ThemWare and some UsWare. Some are old, some older and some newish. Some are still in active development.
Sources can be found from GitHub and pre-2010 projects are in rar-archives.

GitHub PR Statistics () (1/2019)
Create statistics of most active GitHub users using pull request count.
Lego Boost Control App () (2/2018)
Single Page App for controlling Lego Boost.
Lego Boost Browser package () (2/2018)
Bluetooth Web API package for controlling Lego Boost.
Lego Boost AI () (1/2018)
AI and manual control for Lego Boost robots.
Async interface for the Lego Boost Move Hub () (1/2018)
Simple to use asynchronous functions for the Lego Boost Move Hub.
Fake JSON Server () (2/2017)
Fake REST API for prototyping or as a CRUD backend.
JSON Flat File Data Store () (1/2017)
Simple JSON flat file data store.
RuuviTag Sensor Python Package () (2/2016)
Python library for communicating with RuuviTag BLE Sensor Beacon and for decoding sensor data from broadcasted eddystone-url.
Slack Bot () (2/2016)
BotKit Slack Bot for office use.
Arduino WeatherShield data handler () (1/2016)
Node.js Arduino WeatherShield data handler with Johnny Five.
Dummy sensor server () (1/2016)
HTTP service that serves dummy sensor data.
Node REST Api for sensor data () (1/2016)
Node Express REST API (ES2015 & ESnext) for cubesensors-iot-azure.
Cubesensors IoT & Azure () (2/2015)
Processing for (Cube)Sensor data.
Email statistics service () (2/2014)
Create email statistics from gmail account.
Node.js Yamaha AVR module () (2/2014)
Node.js module for controlling Yamaha RX-series receiver.
Raspberry Pi & Mono () (2/2014)
Controlling Raspberry GPIO and testing Mono with Raspbian and RaspberryPI.
Augmented Reality Plane Tracker () (2/2014)
Track nearby planes with Windows Phone application.
RabbitMQ & ZeroMQ experiments () (1/2014)
Experimenting messaging middleware with RabbitMQ and ZeroMQ.
Hello World Open 2014 () (1/2014)
HWO 2014 bot code.
App Engine Web Application () (1/2014)
Debuggable Visual Studio Python project for a web app running on the Google App Engine.

miniWiki () (1/2012)
Create read-only wiki from text files.
News service ()
RSS reader, news rating.
Game architecure test project () (1/2011)
Real-time boardgame style strategy game test.
Match Rate () (1/2011)
Match rating web site and Windows Phone application.
IP Logger () (1/2011)
Compares user agent to bot list and logs IP.
Email Statistics () (1/2011)
Show statistics of own email account. Supports Gmail and IMAP.
Missile Commander () (2/2010)
My first attempt to learn game programming. Simple shoot incoming missiles game.
List products () (1/2010)
List products from that are under selected price.
Uptime () (1/2010)
Widget that shows current uptime on desktop.
Youtube to embedded flash () (2/2009)
Transforms youtube page to embedded flash video. If youtube's web site is blocked, this should still work.
List products () (2/2009)
List products from that are under selected price.
Flight times () (1/2009)
Shows hourly count of inbound and outbound flights from Helsinki Vantaa airport.
Word Quiz () (1/2009)
User has to write correct translation for shown word.
IRCBot () (2/2008)
Collects links from selected channel to xml file.
Eternity II solver () (2/2008)
Uses brute force to solve Eternity II puzzle (surprisingly not very succesful).
Show Code () (2/2008)
Creates web page from selected code file.
Lines of Code () (2/2008)
Counts physical lines of code from .cs and .vb files from given directory and its subdirectories.
Take a Break! () (1/2008)
Reminds user to keep breaks.
Lottery numbers () (1/2008)
Compares given numbers to this weeks correct numbers.


Web Links

Note: link collection hasn't been updated in a while.

Reddit FAQ Programming
This is actually only link you need. You can stop browsing my site now.
Why to use this search engine? Tin foil hats are also useful. (+1)
Reddit Programming
Social news website's programming subcategory. Keeps you busy whole day.
Hacker News
Programming related social news website.
Stack Overflow
Best programming related question & answer website.
The Daily WTF
Lots of funny (or sad, depends on the point of view) stories from IT field.
Coding Horror
Good programming Blog.
This Developer's Life
Podcast about things technical and not so technical.

Web Magazines
The Pragmatig Programmer Monthly Magazine
MSDN Monthly
Microsoft Developer Network Monthly Magazine
Casual Connect
Magazine for the video game industry.

Algorithms and Data Structures
Data Structure Visualizations
Sorting Algorithm Animations
Algorithm code examples in Java

Desing Patterns and Principles
xkcd: Good Code
Flowchart of good code.
SourceMaking Design Patterns tutorial
Quick Reference Card
Most common Design Patterns in two pages.
Design Patterns for everyone (pdf)
OO Design Principles
Good colletion of object-oriented design principles and values.
The SOLID Principles
Code examples of SOLID principles.

A Visual Explanation of SQL Joins (image from Code Project)
Stack Overflow : Mistakes made by application developers
Use the Index Luke
Tutorial to SQL indexing and SQL tuning for developers.
Every .NET Developer Should Know About the Database they are working with
Collection of usefull SQL Server scripts.
NoSQL Data Modeling Techniques
Explanation of NoSQL data models
Common MySQL Queries
Collection of useful SQL queries.

Regular Expression
JavaScript regex tester
Regex Cheat Sheet (pdf)

A Quick introduction to UML Sequence diagrams
SourceMaking UML tutorial

Cheat Sheets
Collection of cheat sheet links from various pages.
Lots of multipage cheat sheets. (Requires login)
All The Cheat Sheets That A Web Developer Needs

.NET related
Code Project
Programming related articles.
C#/.NET Little Wonders & Little Pitfalls
Jon Skeet: Coding Blog
ScottGu's Blog
Scott Hanselman's Blog
.NET Fiddle
.NET sandbox for developers to quickly try out code, share fiddles and collaborate in real-time.

Web Development
JavaScript Garden
Collection of documentation about most quirky parts of the JS.
Beginning with jQuery - A Solid Foundation to Learn The Basics
Also simple explanation of HTTP-protocol and DOM.
Just what is Node.js?
Brief explanation what Node.js is and when to use it.
Simple Django tutorial
Although Django has good documentation, this is what helped me to get things working.
CSS Tricks
Lots of CSS and Web Design examples.
CSS: Our best practices are killing us
Presentation of CSS-Hell.
Kuler | Colour Lovers
These two are good links for "color blind" people. Good color patterns.
Dillinger is a cloud-enabled HTML5 Markdown editor.

Web Security
OWASP Top 10 Most Critical Web Application Security Risks (pdf)
OWASP Top 10 for .NET developers (pdf)
C# Code Samples of OWASP Top 10 Security Risks.
DEFCON 18: How I Met Your Girlfriend
Presentation of the discovery and execution of entirely new classes of Web attacks.

Game Development
Game Programming Patterns
Online book about patterns used in game programming.
Articles and resources for game developers.
XNA guides and examples
Writing Real-Time Games for Android
Good video of game architecture etc.
Physics engines for dummies
Guide of basic components that make up a physics engine and how to put them together.
Vector Arithmetic For The Complete Novice
Beginner's guide to vector arithmetic with good examples.

Finnish sites

Code Rush
Documentary following the lives of a group of Netscape engineers in Silicon Valley.
Demoscene Documentary
Documentary of finnish demoscene subculture.
Riot On!
Story of finnish media company (Riot-E) during Dot-com bubble.

Modern Microprosessors - A 90 minute guide
Brief guide to microprocessors
The People Behind the Code
Famous programmers who have influenced computer programming
Dark Side of Visual Studio | Studiostyles
Color schemes for Visual Studio
Good wallpaper collection
Programming Motherfucker
Anti Agile Manifesto.

MIT Computer Science Online Course Material
Using PuTTY to create SSH tunnel
The Programmer Hierarchy (jpg)
RSA Animate: The surprising truth about what motivates us
Google Code University
Evolution of Computer Languages
Give your programmers professional tools
The Prices of (Dev) Happiness
Don't Let Architecture Astronauts Scare You
Is hiring only the best a really practical advice for normal desktop application
What was the code quality of the initial version of Google?
Rands in Response
The Management Team - Guest Post From Joel Spolsky
Hitting the High Notes
Why Software Projects are Terrible and How Not To Fix Them
First, Let's Fire All the Managers
97 Things every programmer should know
Spotify Engineering Culture
The User Interface and the Halo Effect
Speed in Software Development
Technical debt 101

F# for C# developers
Fun with JavaScript - Scott Hanselman
.NET Collections Deep Dive - Gary Short
Demanding Professionalism - Uncle Bob
22min, 1h3min



Collected here some books that I found useful and that are also easy to read (so don't have to be a rocket scientist to get something out of these).

Code Complete
Must read book for all new software engineers (won't hurt more experienced either). [summary]
Pragmatic programmer
Best practices and pitfalls of software development. [summary]
Clean Code
How to write clean and undestandable code.
The C Programming Language
Best basic C book. Just by keeping this on your table makes you look like a seasoned professional.
Managing Humans
How to become better manager. If don't care about that, maybe helps you to understand your managers better. Contains also good guide for graduates seeking first job.
Peopleware  [summary]
What is wrong with software development.
Big Ball of Mud
Why all software architectures tends to go there?
C# in Depth
Great C# book.
Facts and Fallacies of Software Engineering  [review]
Collection of Software Engineering facts.
Patterns of Enterprise Application Architecture
Describes all most commonly used architectural patterns. [summary]
Head First Design Patterns (Google books)
Good explanations of Design Patterns.
The Design of Everyday Things
The Web Application Hacker's Handbook
Being Geek
Coders at work
The Mythical Man-Month  [summary]

"History" books:
Masters of Doom
The Ultimate History of Video Games

Good list of free e-books (Stack Overflow)
Good list of books (Stack Overflow)



Process Explorer
Replace Windows Task Manager with this
Good text editor for windows
Good enough free image editor
Because Windows is missing apt-get
SSH client
Text-based web browser

Visual Studio extensions
Do a favour to your fellow developer and keep your code clean.



MEng Thesis (
BEng Thesis (pdf)
Best scifi / fantasy books from

Every developer needs this image
(original link)