Sami Kuhmonen

Digitaalinen Portfolioni

Projects I Have Done

Here is a very incomplete list of things I've done. Considering I've been doing programming and development for over 20 years professionally and even before that for fun as a youngster it's understandable I can't remember everything I've done. Hopefully this will still give some idea of the breadth of the things I have experience of.

I have also written multiple test projects with different technologies including Vue.js/Vuex, React/Redux, Angular, Unreal Engine 4, WinForms, WPF, SignalR and whatnot. I also can use many other programming languages, like Perl, Python and Swift, with varying depth of knowledge.

My work projects are usually not something I can talk about publicly so they are not listed here.

Paraversume

Paraversume is a realtime online location based multiplayer game where the players command a drone and travel the world fighting the Paraversume Protection Agency and the opposing faction for ruling the world.

The server was done with C#/.NET and data storage is in PostgreSQL. The clients are written in Objective-C/C++ for iOS, Java for Android and the first test client was written for Windows Phone with C#/.NET.

  • Game
  • iOS
  • Android
  • C#
  • C++
  • Objective-C
  • JavaScript
  • OpenGL ES
  • PostgreSQL
  • GIS
  • Maps

Poirot

Poirot is a game of logic published for Windows Phone. I have also been writing a version of it for iOS and Android for learning new 2D frameworks but haven't finished those yet.

  • Game
  • C#
  • Xamarin

Telkussa

Telkussa is a multiplatform TV guide for Finland. It consists of a web site and apps for iOS, Windows Phone as well as Android in development. It is broadly used and the fastest site to use.

The website is done ASP.NET MVC and the data storage is in PostgreSQL. iOS client was written in Objective-C and Windows Phone client in C#. Android client is written in Xamarin/C#.

  • C#
  • ASP.NET MVC
  • iOS
  • Web
  • JavaScript
  • Android
  • Windows Phone
  • PostgreSQL
  • Objective-C
  • Xamarin

Jokahaku

Jokahaku was my testbed for location based services and other search functionalities. It includes a self-drawn map based on OpenStreetMap and Digiroad data for Finland, company/serviec searching, route searching within Finland, public transport routes in Helsinki, news site searches, product searches and information, food ingredient information, multilangual dictionary etc.

All code is hand-written, no third party libraries are used for any of the functionality. Routing through all roads in Finland with A* algorithm.

The site uses ASP.NET and the backend is PostgreSQL with PostGIS.

  • Web
  • ASP.NET
  • C#
  • JavaScript
  • PostgreSQL
  • PostGIS
  • GIS
  • Maps

mIRGGI

mIRGGI was the first IRC client for Symbian S60 3rd edition and later ported to work on 2nd edition and some EPOC devices also. It was the most used IRC client for Symbian devices and still has some users even though it hasn't been updated in a long time.

  • Symbian
  • C++

Twitch Chat App

Simple but usable chat app for Twitch. Can join channels and chat, shows the regular Twitch emoticons and everything.

  • C#
  • WPF

Stream Control

A complete solution to manage video streaming through OBS Studio or Streamlabs OBS. Contains a PC app and mobile clients to handle scenes, animations, volumes and lots more. On sale at Steam.

  • C#
  • WPF
  • Xamarin

Comic Reader

Comic book reader for CBR/CBZ/CB7 formats. Needed a simple reader and didn't find any so made my own. First with WPF, then ported to UWP also. Maybe for mobile use also someday.

  • C#
  • UWP
  • WPF

Hain

Hain was an old project meant to be a multifunctional service, mainly focusing on searches and location services. It was done in a time before GPS so users didn't really have good location services on their phones. I created a system that could collect data about the cell towers from users with GPS and then use that information to locate other users.

The system provided local service searches as well as guidance to get to places. It was also adapted to blind people needs to help them reach places and walk to services around them.

  • GIS
  • Symbian
  • C++
  • C#
  • JavaScript
  • ASP.NET

Jutut Blog System

A blog system that was used by several people to publish their blogs. The system allowed using Nokia's LifeBlog system directly from mobile phones for photos and videos.

  • ASP.NET
  • C#
  • JavaScript

Trevor Volume Rendering

I've written several volume rendering applications, one of which was presented in the Heureka Science Centre as well as traveled around the world as part of the show. The application included a human head which could be cut in different ways and the visitors could see what lies inside.

The system was written entirely in x86 assembly and included basic multitasking system and did all the volume rendering with shadows etc. This was done around 1996.

  • Assembly
  • Medical

ECG Machine

I built the hardware and software for a simple ECG machine that could handle the measurements from limb connections and produce a six channel graph for on-screen display.

  • C#
  • Embedded
  • Medical
  • WPF

Java Virtual Machine

A simple Java Virtual Machine for Symbian as well as on J2ME platform. It could run simple Java applications with my own system classes. It was meant for dynamic application loading on the Hain platform.

  • C++
  • Java
  • Emulation

Webshop

A whole web shop system for handling the sales, packaging, invoicing, ordering etc for our PC hardware store. Was one of the first places to allow proper tracking and handling of orders in Finland.

  • PHP
  • JavaScript
  • PostgreSQL

Document Storage System

A document handling system for construction company and printing house use. Included everything including storing documents, showing blueprints, editing, revisions, ordering hardcopies, delivery tracking, construction area safety tracking etc.

  • PHP
  • JavaScript
  • PostgreSQL

Translator LT

