Archive for the ‘Misc.’ Category


Klattersynth TTS for Unity

Introducing Klattersynth TTS for Unity, now available in the Unity Asset Store.

It’s a really small and fully embedded speech synthesizer (a text-to-speech engine).

In contrast to some other speech assets, it does not need a network connection for generating speech using a 3rd party website, and it also does not use the speech synthesizer embedded in the Operating System (which differs based on what OS and what OS version you’re using).

Instead it’s fully embedded and runs probably on all platforms targeted by the Unity engine. It can generate and stream the speech real-time or it can pre-generate & cache clips and play them later. The audio clips are also played using a normal Unity AudioSource component, so they’ll also work with the 3D spatialization and reverb zones. Klattersynth TTS is contained in a ~100 KB “cross-platform” DLL file for Unity, which zip-compresses down to less than 30 KB!

You can try a WebGL demo build yourself in Klattersynth TTS website, or view showcase videos in YouTube.



Internet Reachability Verifier for Unity

Introducing my third little thing for the Unity Asset Store:

Internet Reachability Verifier for Unity

It’s a simple thing, but there wasn’t other assets available doing exactly this. Since I needed to build something like this, I figured out I’ll polish it a bit and put to asset store as well.

So what does it do, since Unity API already has Application.internetReachability?

The Application.internetReachability has a bit misleading name – it actually tells if it is technically possible for you to try to use the network. So, on a desktop machine it will always tell you that you can. On a mobile device it’s nice for checking if you’re really offline, or if you can try to make a connection (and if it is going to use WiFi or carrier data).

However, with mobile devices, quite often you need to go through a login web page before the internet truly works. In such wireless network, any WWW request will actually give you the login page instead of the data you actually wanted. This is the situation why you want to use Internet Reachability Verifier – read more details from its own web page.

Here are also some other assets to check out:



Strobotnik is name of my new company, found in January 2013.

There’s really no projects yet to speak about, so the only thing you can check out for now is the WWW page, complete with a logo effect, and perhaps visit or follow the related social media pages.


Twitter: @Strobotnik

Facebook: Strobotnik page

Google+: +Strobotnik (Update 2019: Google+ is being closed, deleted link)


Moving Forward

This spring was different time for me. For years my B.Sc. degree has been missing just a few tiny bits. For example, I needed just a few course credits to fill up a second minor subject, which is “Software Business” offered in collaboration by local universities. This spring I took a mini course and wrote one report about things I found interesting in last GDC, which were enough to get the few missing points. Now, after 15 years, I unlocked the B.Sc. achievement.

I don’t actually think there will be much difference from having a degree or not. It has just been sort of nagging thing because it was just almost there, so maybe it was sort of mentally easier to get done with that than keep it lingering forever. So I don’t have any current plans to continue towards M.Sc., even if I’m actually already halfway there (basically only thesis missing and a few other bits).

But that’s not all of things making this spring different for me. I decided it was time for me to leave Secret Exit, the company I co-founded over 5 years ago. I’m planning to continue as an “indie developer”, but I don’t really have anything announce-worthy to say about that yet.

I have actually already mentioned about these things in Twitter and Google+ already a while ago, so this post is sort of old news, but I figured I could write an update here as well.


Join Google+ (Update: Do Not)

I’ve always thought that updating stuff to my homepage/blog feels a bit too much hassle, so I don’t want to do that very often. Strangely, even switching away from home-made kludges to WordPress didn’t help the feeling in a dramatic way, although it surely helped a little bit.

That’s why this page has always been subject to relatively long pauses without updates, even if I have felt like I’d like to share something. Thinking about alternative solutions, the social media websites, I’ve had a Facebook and Twitter account for quite a while now. I have always felt that Facebook suits best for personal friends and not for public stuff. Twitter is ok for public stuff, but the 140 char limit means that you’ll share only some tiny things, like a little anecdote or just a link to somewhere.

When Google+ came around, I started using it as well. By nature it is like a combination of good things from both Facebook and Twitter, and seems to fit my usage patterns quite well. It allows really easily to select per-post who I’m sharing it with. It doesn’t limit me to short posts when I want to say a little more. Each post is automatically a discussion thread, and since it isn’t hosted by me, I have less to worry about approving posts / preventing spam entries.

So I realized I tend to write there a bit more often – the smaller things, findings and even some more light-hearted observations go there. So, if you want to follow smaller updates from me, join Google+ if you aren’t yet there and add me to your circles. Today, I was originally going to write about my latest findings regarding prototyping with Processing (again), but decided I probably do that in my Google+ stream later and write this endorsement post here instead! ;-D

Update, early 2019:
Google+ is shutting down soon. I find it a bit unfortunate, as back in 2011 I felt it was better suited for public communication than some other alternatives. Also, as a generic principle, when some site or service is altered or discontinued, a graceful way would be to keep links working and data still readable. However, like almost always with site changes in the internet, also in this case the content is simply going to be deleted. I guess the end result will be that many links will cease to be working, which used to point to content in Google+.


