Tuesday, 09-Aug-16 00:36

One of the reasons that I like role-playing games - even when played on the computer - is that they feel creative. Even when the game has three dialogue options that all lead to the same response, it lets me choose and create my own story, guaranteed to be different from everyone else's stories.

And not only that; it happens on games like Clash of Clans, where epic stories of combat are told every day, even though the sandbox is small compared to story-oriented games. But it's still me and my story and what happened to my village.

Looking back on the TV series I have enjoyed the most, I can always relate them to a story: Babylon 5 we watched on smuggled tapes from the USA and accidentally started a huge SciFi-club on the side. Deep Space Nine we watched with the wife when she was pregnant with our first child. Old Finnish comedy was the talk of the school yard back when we only had two TV channels in the entire country. I don't remember much about the shows, but I do remember the emotions of sharing these stories with others, and the story of watching something is, to me, more important than the story itself. The metastory of entertainment, if you will.

It even touches my work - the best jobs I've ever had were those where we were creating something together. It does not matter so much what it was, but building it was an experience that created a powerful story.

So one thing I'm always trying to do when confronted with new technology or opportunity is - what is the story that this is trying to convey? Can we help you tell more stories? Considering the things being hyped right now - VR _definitely_ lets you tell stories and once tools mature, we'll see an explosion of stories in that area. The AIs will write their own stories, and they will eventually be more beautiful and incomprehensible than anything humans have ever written. Internet of Things... Not sure. I don't care what my fridge tells my watch. It's not an interesting story. It's not even a good joke: "Hey, did you hear what the chair said to the table? { "position": "below", "color": "beige", "speed": 0.002 }."

One of the things that drew me to NFC was its storytelling ability - tagging any object would let people read its story. Rearranging things might change its story. Much of the same idea was continued at Thinglink, which has grown nicely to be a comprehensive VR/360/video/image storytelling platform, used by millions of students, teachers, publishers and advertisers around the world. I'm still having trouble grasping what are the stories of the IoT-connected world, and why should I really care. (Caveat: I'm expecting great things out of Thington, if they don't lose their way :-). I'm also enjoying Pasi Hurri's stories about his IoT connected sauna - though it's definitely on the geekier side of things. And yes, I know, there's great promise in reducing cost in industrial applications yadda yadda.)

Of course, this could just be my inability to understand the greatness that is IoT and that it's supposed to be invisible and Things That Just Work In The Background And Make My Life Easier. But until then it's just an Expensive Thing That Gets Broken In Mysterious Ways.

Sunday, 07-Aug-16 10:32
Timey-wimey thoughts

About twelve years ago I was watching my later Nokia colleague Chris Heathcote talk at O’Reilly Emerging Technology conference on how in ten years, there will be “no concept of lost”. This was a couple of years after US let civilians access very accurate GPS, but a couple of years before the GPS receivers became so cheap that they could be embedded in the phone.

Another thing that we didn’t have back then were global 3G networks and the concept of network time. Phones ran on whatever time you gave them, and even though NTP and the lot were keeping accurate time on the internet, the telecom industry was a bit behind the times on that.

But now we have both - almost every smartphone has a GPS chip and very accurate time information. We’re rooted very firmly in both time and place - sort of a reverse TARDIS, which is neither here or now. We’re no longer “lost”, unless it is our intent or we’re very unlucky. Location-based gaming (Pokemon Go) is something that could not have existed before this, and there’s now a lot of smart people figuring out the next possible avenues that is enabled by constraining us even tighter within a particular box of spacetime continuum. For example, Indoor Atlas locates us within 3 metres inside a building by mapping the magnetic fields. (Funnily enough, magnetic location mapping wasn’t in Chris’ original slides, which otherwise were pretty accurate.)

So yeah, it’s now possible to know well where you are - but it’s also easier than ever to know where everyone else is. There’s a gazillion of applications dedicated to making people meet in places, from the fairly innocuous to very creepy. This is a funny reversal: one thing that cell phones did at the beginning of the century was to liberate us from place and time.

The liberation is now pretty much complete: we can choose to be in different places, but still participate in the same event at the same time through tools like Snapchat and WhatsApp and Periscope; or we can participate in the same location but at different times (Geocaching, Pokemon Go), or we can be completely free of time and place (Youtube, Slideshare), or we can meet in the same place at the same time (Meetup, Glympse).

So I have to ask - is this it? Are all the niches of existence now covered? Is there room for apps somewhere else in the spacetime? Is there something that’s being ignored?

Am I being too human-centric here? What apps will the AIs write for themselves and for us? :-D

Saturday, 16-Apr-16 14:55

Today my 5-year old daughter asked me, after a visit to the nearby swimming hall, why the showers stop working while people are still in them and suggested that we should build showers that work only when someone is under them. It would save water too.

So I asked her, how she would build one. "We could put in pressure plates", she exclaimed! Walking home, we found other solutions too, including some scary ones (cameras in the shower).

