The story starts back in 1984 when, after getting a used Vic 20 as a gift from my cousin, I “coded” my first game by painstaking copying the whole source from a physical book into the florescent blue basic screen on the old, tube tv. Not a small feat, considering I was 5 and yet not able to read or write any human language. I think first words a I learned to write were “goto” and “poke”, both of which represent foregone days in software engineering: the young whippersnappers working with their latest front-end frameworks cannot know the (quilty) pleasure of total control over memory and execution .. (not that my five year old brain had any idea what ‘poke’ actually did, only later I would learn how it allows direct manipulation of a real, physical memory address, something completely unthinkable these days.) As Uncle Bob nicely summarized in the fantastic Clean Architecture book: the three main (and only) programming paradigms we have today, imperative, functional and object oriented, work by limiting the programmer’s capabilities, not providing something new. And back in Commodore Basic we had it all, baby!
Can you have an articles about the 80’s without a He-Man meme,
he gently let free to fly
the question, rhetorical and sly
with a wink and tingle in the eye
with great expectations, justly high
for not just a chuckle or a passing smile
but perhaps, from the back, from right there!
a proper giggle, or even two!
yes, yes, from You!
unprepared for the silence deafening
where all laughter, smirth and joy
oh so promptly…die
Well the answer is NO! No, you cannot!
(Of course we only had like 5KB of memory, 1.5kb of which was video, so manual poking of it was still somewhat feasible, and there were no multitasking or anything such to worry about.)
Back then you could buy games as a book that included the whole source code you had to then manually input.
pair coding with my father while rest of the dev team is starting to get restless.
After that I moved to “national computer of Finland”, Commodore 64 and after a while even got a floppy drive! And I mean the big, 5¼-inch ones that actually were “floppy” unlike the more recent and iconic 3½-inch ones which I moved to when upgrading from C64 to Amiga 500, the other all-time classic.
In the background we can see the legendary Amiga 500. Rest of the picture leaves me a bit confounded: either I’m playing roulette with myself, or I’m constructing some kind of doomsday device, both options seem equally likely as I had developed a bit of a gambling problem at the tender age of 8 when I was regularly taking a bus to the city center for my guitar lessons and quickly realized that the bus ticket money could be much more efficiently invested in one of the many slot machines that are a stable of all finnish shops and supermarkets, (courtesy to our government and its ‘benevolent monopoly’ on it) and I soon became a sort of mascot to the pensioneers crowding the machines who taught me all their secret OCD rituals of tapping and poking the machines in hope of better outcomes, a topic I still find would warrant a systematic study. I even had a pen and a notebook at some point to jot down the cards dealt in the slot poker machines in effort to find a pattern to exploit but alas, in all too young age I learned the bitter lesson that you just can’t beat the house, and focused my attention elsewhere. But it did give me a nice, empirical introduction to probabilities and even basic statistics. Oh, and what made the whole racket possible was that it was a rare bus-driver that would not let in a little guitarist who had ‘lost his ticket money’ (I mean, I wasn’t lying, I HAD just literally lost it … in roulette. ). Or if not the bus-driver then there always was that benevolent old granma at back of the bus who could not (or would refuse to) see the soul of a hardened gambling-man behind the glistening blue eyes of the little mariach…
‘ - he doesn’t even have blue eyes! this whole story is bullsh..
- Shhh!!! let him validate himself: the less you argue, the sooner its all over! ’
ah hmm, tough crowd tonight, let us move to the next decade
In the early 90’s I got my first PC, a stunning(?) 25Mhz 486 with 4 MB of memory and something completely new to me, a 100 MB hard-drive! For the first time the computer could actually store something between reboots. But boy did we reboot, partly because of this famous brainfart:
640k config sys autoexec bat heman with goto poke vs solid prin skeletor
Back then, like every you boy, I wanted to be a game programmer! However, in the time before the Internet, figuring how to do that was not clear at all. I heard from the grapewine that real game programmers use C and “use matrices to make the graphics” so I tortured my 12 year old brain by going through dusty matrix algebra books and trying to figure out what the hell these determinant calculations have to do with 3D graphics, and how do these math proofs translate into C code. I believe after a lot of struggle I was able to draw basic 2d shapes and even have some idea of the frame buffers and such which back then everybody had to handle manually. One regret I have is that I never found any mentors or links to real demo-scene back then: the finnish demoscene legends are some some of the all time greats in whole computer science field, in my internal estimations right there next to likes of Djikstra, von Neumann and even Turing himself .. I still have a huge respect for the work groups like Future Crew did back then (many of these gurus then later moved into game industry and are behind some of the most iconic finnish game companies such as Remedy) and the bitshifting trickery they pulled of to squueze every last inch of performance from these devices nothing sort of awe-inspiring.
Around these times I also got online for the first time. And I don’t mean online as in these days getting into Internet which back then was still very niche, but online as joining the now extinct BBS (Bulleting board system) culture: its been now around 30 years since I came up with my first digital content community and or dataspace in the form of my BBS system (aptly named the Chronosynclastic Spleen) that I hosted on my family land phoneline to the great delight of the rest of the family. After getting tired of the screehing modem sounds of strangers eagerly seeking entrance to the Spleen, they finally caved in and got me a personal line to play with my computer things.
X came up with his fancypancy www offering that in the end won over that battle of the Titans even though web was (and still is!) significantly less chronosynclastic.
Ah well, I’ll not such small setbacks keep me down. ‘Adapt, React, Readapt, apt”
Obstacle is the way, so I embraced the whole Internet wave and soon found myself as the owner and head implementor of a quite sizable MUD game with thousands of players as well as a motley crue of developers and content creators from all around the globe that I somehow tried to organize while also handling my dozen or so guitar students and even going to school from time to time. In the 90’s, long before World of Warcraft or even everquest or Ultima Online, MUDs were the place to go if you wanted to do online gaming.
To fund the server (that was running somewhere in US, never even figured what state, as some local was nice enough to be the banker..?) we did some mid 90’s version of NFT and sold a gear customization option that proved surprisingly effective even when it did not provide any functional benefit (no pay to win here!) We even had to stop the service at some point as we had enough of a bank and did not really want to get money too involved into our second home and haven from reality were MTV was becoming a reality tv channel and grunge was replaced by numetal. During the years we celebrated real-life marriages and mourned those who passed away.
This was before any sort of virtualizations or such modern gimmicks: we just had a user account in a linux box (shared with a couple of other muds) and had test server running in one port, and the production in another. prod meant copying files and running maek. There was VCS installed on the system but nobody ever used as it was just as awful as everyone (who is still alive) says. Backups were made by some cron shell script that just tarzipped everything into ever growing pile of backups that someone manually pruned from time to time. As most of the group had no background or expertise in software development(my main collaborator was a young lawyer who had just passed his BAR exam. Well, at least 24 old sounds young to me now, back then my 16 old self I thought he was borderline middleaged, what with having a wife and an actual job and everything), the source code of 200k lines of C was somethign to behold, and debugging the thing was quite the challenge. When the game crashed it would do the famous ‘core dump’ and then we would go dig into it with gdb and the contained stack trace to see what might have gone wrong, which was sometimes easy, sometimes we had bugs that took months to find.
kalevala area, ugric tree, sibelius .. “forcing me to read the epic also in English which proved to be more comprehensible than the somewhat archaic finnish version. Amazingly, even though I’ve not been involved in at least 2 decades, the game is still up and running and is celebrating its 30 years online anniversary next year.
Debugging back then worked so that when the game crashed for whatever reason it would produce the infamous “core dump” and then we would use to gdp to open it and follow the stack-trace just before things went down, trying to figure out what might have been the problem. Sometimes it was trivial to see, some bugs we really hard to catch as we had no way of trying to replicate anything
I also wanted to develop the MUD locally which meant installing a linux on whatever Pentium I was using at the time. Back in 96 installing Linux was bit of a different sort of ordeal than these days
a slackware 2.0. The installation started with a screen asking “what harddrive sector do you wish to start the installation: “ with empty text prompt to answer. I think it took me half a year just to get X-windows running succesfully.
(pic not mine but found in a random reddit thread https://www.reddit.com/r/linux/comments/96qvzv/found_oldies_that_make_me_smile_now_one_book_cds/)
Year 2k panic : get some funny photo
And I also started my studies at the University of Helsinki where I’m still not quite sure how I ended up as I was sort of planning to have a sabbatical when receiving an admission letter to study chemistry, math or CS, mostly based on the grade I got, surprisingly, from my finnish language exam at the bacce.. (that somehow was given extra weight, I suppose they wanted more lingual and less mathematic students included), where I wrote a sort of Levi-Strauss and Tarasti(link to Myth and Music: A Semiotic Approach to the Aesthetics of Myth in Music, Especially That of Wagner, Sibelius and Stravinsky) inspired semiolotical, comparative analysis on the similarities and differences between Tolkien’s and Wagner’s Rings, especially contrast and comparison to the Kalevala, Icelandic Eddas specifically and the germanic mythos in general, an essee which received a short and almost angry review: “teenagers are not supposed to write this sort of stuff! but i have to give it a laudatur, as soon as ive fact checked all these claims are correct”, which they of course were, I know my Nibelungen Lied, thank you very much!
So after a bit of .. I thought going to Helsinki might be sort of exciting, and selecting computer science out of the three options was a no-brainer: I’m not much of a chemist (apart from some, perfectly natural, pyromanic tendencies link), and pure math I found to be bit too of…
(No, I love their smell, the scent of sickly self-deprecation, mindfulness based self exploitation)
The early 2000’s were a crazy time in Finland, what with the combination of Nokia’s success and global IT boom. and with my unique skillset in server programming I instantly found myself hired as a senior programmer making backends for all kinds of SMS services. And WAP services… who still remembers WAP!?
While we were playing around early version of VMWare, virtualization was still in its infancy and I ended up setting up the various MySql, Postgresql, LDAP Mongo/coach db instances manually on real computes which were usually screaming loudly in the full-size rack computer 2 meters behind my desk. Also, writing back-end software was a slightly different process than now-a-days when you have Node.js, FastAPI/Flask/Django, dot.net and any other number of technologies with guides and youtube tutorial playlists. Back then I had my trusty Emacs, copy of K&R and the “Stevens Stack” that became my bible for few years [pic].
I ended up programming everything from scratch: from memory recycling to basic data structures like linked lists and hash tables and from multi-processing, threads and non-blocking IO to the IPC and networking code. It was a huge task but the end result was lightning fast and server millions(?) of customers around Europe. I also became intimitely familiar with TCP/UDP/IP and could diagnoze network problems just by glancing the hexa presentation of a TCP packet I was snooping, including one somewhat legendary episode where I fixed a critical problem with customer connectivity by spotting a one-bit (ECN) difference in the TCP header between working and rejected network connections, and deducing from that a detailed plan for the baffled customer on how to reconfigure their linux firewall.
I also had to deploy the code to various more industrial platforms such as Solaris, HP-UX which sometimes involved exercies such as rewriting some of the non-existing POSIX networking pieces. And I don’t even want to go too deep into the 600+ page API doc for SMSC server I needed integrate with, or some of the… happy accidents that entailed. Kudos to the Kannel Group for their work that helped as a reference architecture.
back then I did not use a Ci/cd pipeline as it would not be invented for over a decade. No, I was the damn full pipeline.
whats app in 2000
Malibu Telecom Strike Team at 3GSM conference back in 2001 at Cannes, France. Those were the days. After this picture was taken, I caroused through number of private yachts and at least one samba carneval before ending up at a Motorola private party (rest of the team had tickets to Nokia party which I missed due to sleeping long after previous night’s antics) where I got to experience the musical performance of none other than Samantha Fox herself, which I enjoyed in the company of senior executives of a central bank of here-not-to-be-named middle-eastern country that I somehow had hooked up with. Afterwards, I took a wrong turn when wandering back to the hotel and was first beaten and then strangled unconscious as I was unlucky to come back to my senses while they were still cleaning me of anythingvaluable. Just a normal day in the hard-knock life of a C programmer.
I adore memes and feel privileged to have been able to observe the birth and growth of this new artform, all the way from the early beginnings while lurking in the photoshoop threads in Something Awful at the turn of the millenium, before it ‘bloomed’ into the infamous four-clover site.
I started my 12 year decan at the Helsinki Institute for Information Technology HIIT where I focused mainly on affective and psychological computing but also dabbled in other topics such as information retrieval systems … which resulted in forty or so scientific publication as well as a boatload of demos, prototypes and wild experiments. I also provided an opportunity to collaborate with many amazing locations around europe from Barcelona to Padua and Berlin to x. I even got to participate twice in the Enterface 1 month long hackathlon workshops, once in Genoa (link to papers for both), ping people and then in Amsterdam.
At this point I started my 12 year period in HIIT (link) as well as a “decade of Java”
My finest JAva creation was the signal-fusion and multimedia(!) orchestration platform EmoEngine that was used both in all kinds of real-time demos and prototypes, as well as laboratory-grade psychophysiological experiments demanding millisecond precise accuracies.
I integrate wide variety of sensors in the EmoEngine, but the most trusty workhorse was definitely the legendary Varioport device that was only meant for post-hoc analyses and only supported storing data into the onboard memory-card for later analysis. Thus I had to reverse engineer the crazy ascii-hex-binary protocol it was using to communicate with the proprietary (MS-DOS!) monitoring software by snooping the serial-port connection, figuring out what the bit/hex mess meant, and then writing my own SDK around it to support real-time applications.
In the end I integrated wide number of devices into the EmoEngine, best perhaps illustrated by a project where I set up a whole cloud based, mobile biosignal sonification system using Nokia Maemo phones that ran Linux, and what was the cloud service back then before cloud was even a thing. It worked smoothly, and I could in real-time choose to, for example, sonify in different ways ranging from simple beeps to synthetized music, the heart-rate or any other physiological signal of my colleague(s) that might be located at another continent. This was very revolutionary back in 2009 it was made.
I even got to work with Turbo Pascal as I was sort of rented to the school of economics to implement a experiment platform a psychophysiological study using an open source game, and only after arriving at the location the first day I realized the game was written in Pascal… But here is another lesson for you young whippersnappers: those people who keep bragging how many programming languages they know are like novice guitarists who try to memorize a book with “a thousand chords” while a professional musician who knows the fundamentals and the theory can not just construct any chord on demand but even select the proper inversion for the context in real-time. Similarly, once you get familiar with the fundamental programming paradigm it does not so matter what language your are using: the loops, functions and control-statements (if-else) are nothing but syntactical pecularity. In the end, it took me two hours to become a “professional Pascal developer” (as I was literally developing in Pascal professionally for the next couple of weeks) and the episode ended in successful scientific study with high impact publications.
This was also when I started my ongoing and probably life-long focus on time-series and their analysis using all kinds of methods and tools, from configuring the polynomial contrasts and proper auto-regressive covariance matrices for Linear Mixed Models in SPSS (links to my own work1, to developing novel spline-regression clustering algorithms in R (that still, after a decade are beyond state-of-the-art, i should someday get around publishing them), to of course using all the ‘basic’ methods of libraries like Caret (both in R and Python) and scikit-learn, using countless time-series feature-extraction libraries (current favourite being pycatch22), to techniques like functional analysis and dynamic time warping, Gaussian proceseses and hidden markov models, anomaly detection with tools such as Facebook Prophet, to running ARIMA models straight in the database, both in Timescaledb and InfluxDB (via Flux), to using GRU/LSTM RNNs in both Tensorflow/keras and Pytorch, As well as all kinds of more far-out time-series setups such as 16 dimensional video streams generated from spectro- and periodograms of voltage signals and combined at the final fully connected layer to other usual (tabular) time-series features like std, entropy and fractal-dimension and such. I’ve also played with all kinds of blind source separation algorithms from the classic ICA in EEGLab to ideas with CCA (doing wavelet magic ON the canonical components) and SSA (link the kaggle) and now curiously looking into the recent (stunning) advanced in non-linear ICA that might have profound implications for causal modeling in general. and now digging deep in the latest transformer models (ChatGPT etc) from Hugginface and OpenAI, while also learning to manually handle the lowest level of processing with custom FIR/IR filters, (short-time)FFT, Hilbert-transformers and finally as the crown-jewel, developing custom, complex Morlet-wavelet based methodologies for real-time phase extraction for brain stimulation synchronization that led into multiple successful patents.
SOMEWHERE the ahem… yes, I think you go the idea, but anyways
Step aside Angry birds and Clash of Clans, this is what the mobile-gaming consumers REALLY want!
136 courses.. and thats only udemy. then ive subscriptions to cloudacademy, kodekloud, datacamp, code with mosh, always working on at least one Udacity Nanodegree and Coursera Specialization, 100+ saved youtube playlists, Pactk subscription, hundreds of gigabytes of articles, books, guides and tutorial in all possible formats, O’Reilly katakota playergrounds… After the new year i made a bit of an inventory and had over 600 items on the list, now it has gone over 800. Back in the 80’s and 90’s the problem was lack of material, while nowadays we have the opposite problem: endless flood of information as well as exciting new technologies to learn.
To make sense of all this complexity I’ve crreated , designed an upgraded version of my personal time-management and productivity system Monk Mode! Without further ado I introduce you the ultimate pinnacle of personal time-management and productivity: Monk Mode 2.0 - The Effective Anchorite.
After waking up at 5 am and going through the routine of yoga, meditation and Win Hoff exercises, you can sit down in front of tje monitor at 7 am and start a 14 hour uninterupted, concentrated burst of pure productivity in optimized flow state before preparing your one meal of the day, following the ultra-ethical and x fenno-funganic diet* after which you’ll recline in the optimized and patent pending recharging station, to recap the days lessons as well as draft plans for the next day before getting precisely calculated amount of deep, shallow and REM sleep to optimize the memory retention and to wake up to the next day where you’ll proceed to perform the precisely same, optimized routine is repeated, and repeated, 365 days of the year!
As a special bonus for early bird customers I’ll include my in-depth guide on how to implement the whole system in Emacs org-mode so you don’t have to use mouse or any kind of graphical user interface ever again!
fenno-funganic diet consists solely of fungi that is native to fenno-scandinavia.
( a bed which detects your REM state and induces lucid dreaming where you can work and continue being hyper-productive even during deep sleep!)
uhm.. My apologies, I do believe I did go a bit on the tangent there, but let us continue to the next decade!
Ubiquitous Grad students
Started working at Tallinn University as a Senior Research Fellow (after giving my lectio), one-half at the HCI and and another half at the Baltic-Film and Media school as the first member of Pia Tikka’s groundbreaking Enactive Virtuality group.
The ideas on symbiotic creativity were way ahead of their time and scarily relevant now with the current advances of large language models and other AI systems.
f In the AI/ML course I split the students into dozen or so groups of 5-6 members who then could select a kaggle competition of their liking and try to compete as well as they could. Guiding and helping so many groups proofed to be quite a lot of work, and I have to extend huge thanks to my then Master’s student X who volunteered to act as a TA and even brought his friend from another (technical) university along, without you guys I could not have made it! In the end every group maanged to come up with some kind of solution to their chosen competition which they then presented to rest of the class.
some yada yada here whys is it not separating
In the affective and physiological computing course I split the students again into small groups and gave them total freedom to do something biocybernetic while also providing all possible hardware resources like Muse headbands and Arduino and rapsberry pi based sensors, as well as easy to use software tools like Max MSP which I had integrated into the Unity 3D engine. In the end the students produces fascinating results in just matter of weeks. One group that was led by a full-time elementary school teach was able to produce a working, biofeedback VR public speaking training system where the system showed changing number of students in the virtual auditorium based on the user’s affective state. The videos were recorded with the help of the elementary school students.
We had similar successes in our annual week long workshops of Enactive Cinema that we, led by my ex-boss and good friend, movie director and research professor Pia Tikka, ran at the design school of Politecnico di Milan (pics and examples),
enactive cinema at design school of politechnico di milano
During this time I was also happy to collaborate with many musicians, music theorists?, modern composers, dancers and dance choreographers, and even do a bit of teaching at the Academy of Music, which was thrilling as I’ve have a bit of a background (link chac) myself. Special thanks to the Arnold Schönberg society that invited me, twice, to give a keynote at the Pärnu new music festival around the topic of symbiotic creativity (or specifically symbiotic composing given the context), which led to all kinds of exciting art-science discussions and collaborations. Greatest of these, without doubt, was when I was able to tick one big thing out of my bucket list and act as a sort of Opera producer in our extremely experimental Trisolde production which we titled ‘The Neuroadaptive Gesamntkunst werk… “ perhaps itmo here?
vladimirs courses
so let this be a lesson to alll you young whippersnappers and assistant professors: give your students a feeling of agency and freedom to be creative, and rest will follow!