Various ways to backup

Over the years I have been using several kinds of solutions to backup stuff. Here’s a description of the ones I can remember. Many of them focus on being low-cost, simple and straightforward, but are far from a perfect solution in many other ways.



Buggy software is cheap enough

If software would be made bug-free, that would force prices to be so high that nobody could buy them. How so?

Well, let’s think about what it means to build bug-free software. There actually exists some software, which is built with goal of “zero-defects”. By that, I’m not referring to the constant hype from latest agile method cult who may have some extravagant claims. I mean software where it’s of utmost importance to really have no bugs, no matter the costs. A case where a single bug may mean loss of lives or failure of the whole project. This kind of software is built for space missions, nuclear facilities, and so on. And such a policy on quality is inherently very very expensive.

Imagine if Windows, for example, would have been built with such policy. It’s a really complex and huge piece of software compared to ones normally built with zero-defect policy. But, given the option, would you pay $19,900 of your operating system, if it would never crash? It’s quite a no-brainer that “everybody” would rather pick the same software for $199 and just put up with the few problems they encounter. (The price difference was picked by Stetson-Harrison method. It’s a guess to illustrate the point. The difference could be actually lot worse for niche market software which isn’t aimed for mass market.)


Back from Japan

Fire station

I was away for about 2.5 weeks to visit Japan, more exactly Kyoto and Tokyo. The trip was excellent, and in retrospect it was clearly a good idea to visit both cities. While Kyoto is a modern city, it still has a bit more traditional feel to things. For example, the local laws forbid building tall skyscrapers, so there aren’t much taller buildings than we have in Helsinki.

Tokyo in other hand is very modern city with lots of skyscrapers. When going to see the city view from top of Mori building in Roppongi hills, you can see the city expands in every direction to the horizon as far as you can see. There is also extremely well developed public transportation, just check the Tokyo subway map (PDF). The public transportation in Helsinki is also quite good, but Helsinki is so tiny compared to a big metropolitan city so that our subway is tiny as well – just compare the above one to the current Helsinki metro map. ^_^

Small garbagetruck

Interestingly when going to USA it feels that everything is bigger. When going to Japan, it feels the opposite. Maybe that’s partly because there is a whole different class of small cars which are narrower than we’re used to. I think the average width of streets is a bit less as well. There are also typical big western cars, so there’s just more variety of different sized cars. There’s even mini garbage trucks as you can see. However, not everything is small; I think in Japan they just tend to make things small by default, but aren’t afraid of making things big when there’s a reason to do so.

Also some things seemed to be done in an opposite way of what we’ve used to. Not just the left-hand driving and walking, but cars are also almost always parked backing to parking spot so that it’s slower to park car but easy to leave. And at least in Kyoto the buses worked so that you go in from a single back door and pay when you exit through the front door. Curiously in Japanese language the verb is also put last in sentences (think of Yoda-speak).


Smiling parenthesis in parentheses

Time for some trifling thoughts.

When writing you sometimes want to put a sidenote in parentheses, and then end it with a smiley.

This raises a question: Should you write one or two ending parentheses?

This seems to be an awkward problem for many. XKCD even made a comic about it (link at end of this post).

My solution is to use just a single parenthesis, so the ending parenthesis becomes part of the smiley. It just looks better that way! However, this way really sucks if you are writing in e.g. some chat system which automatically replaces smileys with small graphic icons. In that case the ending parenthesis just disappears and it feels like the sidenote keeps going on and on and the whole paragraph starts feeling unbalanced. So, if I know that the system will replace my smileys with icons, I will use double parenthesis.

At this point you’re probably wondering why I don’t show an example? I often overuse such sidenotes for some remarks, which is of course the reason I have even realized this earth-shattering problem. However, I have also realized that the best way to fix it is actually just to not use such sidenotes. Often the sidenote may actually be just a natural thing to say in the next sentence. Or perhaps you can consider using a footnote. I feel footnotes don’t work that well in web pages but I prefer them in print publications.

Anyway, I should save you the trouble (of constructing examples yourselves :).
Or maybe you already tried yourself (I know you did! :-) ).

XKCD comic


No entry for LD48, SD update out

The Stair Dismount 1.2.0 (iPhone/iPod touch) update should be out now!

In other “news”, I didn’t end up making an entry for the last weekend’s Ludum Dare 48h game dev compo. The theme was “Exploration” – I wasn’t really fond of the theme, but I still had a solid idea very quickly I went forward with. However, I ended up honing gameplay nuances for too long in my head and without actually doing much of implementation. I ended up writing some level generator thing and the supporting draw code etc. Might come back to those later if I want to work more on the idea; or perhaps even integrate with my summer efforts for making a little game for Assembly which also turned out not to be.

On the other hand, at least there was nice chance to have sort of “role reversal” for the weekend, since I was the one who went to buy groceries and made some food, and my wife made a nice little game to entry in the same LD48 compo.