And this is why I encourage her to play games (like Minecraft). Not because it improves problem-solving skills, but because complex games teach that the world is malleable. If you know the rules, you can play outside them. You don't have to just accepts things as they are: you can always go fix things. Games throw obstacles in your path, whereas the life of a sheltered western kid in a modern welfare society is pretty much a level grass field. Games reward creative solutions, and failing is cheap - you can go try things as many times as you like. Play is practice.

The difficulty, as always, is at the border of virtual and real: When to move the theory into practice? When to stop brainstorming and start working? When do you play, and when do you go all serious? How do you transform the lessons from play into the real world, and how do you turn your real-life experiences into play? We need to cross the grey area between these two all the time: The playtime to dip into our creativity, and the serious time to ship stuff. I believe that a lot of conflict in project work comes from a common lack of understanding where this border lies, and it seems to be a common source of conflict between parents and children as well.

But while I'm trying to grasp this stuff, I'm going to join my kids in their Minecraft world. If they don't kill me outright, I might learn something new.

Sunday, 10-Apr-16 21:23
Why are you ruining our dinner time, evolution?

Watching my kids eat - or to be precise, poke at the food very suspiciously and declaring that it is a) awful, b) horrible and c) that they never want this and why we can't eat normal food - it strikes me interesting how the older we get, the more varied our taste becomes. I just accidentally spread some adult toothpaste on my kids toothbrushes, and even when I rinsed them thoroughly, they still complained that washing teeth burns and hurts.

So perhaps it was evolutionary beneficial that kids are extremely picky and eat only "safe" foods, whereas older people who have already had their kids can go around, eat whatever and don't taste anything. Because a dead kid isn't good for tribe survival, but an old person who eats random stuff is a nice signal to the rest of the tribe what can be eaten and what not.

Of course, some googling reveals - now that I actually had the time to do so - that there's some science around this topic.

So yay, science of the everyday life! Now eat the f*ing fish.

Sunday, 14-Feb-16 21:31
Vagrant To Go

Quite a few people use Vagrant as their development environment. It provides a nice way to basically package all your dependencies in a neat fashion so that you don’t have to worry too much about installing binaries and versions - no longer do you need to worry about virtualenvs or rvms or how to install a particular database when some of the devs have OSX, others use Linux and some enjoy some brand of Windows. Just say "git clone", "vagrant up" and go. Your editor lives on your regular desktop, and everything else happens inside the Vagrant box.

It’s all good, except for the minor problem known as "filesystem notification events don’t propagate into the Vagrant box" also known as "inotify doesn't work on Linux guest". That means that when you change a file on your host machine, the automatics on the box side don't notice it and don't start a recompile - known as a hot reload - forcing you to recompile manually. There are a couple of ways around this, mostly either by polling actively (which is quite CPU-intensive), or in case of scripting languages like Python, automatically checking the modification dates on each reload. You can also twiddle with vagrant triggers.

However, go (or golang for SEO purposes) is a compiled language, so while there are many hot reload packages, they never see any changes and hence are useless. So imagine my joy when I stumbled upon the vagrant-notify-forwarder Vagrant plugin, which almost automates everything. It installs a daemon on the host side and forwards the filesystem events to the box. You can easily install it with

$ vagrant plugin install vagrant-notify-forwarder
$ vagrant reload

However, it only sends ATTRIB changes to the box. And most golang hot reloaders only listen to changes to the actual file content. But the very responsive Ivan Pusic added a nice patch to his excellent rerun utility and suddenly the world works again. Just add the "--attrib" -flag to rerun, doing something like this:

$ vagrant ssh
% go get github.com/ivpusic/rerun
% cd $GOPATH/src/myproject
% rerun --attrib -s *.go


Thursday, 03-Dec-15 19:58
Simple hotkey locking of your Mac

At work, I quite often listen to music on Spotify or iTunes (because of reasons). However, when you have to leave the laptop for just a bit, I need to both stop the music and lock the computer, and it's a bit inconvenient. So I needed a way to make the computer go quiet and lock itself up nicely.

So I wrote this piece of AppleScript, and bound it to Cmd-L using Quicksilver (yes, I know Alfred folks can do this too, but I'm a QS user). Drop it in ~/Library/Scripts/ and bind a trigger key to it in QuickSilve (or whichever tool you prefer). You will need to also set up Keychain Access so that it has a menu item for locking the screen. This works with OSX 10.10 (Yosemite) at least.

#  Tell our noisy programs to shut up
tell application "Spotify"
end tell

tell application "iTunes"
end tell

#  Lock up the screen without going to sleep.  Needs that Keychain Access
#  is set up properly.
tell application "System Events" to tell process "SystemUIServer" to click (first menu item of menu 1 of ((click (first menu bar item whose description is "Keychain menu extra")) of menu bar 1) whose title is "Lock Screen")

Private comments? Drop me an email. Or complain in a nearby pub - that'll help.

More info...  
"Main" last changed on 10-Aug-2015 21:44:03 EEST by JanneJalkanen.

My latest photos