My programming timeline

I noticed some years ago that whenever I get myself into a new project with new cool clients and collaborators, people ask me "how do you know all this stuff?" quite soon after the start. This usually happens after solving some technical problem over the next short period of time when most people sleep, or after suggesting some process for developing software that others have not thought of yet, or after coming up with yet another patentable solution. I made this page to give some background on just the pure technical aspect of my experience and ongoing pursuits to be an ever better software solutions developer.

This is not that kind of cliché story of a teenage rockstar programmer, rather, a chronological description of finding my technical interests and how they turned into a big part of my way of life over the years. (The other big part is about integrating research methods into almost any activity, which is something to be described on another page some other day.)

So, here goes.

  1. I wrote my first line of code on my friend’s Amiga (which is so old maybe the reader has never heard of, please Google) by copying one single page of game source code from the only Finnish game magazine published at the time. And I made my first bug! Obviously I mixed 0 and O because I had no clue about what I was doing then. Also tried something on my (now totally classic) Commodore 64, without much success. As a kid I didn't think so much about this then.

    Ca. 1990

  2. Studied all the possible programming stuff available in high school. But back then it was just procedural Pascal and Delphi with those classic GOTO commands — which was horrible!

    1995-
    1997

  3. (Finnish military service. Absolutely no progress that year — except increased endurance.)

    1998

  4. First year at University of Oulu, Finland. I had to study a mandatory course on Data Structures with implemetations taught in Java: stacks, queues, heaps, two-way linked lists... oh my. That made programming feel even more horrible!

    1999

  5. Went to Object-Oriented Programming course at the university and was impressed by the teaching assistant’ ability to spot bugs on my pathetic few lines of entry-level Java code from 3 meters away. I swore one day I’d be that good! Got the spark for programming and spend the whole spring practicing it. Finally I understood that with classes and objects it is quite easy to make a software model of pretty much anything! Also, I realized coding those data structures from the previous course manually makes absolutely no sense since all the stacks and queues are already implemented in most libraries of any programming language. I was pretty puzzled about the educational purpose of the Data Structures course.

    2000

  6. Got the first job with utmost interest in becoming a good programmer. Developed a helpdesk and workflow management system as with 2-3 other part-time students. I had the honor of being the first hire of a Sysart Oy, Oulu, Finland. All we got for starters is one A4 page of the product idea with a structure for creating hierarchical customer ID numbers, and then we developed Requeste as we saw fit (Java was still new, so we students were the only ones with any profiency in object-oriented programming... a perfect chance for young guys to take responsibility). Full product launched after 1 calendar year, 2 years before I finished my Master degree. I learned a lot about Java, Servlets, JavaMail API, JavaScript and HTML with CSS using JBuilder and Eclipse. Studied Java design patterns in the evenings for fun. (And come on guys, what could be more fun?) Our team was awarded with a skiing holiday for making a new module that won the first big customer for the product! Amazingly our development effort estimate vs. actual was 0.3% off in a 3-month project, not bad for student level work. Yet more amazingly, the product is still sold today! Sysart is now over 100 developers and has a strong product line for European markets.

    2000-
    2004

  7. As part of the mandatory Master Degree studies, I did the coolest student project for Celesta (part of the huge CCC Group in Finland) and got the first touch on heavy industry as an application domain: with 2 other students we were assigned to write the first-ever mobile Java application in Finland to enable elevator repair staff to handle their work schedule. We had a lot of fun in reducing CPU cost and memory requirements of the program and breaking all the good practices of Model-View-Controller approach that we had just learned about, but it was all for a good cause. I think this was the best exercise I ever got from any school, even though just a technical proof-of-concept.

    2001

  8. Signed up as the first Finnish student to complete a full Ph.D. degree in Kyoto University. As I was already a pro Java developer, so picking up C++ didn't take long (although as a programming language it felt just more inconvenient... as I feel today still). For a while I acted as the main developer for the lab’s medical simulation platform (C++), which used two different haptic devices (Sensable Phantom and Immersion Cyberforce) and had real-time graphics (OpenGL) simulating soft tissue of the human body. The simulators we made were designed for surgeons and medical students who can touch and learn how to perform surgical operations on virtual heart, aorta, prostate, rectum, etc. with different kinds of decease conditions such as cancer. Doing C++ was my first touch on Visual Studio! I had great fun programming vibro-tactile effects and 3D trajectory modifications, record and replay functions, 4D annotations and visualization functions. I had the honor of modifying the system for the first dual-core processors that just became available back then. Of course, since being pretty advanced multi-threaded software, I had to start from the classic Blue Screen of Death to debug every line from the beginning of the Main() function. It took 2 full days to hunt down that sneaky deadlock and write semaphors that actually worked. But it was fun... and now it worked!

    2004-
    2007

  9. As a fresh Ph.D. holder and assistant professor in my alma mater back in Finland, I had to teach exactly that same Data Structures course that I had hated 9 years earlier. But now it was I who could spot those entry-level bugs in students’ code from 3 meters away, hahah! I had learned at least something properly.

    2008

  10. Worked as a scientist at ABB's research organization in Sweden. Got familiar with C# and WPF (which was new and amazing back then). Came up with a few patentable ideas and wrote all the code to demonstrate novel visualization techniques to represent power lines (low and high voltage) for a power grid control system. Pretty exciting stuff to do, but I started to realize that working in big companies is quite different from working as part of smaller organizations. I started dreaming of becoming a freelancer free of all bureaucratic obstacles, repetitive reporting routines, office politics and all that. Maybe one day I could be running a small software firm from Penang, Malaysia... which started to look like our long term destination for family reasons anyway. Just that I had no idea make it happen! What would I sell and who would buy it?

    2009

  11. Had a to learn basics of programming industrial robots on ABB’s Robot Studio and RAPID to better understand some of the target user groups and develop a better robot programming model for Yumi, the world’s first dual-arm assembly robot. Now I could "jog" properly! Jogging is healthy, right?

    2010

  12. Since I career-rocketed at ABB with 4 promotions in less than 4 years, I only got to do management (=office politics), patenting, organizing and running collaboration projects with research labs such as Cambridge University, MIT, HitLab New Zealand, and only some hands-on applied research, but no programming whatsoever anymore, I had no problem leaving an otherwise perfect job and move to Singapore. I realized that if I keep doing what I was doing then, I'd end up losing all the hands-on skills that I had developed over the past 12 years. It would be like losing part of my identity, so I had to change something...

    2011-
    2012

  13. Thought that joining some innovation center in Singapore could be a a good idea. One of the global hot spots in that category. I came up with a pretty cool wearable user interface idea on my seventh work day — actually, there is no interface but the physical world. But unfortunately, didn't get to code anything, since Singapore seemed to be almost the last place on Earth rich enough to hire research engineers. So, still no way back to coding.

    2012

  14. Went rogue for good and started running a startup in Singapore with another crazy Finn. For starters, developed the first ever Kinect-enabled automated posture and mobility assessment system for chiropractors, personal trainers and such professionals into a sellable Beta version. In about three months. Found out that the original prototype was too slow because it employed the page-based document model in WPF for no real reason other than bad coding by the previous CTO, had rather unusable gesture interface and so on. Nothing in the prototype made sense to an experienced programmer. I had to rewrite the whole frontend (WPF) and 3D vector calculations on skeletal tracking (Kinect for Windows SDK) with test datasets, trajectory smoothing algorithms and record & replay functions, and updated the backend as needed (SQL Server database in Azure, WCF, Asp.Net). Quite a deep dive back to real programming! Also, as CTO it was my job to supervise the development of our web portal which in too many cases meant I went in to fix some stupid entry level JavaScript syntax errors (like two nested IF-clauses separated by a semicolon, so in real they run separately instead of being nested, puhhuhhh... I guess some developers don't debug their own programs through after finishing coding it). So, I made the product and we sold it. Unfortunately, our product never made past the piloting phase even after making a fancier and super-slick frontend (HTML5/CSS3/JavaScript) that allowed all the Kinect stuff run inside the web portal's HTML pages.

    2013-
    2014

  15. Since I now had a full year of startup cofounder experience (which means literally doing everything: coding everything, handling outsourcing, managing often non-existing budgets, winning pitch competitions etc.), I thought I'd finally be ready to run a company of my own. As I was already specialized in Kinect applications no better starting point than to start doing the same thing in freelance mode — from Malaysia, exactly as dreamed five years earlier. Dadaa! The first year: really tough. I’m a programmer/inventor/scientist kind of man, not a salesman. The second year: dynamite! Elance.com (now Upwork) enabled me to deliver lots of small but cool pieces of software for event installations (which is the best use of Kinect, still), a patented game content creation platform (Unity3D) and various smaller consultation projects. Making a face-tracking app (OpenCV... until I tried ULSee which is much better), working on the latest 3D sensors (Orbbec with Gestoos using C++), Google Cardboard and 360 cameras (Samsung Gear VR), making a few Azure backend solutions (Asp.Net, MVC, Entity Framework) etc., have helped me to put my programming skills development on an ever-widening vector. And I'm pretty happy with that. Now I can offer quite a unique combination of programming, software design, invention and research capability backed with impeccable strategy that can be put to use for any interesting project on the globe. I've started to label it as CTO-as-a-service. At Your service, maybe?

    2014

Post Scriptum (May 2020): I've been waiting to get my first bug fix request from some old client. Still waiting. Pretty good 6-year streak! It's not because I don't make any, it's because they get killed very early in the process. Always.

© I2 Network LLC. All rights reserved.

Created by MGWalton

Powered by coconuts