Translator LT is my test project for translating between languages. It can detect Lithuanian words, stem them and produce basic translation of the words to English at the moment. The target is to make it understand the words properly and translate them in proper form, most likely to Finnish, since Lithuanian and Finnish share many similarities.

  • C#
  • Languages
  • WPF
  • ASP.NET

Demoscene Contributions

I was active in the demo scnene for some years and produced several intros and demos quite successfully. Mostly written in x86 Assembly in the times of 386 and 486.

My 4k intro "Optimize" was also in the top three of the IBM Leonardo da Vinci competition in Finland.

  • Fixup Overflow, 64k Intro, Assembly 1993
  • Hoax 5 Disk Mag, 1993
  • GRR!, Demo, Aggressive 1993
  • Optimize, 4k intro, Assembly 1994 (3rd place)
  • Images, Demo, Assembly 1994 (5th place)
  • Assembly
  • Multimedia

QR Code Reader S60

Realtime QR code reading on Symbian S60 platform phones with camera, without slow picture taking. Hand-written image processing for detecting the code, error detection and content handling. Done at a time when most systems requireq slow picture taking and post processing to find the code.

  • Symbian
  • C++

FTP Server

I needed a fast FTP server to transfer files from a Windows XP machine. The usual FTP servers available didn't really work fast enough, most likely due to them using the OS provided file transfer (which is limited in bandwidth) so I wrote my own.

The server is written in C# and can handle SSL encrypted connections and transfers data as fast as the network can handle.

  • C#
  • Server

NFS Server

NFS server to share files and other data from Windows computers to *NIX machines. The server can handle protocol version 3 and partially 4. It has a pluggable filesystem module so anything can be plugged into it, not just actual files on a hard drive.

  • C#
  • Server

HTTP/WebDAV Server

HTTP/WebDAV server to handle remote file handling. It can be connected to the same system as the NFS server so it can provide real or virtual files out.

  • C#
  • Server

IMAP/POP Client/Server

Simple IMAP/POP server and client systems to get email messages around. Can be connected to the same virtual/physical data store as HTTP/NFS servers.

  • C#
  • Server

C64 Emulator

Emulator for Commodore 64 I wrote for fun. It can handle some cartridge games and basic input/output but has lots of problems. This was just a quick test project to learn new things.

  • C#
  • Assembly
  • Emulation

PocketPC/ARM Emulator

Emulator for the iPaq 3630 PocketPC (StrongARM 1110). It can almost boot Linux on it but due to it not implementing timers properly it doesn't really get far. It was done for fun to learn more about ARM assembly and PocketPC system internals.

  • C++
  • Assembly
  • Emulation

PDF Reader

PDF reader that can mostly handle PDF files and render them up to a certain level.

  • C#

PDF Writer

Component to produce PDF files with text, images etc. It was used in some commercial reporting products as well as internal projects.

  • C#

HP-GL/2 Viewer

For a construction blueprint system I developed a HP-GL/2 viewer that was used to check plotter files printed from CAD software. It also allowed marking errors and notes on them and synchronizing these to the server for sharing with others.

  • C++
  • ActiveX

SVG Renderer

SVG renderer that supported almost all SVG features except animation. This was way before modern browsers (like Firefox) had any support for it.

  • C#

Calculation Components

I've developed calculation components for applications needing support for arbitraty formulas and data processing. The components can take a written formula, parse it and calculate results using aggregates, regular math operations etc. These components have been used in commercial applications.

  • C#

DOC/XLS Readers/Writers

Reader components to read and write Microsoft Office DOC and XLS files. These were used to read information from documents and produce spreadsheet files from tabular data in applications.

  • C#

Simple Spreadsheet

Using my XLS components I wrote a simple spreadsheet program that could open XLS files, render their contents using most of the styles defined, edit contents and calculate formulas.

  • C#

Ribbon Component

Microsoft Office style Windows Forms ribbon component to be used in applications to enhance the user experience.

  • C#
  • WinForms

XML/XSLT Engine

XML parser as well as an XSLT transform engine in C++ for testing speed and learning the technologies. The parsers worked quite well but weren't used much in actual products.

  • C++

PostgreSQL Membership Component

Since I don't use SQL Server for my own things I wanted to create a provider for using PostgreSQL with the ASP.NET Membership API. Works well and allows all functionality with my favorite database engine.

  • C#
  • ASP.NET
  • PostgreSQL

Code128 Barcode Font+Component

COM component to use hand-made Code128 barcode font and published it for free to use. The component was used for producing invoiced in Finland with a barcode for simple reading.

  • C++

SSH Client

SSH communication library with a terminal emulator. This ran even on a PocketPC device and allowed connecting to servers and doing whatever was necessary there.

  • C#

VNC Client

VNC client to test out the protocol and seeing how it could be made.

  • C#

Multichat

Multi-protocol chat app which could communicate with ICQ, MSN (Messenger), IRC, AOL etc.

  • C#

DICOM Reader

Simple DICOM image reader for my test applications.

  • C#

Gravis Ultrasound Demo

Demo for Gravis Ultrasound to demonstrate their sound card features. The demo was used in trade shows etc.

  • Assembly

Multimedia Systems

I've written several 3D systems for demos and game tests as well as music players for several music formats (MOD, STM, S3M, FAR etc).

  • Assembly
  • C++
  • C#
  • Multimedia

X Server

Simple X11 server for use on Windows platforms with *NIX systems graphical applications. It didn't support many of the extensions required for actually using such systems but was interesting test.

  • C#

Radius Server

Simple Radius server for authentication in a customer project.

  • C++