rss feed of the blog sol stuff discord follow sol email sol Sol::News

Older News from 2007

These are archived news. More recent news can be found on the front page.



December 9th, 2007 #

Rotoscoping is hard work. This one took ages.

In other words, got 5th prototype of fluidtoon(tm) done, with reference image and rotoscoping support. Also wrote the project report to school, and the skinny is that any further development on that project requires major rework and trimming of features so that the few things that it does, it does well, and won't try anything fancy.


December 8th, 2007 #

Sadly, it seems that I've lost some source code. The last version of TextMedia, as well as my silly little votesystem, at least, are missing. I do have a bunch of old harddrives which I haven't gone through for some time though, so they may still be around, but plugging in IDE drives is such as hassle, you know..

Anyway, I went through some old backup CDs and happened to find the sources and data files to 'anterpe kiew', a demo we did in '99. This demo seems to be crashing on modern PCs, but when I recompiled it, the debug build (at least) worked, so I hit it with kkapture and sent it to youtube:

A little background.. Back Then, several groups with some name seemed to collect prizes from demo parties by throwing something together in a weekend, generally using music with some random beat, dirty graphics and some 3d. There may have been better demos in the compos, but the name voting ruled. I called this 'artycrap'.

So one day we figured what the hey and made a demo about this. Yes, it's ugly, fast-made crap, and it didn't fare well in the compo it was submitted to, but then again, it was never meant to. Some people actually got angry, so I guess we hit close enough to the mark.

Since then, demos have moved on and people have started to realize that using recognizable objects (such as buildings, trains, etc) fare better in demo compos than just .. artycrap. I doubt that anterpe-kiew had anything this, though =)

The third and (hopefully) last part of the upgrade saga.

December 5th, 2007 #

I played around with the nvidia 7300 for a bit and realized just how much slower it was compared to the x1650. So I decided to get a 8600GT as was the original plan - I had to order one though, as they didn't have any passive cooled models in the local stores.

The board arrived today, installed, and found that powerstrip doesn't work with it, so the 1600x1200 DVI screen was out (again). Tried reforce and other trickery without success, and then was instructed by Tronic on irc to use the nvidia control panel to create a new custom mode for the display, which I did, and voilá, everything works. Managed to get rid of powerstrip in the process, which is a big plus.

The 8600GT isn't the fastest board out there, but it's one of the fastest passively cooled ones, so I'm relatively happy for now. It's definitely faster than the old x1650 was, and I'm not stuck with ancient drivers anymore.

The saga continues.

November 28th, 2007 #

I ended up buying a radeon hd2600: It was cheaper, looked better in the specs than the 8600, was available without waiting, and let me keep the heterogeneous nature of our systems (my system is intel cpu + ati gpu, wife's is amd cpu + nvidia gpu). Come home, uninstall drivers, swap cards, boot.. only one monitor comes up. Install drivers, boot, neither monitor shows anything.

Swapped vid cards between pc:s, find out that the reason why only one monitor was awake on my pc is that the monitor had decided to change inputs for no particular reason. I'm guessing I would have gotten the same checkerboard like with the old card.. Oh well. So now I've downgraded from x1650pro to nvidia 7300, but on the other hand hl2:ep2 no longer crashes.

Another slight bump on the road was that the second monitor that I have is a 1600x1200 DVI one with only one cable. On ati cards I could choose 'reduce dvi frequency' to get it to work without blinking, but nvidia drivers have no such option. After googling a bit I fetched powerstrip and forced the refresh rate to 56Hz, which seems to work.

Oh well. At least wife's happy that games run smoother now =)

The upgrade saga begins.

November 26th, 2007 #

Some people might be interested in my system specs related to this story, so here goes:

  • Asus P5N-E SLI motherboard
  • MSI radeon x1650pro silent (passive cooled)

When the orange box was announced, I was somewhat pissed off. Valve pretty much forced everyone who had funded them earlier to re-purchase the old games to get access to the new ones. Of course it was possible to buy the games separately from the box, but it didn't make any financial sense, as any two games in the box cost as much or more than the box itself.

Anyway, I gave in a few days ago and bought the darn box. For me, portal and episode 2 were the things I wanted, and I haven't even started tf2 yet (as I generally speaking don't play online).

Portal is good. How good? Let's just say, IN BASE FOUR I'M FINE. Sorry for that, if you haven't played it yet. After playing it through for the first time I found the ending tune on the net and listened to it in a loop five hours straight. Then I played it through again, and again. I think I've run it through about ten times so far, with about 60% achievements done (i.e. the more or less sane ones).

As to episode 2, played it for a while, and then got stuck in a 100% reproducible crash. I collected data about the crash and wrote a nice bug report to valve, with screenshots and stuff - the kind of report I'd like to receive. They responded by quietly deleting my report. Gee, thanks guys.

The crash is most likely a driver issue anyway, as I haven't been able to update my display drivers for a while. When I installed some of the early 7.x radeon drivers, it resulted in a noisy checkerboard pattern on the screen on startup. I assumed this was because I've always just installed new drivers on top of the old ones without uninstalling the old set, but apparently this isn't so.

This time I figured I'd make sure there's no old drivers around, and ran the official catalyst removal program, followed by driver cleaner, as well as the nasty file remover. Reboot, install latest drivers, checkerboard. Repeat in different combinations, always the same. Finally I did a recovery in-place install of XP, but it didn't help.

At this point I was pretty sure my XP was just borked, so I installed a new hdd and made a fresh install of XP, followed by .net and the 7.11 catalyst drivers. Guess what? Yep, checkerboard. Installed 6.12 drivers (about a year old) and things seemed to work, except that the system got hit by a worm which killed the RPC process, resulting in the system being completely unusable.

So I plugged the old system back, installed 6.12:s again, got things running. Except that all USB devices were dead, and windows update didn't work either. First I tried installing logitech's setpoint drivers to see if I could get the mouse working, but to no avail. One fun fact: the setpoint installer is 90% usable without a mouse. The last 10% is where you get to choose whether to install the yahoo toolbar or not: without mouse, you can't refuse!

Anyhoo, I wiped all oem*.* files and the infcache from c:\windows\inf, after which USB devices started popping back. A quick search on the net found this nice article describing the latest microsoft conspiracy and the fact that running following commands fixes windows update, even though microsoft doesn't want you to know that (or something):

regsvr32 /s wuapi.dll
regsvr32 /s wuaueng1.dll
regsvr32 /s wuaueng.dll
regsvr32 /s wucltui.dll
regsvr32 /s wups2.dll
regsvr32 /s wups.dll
regsvr32 /s wuweb.dll

System back in a tolerable shape I ran portal and ran it through a couple times. Then I updated my motherboard drivers, motherboard bios, checked if there's a bios update for the video card (there isn't), tried the latest video drivers again, and was back at checkerboard. *sigh*.

Oh well, installed 6.12:s again, and have been looking at new passive-cooled video cards. The nvidia 8600gt looks tempting. While I was struggling with my PC, my wife was ill, and our younger dog started throwing up. Let's just say I've had more relaxing weekends..

Little things..

November 16th, 2007 #

Avoiding stuff I really should be doing, added a little shadow effect to these pages based on a neat trick Jetro Lauha showed me. Seems to work fine with firefox2 and ie6, so I guess it should work elsewhere too.

Site redesign

November 14th, 2007 #

If you've been to this site before, you may be surprised. You may be shocked. I hope you're not disgusted.

This is the first site layout redesign in 8 years or so. While not perfect, this layout solves several problems I had been having with the old one; higher resolutions, easier to find (and understand) navigation at the top, etc. It probably also added more problems.

The site has 156 html files(!), so it's entirely possible that I've missed some things. If something doesn't work, toss me a mail. I changed the way I update these pages; they are local php files which are compiled to html files which then get uploaded to the server. This way I can change the layout of all the pages at once should there be need.

In the process I tossed the advertisements out; they may be back at some point, we'll see. I also changed all the old tutorials which were frame-based to fit the same page format. The pages are also slightly more standards-compliant, but not exactly, so I didn't add the doctype to keep firefox in quirks mode.

Yes, the new layout still doesn't use css. But after all of the above changes, that move should be easier. Some year =)

(Thanks, bro, for the background image)

Strange attractors

November 10th, 2007 #

Here's a little treat for you strange attractor lovers (I think there must be at least one of you out there):

attractor explorer

Attractor Explorer 1.0

This is a tool I wrote and used when making the TMDC8 invitation. Yuriy Kotsarenko reminded me of this in a message a couple days ago and I figured I might as well clean it up a bit and release it. The tool is available under code as it also contains source code (under WTFPL). You'll need wxwidgets configured with opengl and tons of patience to get it compiled, but hey, you can always use the windows executable that's included..

Speaking of TMDC, the TMDCX invitation by yours truly has been out almost a week now; go grab it and start coding some textmode demos! The TMDCX demo project was the fastest demo project I've ever done - 6 hours real time, including taking the dog out, watching the dog while my wife went shopping (the dog is recovering from an operation), taking a shower, and ordering, fetching and eating some pizza. I think it turned out quite fine considering this =)

Also cleaned up and released a MIDI parser source, also under code, which I wrote as a part of the gametoy project when I was working on the softsynth for it.

Busy weekend

October 30th, 2007 #

Last weekend got surprisingly many things done.

Finished Zelda: Wind Waker (after playing it in the evenings of about calendar 21 days on and off). In that time I managed to do most, but not all, of the things there are in the game - for example I did not bother going through the photograph-everything-and-report spree, or the "second quest" which is the same as the first one with different clothes.

There was one thing about the background plot that surprised me. That is, there was one. 99% of the game you don't know (or care about) this, and in the end boom, plot is slapped on your face. The final moments came close to final fantasy-isque plot-telling. But only for a bit. It was a nice game though, and the only zelda that I've managed to play through so far. Dropping a bit more hints about the plot along the way might have, like, kept the interest up for those who don't feel that collecting the next 3000 rupees is enough motivation.. =)

Did the rest of the mandatory homework for the year. There wasn't much left, and I'm only doing two courses at the moment. Next I'll have to finish a bunch of projects..

Set up the TMDC10 site. Already got a bunch of sponsors, but more are more than welcome. Invitation demo is still pending..

This on top of having a guest, reorganizing our bedroom, watching several episodes of Poirot and the usual stuff. I think that was one of the most productive weekends I've had for a long time.

I seriously should redesign this site at some point, as I've noticed a need to link to specific blog posts.. oh well, maybe one year..

Oh, and since I don't seem to have enough ways to waste time yet, I started postcrossing.


October 21st, 2007 #

I recently joined facebook, after getting like four invitations. It's quite fun browsing friends of friends and finding people who you recognize by their looks but had forgotten their names.. it's a surprising time sink though. I'm also on linkedin if someone wants to connect.

It's been a while since I listed some funny search terms that have landed people here, so here goes.. Not many really funny and weird ones this time, but still the list grew a bit long:

"i was afraid to say anything"

I'm not surprised.

"who owns the rights" to terra nova strike force centauri

Nobody knows, is my guess.

$sql ="delete from where (


+how +to +make +graphics +in

+in +a +very +slow +or +alternatively +in +a +unsafe +way +I'm +afraid.


Okay, if you're from the cola company legal department, don't sue me; if you're from the marketing division, yeah, I'd love to get paid for the product placement =)

2 color balls sorting problem

If the radiuses (or however that's spelled) are the same, just sort the centers.

256 bit sine lookup table

Whoa, 256 bit accuracy, that'll take some calculation!

a manual on how to create your own mmorpg

Oh fer pete's sakes!

accuracy float cpp

Worse than you'd think.

alternative zu solvbe

None that I know of, except for using dosbox, naturally.

answers to galaxql 2.0

I'll write them any year now, honest!

are there any countries in the world news starting with the letter "y"?

I don't know, Yemen?

beginners c programming tutorials

One of the projects I'd love to do is a beginner's tutorial in C in the same way I did galaxql. Maybe one year.

better console application for os x

What do you mean better? Maybe you meant a better shell?

bit, byte, nibble, word, long, short, boolean, etc.


book puts devil on trial

devil's advocate, maybe?

c++ and code::blocks tutorials

Put out a stable version and I'll write the SDL tutorial for code::blocks.

change slidervalue as textfield value changes

You need to update the slider value from the text field and the text field from the slider. It's kinda tricky but works.

clean natural keyboard space

Probably easiest by taking the whole keyboard apart.

coding l-system

One of the good sides of browsing these lists is getting ideas. One idea is to make a galaxql-style "studio" for l-systems. Maybe one year..

coldfusion cv

It's been so long since I touched CF the last time that I don't know if I'd recognize the language anymore.

carma cameleon/lyrics

cama cama cameleon, you came and go (lyrics)

coma cameleon

coma cameleon comes and goes lyrics

coma cameleon lyrics

coma cameleon song

coma cameleon year released

coma cameleon you come and go

coma coma cameleon

coma coma cameleon free down load

coma coma cameleon song

coma coma coma cameleon

coma coma coma cameleon downloads

coma coma coma cameleon song

coma coma coma coma cameleon

coma coma coma coma coma cameleon

coma coma coma coma coma cameleon lyrics

come a coma cameleon

come on come come coma cameleon

cummer cameleon lyrics

song coma coma coma coma coma cameleon

the song coma coma coma cameleon

It's KARMA CAMELEON! Some people really have Van Gogh's ear for music..

counting the number of days in school and cute

Depends on the school, sorry. And cute.

creative webcam showing hazy pictures

You can focus the camera by rotating the lens. In some models anyway.

d3d assembly demo source

Try in4k

define what it is to play a game

This question would require far too much time to answer. Maybe one year. =)

desings to make school projects

How lazy can people be?

desperate dynamic libraries

Okay, that's a new one.

dogs that leap up in the air example coton de tulear


download digital signed free software for my video card nvidia

Try perhaps?

download sql database patients

I hope it's not that easy =)

extract 8 bits out of 32 bit word with shift operator

Don't know why, but that sounds like a school assignment.

finns difficult

I guess we sometimes are.

from 4am onwards

I'm probably sleeping.

hot to check if button was clicked

Listen for it.

how many bit patterns can be represented by a 8 bit word


how much weight can you lose stopping softdrinks

Depends on how much you're doing now, how much you weight, how's your diet otherwise, and so on.

how reset sdl_getticks()

I don't think you can, but it's easily remedied by taking the current value and using it as the offset afterwards.

how to check whether it is 64 bit or 32 bit microprocessor

This is probably quite platform and environment specific. In C you could (possibly) check if sizeof(long) > sizeof(int)..

how to draw vampires tutorial

Now, this is one tutorial that I'm not planning any year now.

how to find max value for same two lookup values

Erm, pick either one?

i have download movie and it's format is sol

From my point of view I think you're quite s.o.l.

i want make my own mmorpg!

And I want a pony! Actually, I don't.

i'll try to explain you in a simple manner


koala painter plugin photoshop

Omg, someone's actually been looking for it.

lcd block doesn't appear in psoc designer

Well, I wrote the lcd controlling code from scratch, bit-banging the LCD.

translate: doneish

translation: Kinda done.

void drawcircle(int x, int y, int radius) // write you code in it for circle drawing

Now if this isn't a class assingment, I'm surprised =)

welcome to maxvalue doors corporation

Wtf =)

were is return on the keyboard

You've got to be kidding me.

what is a drink that starts with an h ?

Hot milk?

On getting stuff done

October 4th, 2007 #

Some people claim that I'm diligent as I try to get stuff done as soon as possible. I find this not to be the case; I consider myself lazy, and that's the reason why I try to get stuff done as soon as possible.

Why's this? Because, when you get stuff done early on, you don't end up in a situation where I am currently: deadlines of five different projects approach at the same time, which means that I *really* have to start working on them to meet the requirements. Oh well.

I figured I'd clean up and release some old code for the heck of it. Some years ago I was trying to hunt a rather nasty crash bug on a platform without any sane debugging tools. Since the crash occurred near the beginning of the program, I figured I'd just instrument all functions in the whole program, and then look at the log to see where we ended up.

As it happens, the logging was so heavy that while without instrumentation the program crashed under a second, with instrumentation it had not done so after I had left the program running over the weekend.. oh well.

Anyway, since I wrote the instrumenting program, I figured someone might find it useful. Presenting Interjector 1.0 (under code). Command line program, comes with source and win32 binary. Should compile as is on other OS'es. Takes in C source (c++ should mostly work as well) and outputs the same, with macros inserted at function entry and exit points, and an #include directive added at the start, so you can tell the compiler what those macros should do.

Summer moved on..

September 10th, 2007 #

Whoosh, time goes by. And so did the summer. I managed to ride my bicycle 20 times to work and back while the weather was nice. I'm still hoping to do so a few times before I have to move the bike to storage.

School started again, probably for the last year, unless something strange happens. One strange thing that did already happen was that I've done so many courses already that the choises that I have remaining are, oddly enough, pretty much packed on two days, so I only managed to pick two courses for the fall.

If I manage to whip my final project together, as well as wrap up all the projects that I have running at school, I should, in theory, still manage to graduate before the year is out. I still have the spring as a buffer if that doesn't happen, but I hope I won't have to rely on that.

One of the courses I'm taking is for C#, so you may find me releasing something coded in that. It'll be clearly marked as such, I think. UI stuff seems to be somewhat less painful in windows forms, at least.

Relatively few things have happened regarding this website, i.e. no new releases. Assembly should get the seminar videos online at some point, but that hasn't happened yet. And I should start preparations for TMDC X, which, once again, might be the last, but who knows, I've said that for ten years now..

Now that trackmania has been released for the first time without starforce, I bought it, and it's nice. Don't know how much time I have to play with it though, but I already ran through most of the single-player tracks getting at least a bronze medal. Whoo. I wonder how long it'll take for bioshock to get a version out that doesn't insult the customer with insane copy protections.. too bad, considering that I had been looking forward to it.

RIP Michael Menz, aka. Crest 1966 - 2007

August 22nd, 2007 #


I only met Crest once when he was visiting Assembly - I can't remember the exact year, but it was probably 1996. He was an odd fellow, but back then I wasn't all too social so I didn't really get to know him back then.

Afterwards, he was always one of the people who you just take for granted - if there's going to be a musical about the demoscene, there'll be a character for Crest. Enjoying demos, being a critic, hanging on IRC, swapping emails, going to all sorts of demo parties..

According to this pouet thread, the recent Evoke was his last. Apparently some time after the party he decided not to return to his home country, but instead took his own life by jumping off a bridge.

Tracing his recent trails on the net is sad. He has noted on his homepage that they will no longer be updated, and his video page on dailymotion says - in past tense - that ASD's lifeforce was his last upload.

I did not know him too well, and now I wonder if I should have. I had never heard of his depression, but apparently it had been going on for several years. He was part of the demoscene outreach, but perhaps someone should have reached out for him.. and it's sad that a demo called lifeforce should be his last, before his own running out.

You will be missed. Its moments like these that make me regret that I don't drink.


August 9th, 2007 #

I captured and uploaded a bunch of old demos to youtube; they are viewable through my video page or channel or whatever they want to call it.

Included demos are: 'Stuff I whacked together when I was bored', even though that still runs on current PCs, the 'mindtrap' below, 'silence' from 94 and 'hysteric overload' from 92. Enjoy.. =)

Happy 10 years, Trauma

August 8th, 2007 #

Happy 10th birthday, Trauma..

Thanks to everyone who popped by on the AMD booth during assembly, and apologies to those who did so after my booth duty was over =) I spent most of Saturday and Sunday resting after being busy in the booth for the whole Thursday and Friday (which I wasn't ment to do originally, but, well, it happens).

IMGUI seminar slides

August 2nd, 2007 #

The seminar is over, slides available here, also check out the IMGUI tutorial for more complicated cases. Assembly will probably eventually put the seminar video online, but that may take months.

I'm wasted, hitting the bed.. more AMD booth duty tomorrow, so if you're at asm, come say hi.

You know what I did last summer

July 30th, 2007 #

Whoosh, there went the summer, and I turned 0x20 (now I can rely on hex numbers for my age until I turn 42). I haven't done too much stuff related to this site, and there won't be any releases from me at Assembly later this week, apart from the seminar session I'll be doing with Jetro Lauha about IMGUI.

When I've been home during my vacation, I've mostly played games. I also bought my very first game console, the nintendo wii. The games on other consoles so far have been pretty much stuff that I can already play on PC - this was something new.

Some of you may know that I do not have a TV, and haven't had one for seven years or so now (if you've wondered why I have had time for all the junk on this site, that might be one reason), so where do I plug in said console? To the PC.

I found this pretty cheap and surprisingly functional TV-in USB dongle thingy called GrabBeeX+deluxe. I've been in contact with their technical support about possibly adding a PAL 60 mode, and they've been very responsive. I have my fingers crossed..

I've already run through rayman raving rabbids, and boy did my arms hurt. =)

Another game I played, this one on PC earlier this summer was the PC port of Chronicles of Riddick: Escape from Butcher's Bay. I found it from a local game store at something like 12 euros, a budget rerelease. Came home, installed, tried to run, copy protection asks me to insert the right CD. Cough.

Then I went to the publisher's site, looking for support pages. Game's not listed. Not even on the 'legacy support'. Found a patch on gamershell or some such site; installed patch, tried to run, same problem. Sigh.

Now, at this point I guess the totally legal and "right" thing to do would have been to return the game to the store for a refund. But I didn't want my 12 euros, I wanted the game! So, I found a no-cd patch and got to play the game. And it was good. I seriously recommend it if you haven't played it yet.

A couple of my pet peeves

June 30th, 2007 #

So, RIAA and friends are trying to kill off net radio in the US. The plan is to move from "net radio is broadcasting" to "net radio is personal performance" model - i.e. the net radio station has to pay royalties for each song played per each listener. This is kind of funny because that's exactly the way the finnish equivalent of RIAA killed net radio in finland ages ago.

What's even more funny is that now they're changing their minds and net radio will become possible in Finland again.

I'm surprised this isn't more visible in the news.. it would be interesting to know what the exact terms are, this time, and does the agreement only cover large radio stations.. regardless, the press release I linked above (which is in finnish) takes a positive spin on things, claiming that this will enable a brand new way of reaching the public. Maybe this wouldn't be a brand new way if you hadn't killed the net radio in the first place?

Now, I know I'm somewhat biased in the issue of copyright management companies - I like the principle, but not the methods. I tried to negotiate with them few years back; had a friend who had signed with them, and wanted to use his music in a freely distributable product with his approval. Point is, the approval wasn't his to give, as he had signed the rights off to this copyright management agency.

When asked if this thing could be negotiated about, the agency said yes, but after a few rounds it became clear that you can't negotiate a zero-fee deal. In practise I would have had to track every download of said product and pay them a minimum of five cents per download. For a free product. This policy is the same even if the artist wants to give out free clips of his music on his personal website.

That wasn't exactly the end of the story, as this was only the agency that tracks the composition. Since the song was also released on a recording, I would have had to negotiate separately with the recording-artists agency, even though this had nothing to do with a piece of plastic.

Anyway, I have to say that the agencies do good stuff as well. My brother did a soundtrack for a TV show several years ago, and even though he isn't a member of any agency, the agency collected royalties for him, and, unlike the US version of things, he didn't have to pay any kind of membership fee in order to collect the royalties.

Now, while I'm ranting, I might as well talk about a small pet peeve of mine. I commute to work by train, and I'm amazed how few people simply can't figure out the couple small things about entering a train and leaving a train. This is easiest to explain with a picture.


Let's assume that badly drawn blueprint represents a train entrance/exit lobby thingy.

When entering the train, people from within the train want to exit first. These people are generally standing around the places described by the character 'c'. What can be more irritating than bunch of people on the outside standing stupidly right outside the doors blocking the way? Instead they could be standing on the sides of the doors, looking in diagonally, as represented by the character 'd'. Standing directly outside the doors just makes the process slower.

On some airport in the US - could have been JFK, can't remember - they have an internal train track to move people from one part of the airport to the other. They actually have those arrows painted in concrete there to tell people how to enter and exit the train.

On the same vein, people exiting the train cars to the 'lobby' (character 'a') often open the doors towards the 'lobby' ('b'), blocking everyone from exiting ('c'). The doors swing both ways, how about pulling it inside the car ('a') instead of pushing it towards the more cramped space ('b') ?!

Swedish done, among other things

June 16th, 2007 #

It's funny how time flies. It feels like I posted the last bit only a few days ago..

First off, I finished the swedish course. The final boss was pretty tough.

Seriously though, after not using a language for over ten years you get maybe 10-20 hours of intensive crash course after which you're expected to be able to throw, let's say, a company presentation with a couple minutes notice.. to be honest, it wasn't perfect, but it was enough for the course.

The teacher did a great job, and I feel that if I wanted to, the course could be a great springboard for further study. As it is, though, I find that somewhat unlikely. The best reason I could think of would be to try to get into the royal family, but considering the fact that I'm already married, that's out =)

I'm trying to get my final project into some kind of shape this summer, so no demo from me at assembly, unless something really strange happens. I've agreed to do a seminar with Jetro Lauha there though.

We got a new dog - another mixed breed female pup - and I really need more sleep =) Here's a strange picture, I might post some better ones later ('better' meaning 'more normal' in this case).

Free record shop, the largest music retail chain in Finland, is apparently calling it quits. This probably doesn't affect their actions in other countries though. Anyway, I'll say good riddance. Nine years ago FRS bought music stores from Fazer Music, which as far as I know is/was part of a finnish multi-industry corporation which is mostly known for pastry products.

Before being bought, the stores worked that way that if you wanted to buy some music, they'd have it - and if they didn't, they'd get it for you, if it's some way possible. FRS only sold "hit music". After finding out that they generally didn't have anything I wanted - even if the music I was looking for was mainstream (as in, featured on several movie sondtracks etc), I gave up, and started ordering online.

That was back when I bought a lot of music. After RIAA and friends started pressuring everyone about music piracy, I pretty much stopped buying new albums, concentrating more on indie music instead.

I agree that artists need to be paid for their work, but, for example in my case, the more MP3s I downloaded, the more CDs I bought. After stopping downloading MP3:s, I pretty much stopped buying CDs as well. I don't listen to the radio, I don't have a TV - thus I'm not in reach of the "acceptable" feeds. Oh well, their loss.

Do note that I still want to buy CD:s. I don't like pure digital downloads, especially if I can't download a new copy when my harddrive crashes. This is why I like steam and have bought a bunch of games there.

Speaking of games, I went and bought the original starcraft and the expansion cheaply, since I never played them when they were new. I played maybe three levels before digging up cheat codes. Some of the levels were so clear time wasters that it hurt. I play games to enjoy them - they should not feel like work!

Generally speaking, in these levels you're given a couple starting units with which you create your base, mine out the resources available, and then attack enemy camp in order to get access to some more resources with which you build another attack force to attack the second camp, repeat ad nauseum. Even after cheating heavily the game took a rather long time to beat, so I don't think that including levels like that was even neccessary.

I also ran through max payne again very recently; it ran pretty well in 1600x1200 resolution with all options turned to the max on my radeon x1650pro; there were only a few areas where I noticed a clear drop of framerate. I surprised myself by being able to beat several places in the game that I remembered to be difficult with hardly any effort, and didn't surprise myself at all for still hating the 'blood trail' puzzles.

GalaXQL has received a bit more attention lately, partially due to it being submitted to a bunch of download sites by the fellows behind PELock, but also because it's apparently being used in several universities.

On the negative side, I've found that the universal build no longer works on intel macs, and I have no idea why - you can still force the binary to run under rosetta and it'll work. If you really, really want me to fix it, I'll need an intel mac to do it. Buy me one? =)

If I had to choose what I'd want to do for a living, and could choose anything at all, right now it would probably be more software like GalaXQL - fun, advanced interactive tutorials. I have some ideas that I'd love to do, but they'll take a lot of time. We'll see.. since I might actually be graduating in a year or so, I might have more time. Maybe.

Funny keywords, May'07 edition

May 27th, 2007 #

It's been a while since I did this, so, here's a bunch of recent keywords by which people have found this site:

debugger detected

There's (again) been plenty of searches related to this. And as before, I just have to welcome you to the world of DRM.

what is the strangest, funniest, or least useful usb device

Considering that USB is pretty much just a 5V 100mA power plug, you can do just about any sort of pointless device on it.

about shadows

Light, meet surface. Eye see color. Add occluder object. Eye see darker area on surface. That be shadow.

dx10 z fighting

I doubt dx10 is the magic bullet that makes z fighting go away. The solution most likely is to move the near clipping plane further out.

galaxql 2.0 answers

There's been so many questions about this that I'm pondering on writing a "teacher's manual" of sorts, with answers. If I ever find the time, that is. At the same time I might try to solve the mac os x intel problem, but alas, I have no intel mac. Give me one? =)

glcopyteximage2d ati slow

Yes. Use FBOs, do.

how to make cool desings with the keys on the key board

You mean like ascii art, or art made of keyboard keys ?

jari komppa appears to be in alpha centauri

I knew I'm on the wrong planet.

l-system using opengl tutorial

Maybe I should write one of these. Hmm.

my web page disappears when i close my pc


shadow mapping

Yeah yeah, when I get to implementing them in some sane (read: shaders) manner, I might publish something.

six drinkable things

Let's see. There's water, and then plenty of things that contain water, like juice, milk, coffee, tea and cocoa! That's six, right?

stuff about pythagoras starting with the letter "y"

You know, Pythagoras was just this guy, right?

text mode "video memory" nt console

Look up AllocConsole in msdn, and also read all the 'see also' pages.

using your keyboard to draw with using coma cursor


vista gets stuck idle

Never change microsoft OS versions before the first service pack. Didn't you get the memo?

what is a drink that starts with the letter h


Photoshop plugins

May 19th, 2007 #

filter installation

Been quite busy with school and stuff.. but got an inspiration and wrote three simple photoshop plugins.

To install the plug-ins, just copy the contents of the desired filter zip to the photoshop filters directory:


The first image on the right is the reference.

These plugins have been written towards the Windows Adobe Photoshop CS2 SDK and CS2 is the only version I've tried them with.

Feel free to use the plugins, but don't blame me if something goes wrong.

koalized puppy

The first plugin is called Koalizer.

It messes up the image into a format which attempts to be close to what you could expect from Koala Painter on C64.

  • Fixed 16c palette
  • Halved horizontal resolution
  • Global background color for all tiles
  • Each 4x8 tile can have 3 unique colors (plus bg)
zxspectrumized puppy

The second plugin is called ZXSpectrumizer.

The spectrumizer attempts to change the images to what they might look like on the ZX Spectrum.

  • Fixed 8c palette
  • Each 8x8 tile can have 2 unique colors
  • Additionally, the tile may be 'bright' or 'dark'. 'Bright' black is still black.
ascii-fitted puppy

Last but not least, the AsciiFitter.

For best results with the ascii fitter, first run 'threshold' on your image.

The plugin uses a 8x12 console font characters 32-127, deciding which character to use by scoring 2 points for each bright pixel on both the character and the image, and 1 point for each dark pixel in both the character and the image.

More on Ambrose3d

April 16th, 2007 #

A bit more about Ambrose3d.

It's not exactly the little engine I've been talking about - it's a cleaned up, refactored snapshot of it. As I was getting the exporter together, I figured releasing a engine at this point would be helpful for many people, as most of the stuff I've done so far is rather tedious. Right now, as Ambrose3d is, it is in a 'critical mass' stage - the next step at this point can lead to any number of directions. Some of the directions are listed on the "project ideas" page, but that just scratches the surface.

There's no shadows in Ambrose3d even though I've played with shadowmaps, since I wanted it to be a bare-bones implementation that doesn't include anything horribly confusing (and trust me, the shadow map generation made the source code much more complicated). There's also no FSAA even though that's three lines of code.

Where I'm going with the Ambrose3d project, I don't know - I'm going to continue playing with it in my own direction, and the code base is free for anyone to take in their own personal direction. I know it doesn't use templates. I know it doesn't use namespaces. If those bother you, they shouldn't be too hard to plug in, but they would make it harder for joe random programmer to grasp.

Will there be new versions of Ambrose3d from me? That I don't know either. That probably mostly depends on interest.


April 15th, 2007 #

Okay, here's something new. Ambrose3d, a simple 3d engine, along with sources and a blender exporter. No strings attached. Go, read, tweak, learn, extend, go wild.

Shadows of April

April 1st, 2007 #

botski in shadow

I hate the april 1st.

It's origins as a day when it's ok to pull pranks on other people - a stupid idea to begin with, in my opinion - has turned into international misinformation free-for-all. You can't trust just about any news published today, and since crazy things are already commonplace, separating fact from fiction is hard enough without a stupid, stupid, stupid day like this.

Anyway. I've been looking at shadows lately.

You'd think that easy, "just turn it on" shadows would be commonplace this day and age, but alas, this is not so. However, one goal checklist item in the little engine I'm working on (at idle priority) is shadows, so I did some digging.

Basically, since we're talking about shadows in a completely generic sense, we can forget most approaches (like projecting only the shadow-casting objects to the only object that can receive shadows, which just happens to be a plane), and we end up with two main branches of shadow research: Shadow depthbuffer maps and stencil shadow volumes.

Now, I want the things in the engine to be as simple to implement as possible, so stencil shadows are out (as they'd require on-the-fly mesh generation). Shadow maps are easier to implement, don't really care about the geometry that's used, and are, mostly, of the "just turn on" variety.

Of course, this means I couldn't use point lights anymore. In my test, I'm just using a omni as the light source, but consider it a spot that's looking at the world center. One gotcha that I hit early on was that apparently blender's "up" is 'z', instead of 'y' like with everyone else.

I ran through dozens of tutorials and papers on shadow maps, and finally got things pieced together so that they work in my engine. The OpenGL red book - and the SGI example source that it was based on - got me almost there, and paul's projects shadow mapping tutorial told some other bits of the story. Basically the result is somewhere in between, mostly from red book, but in eye linear space instead of object space, and scaling and translating by (0.5, 0.5, 0.5).

So it works. Sort of. With the glCopyTexImage2D (which almost all tutorials and examples use) being amazingly slow on radeon x850 (60ms for one 256x256 copy!), I plugged in FBO which I used for shadow rendering, and the result was.. fast. The shadow rendering speed went from 60ms on 256x256 to about 0ms on 1024x1024.

There's the normal shadow mapping problems, namely aliasing, z-fighting and such. So I went and looked what's been done to improve matters.

There's projective shadowmaps, which at first glance seem more or less simple to plug in, but apparently contain tons of problems. Other approaches (light space perspective shadowmaps, trapezoidal shadow maps) are of increasing complexity, and don't really seem to solve the problems, and then there's approaches that use multiple shadowbuffers.. and suddenly we're quite far from "just turn on" shadows, and into hugely complicated systems.

One big hint about the new systems is that they really are new - most of the papers are post-2000. Considering that most of computer graphics algorithms in use today are from the 1960's, we're talking about non-trivial things here.

So I think I'll just live with the shadow quality for now.

Forums on Gfxile

March 28th, 2007 #

Gfxile now has forums, so if you want to discuss some of my tutorials, etc, click yourself this way, please.


March 26th, 2007 #


Three updates within a week? How did this happen?

Well, I got slightly ahead in my school projects, and figured I'd spend a nice relaxing evening of updating ESCAPI. Developing on a rather unstable PC is "interesting", but my new PC should be arriving late this week already, and I'm hoping this old one survives that far..

Anyway, the picture is from ESCAPI 2.1 OpenGL-based "funny mirrors"-sample. Other than that, ESCAPI 2.1 comes with BlitzMax and PureBasic samples, and has the one and only feature update that was requested: the 'alpha' bits (topmost 8 bits) are filled with 0xff.

(also archived 2006 news from the front page. For those interested, the old stuff is here).


March 24th, 2007 #

Yay. My PC is dying. And it's the strangest behavior I've got from a PC so far.

A month ago or so I noticed that if I just leave the PC running idle for half an hour or so, it hangs. It doesn't reboot, just gets stuck. I promptly disabled screen savers, but that wasn't the reason; it still hung. I experimented by leaving a 3d app running, and the machine didn't freeze in idle anymore (as it wasn't really idle).

A week ago or so I tried installing some new video card drivers, thinking that it might be that. Installation of said drivers hung. After that I noticed that installing new patches to windows hung, as well as installing any application.

The first suspect was the system drive and/or messed up windows installation. I used the "ultimate boot cd" to run some diagnostics, and apparently the drive is OK - one of the RAM testers hung. So either the memory is broken (which is unlikely, as then I'd see a lot more crashes running complex apps), or the motherboard is dying (which seems likely, considering that the RAM tester hung, it didn't report errors).

So I'm ordering a new PC. I was hoping to postpone this for another 9 months or so, so that plenty of dx10 hw was out and (hopefully) a vista service pack as well. Thus I opted for buying a cheap PC at this point, and maybe upgrade it later on. Comparing numbers it should be slower than the current, about 4 years old PC, but in practise I expect it to be much faster.

Basically; 2.6GHz P4 -> 1.8GHz Core2Duo, 1G 800MHz RDRAM -> 2G 677MHz DDR2, Radeon x850 agp -> Radeon x1600xt pcie. So, older-generation "bleeding edge" to current-generation "middle end". We'll see how it goes. The PC I built for my wife was AMD CPU + nVidia video card, so building a intel cpu + ATI video card should give me a relatively good testing environment, should I ever have time for serious software development at home again =)

And now to "funny search terms that ended up in this site", part 12387.4:

"height map" tutorial

This depends on where you want to have the height map in, but basically we're talking about a 2d grid of values which are considered to mean the "height" of a surface at said point.

"without data file" sqlite

I guess this should be possible, as sqlite includes a "memory database" mode, but I can't remember it outright. If nothing else, it's always possible to create a virtual filesystem in memory and fool sqlite to use it instead of stdio.

'finnish summer cottage clipart'

Uh, ok.

3 values none can be the same boolean logic

I think that speaks for itself.

alien spoon in brain


c++ simple text adventure r + -

I recommend inform for text adventures. I haven't used inform7, but inform6 at least was pretty good.

calculate angle two points,glut

If you have two points, you can have a line. To have an angle you'll need some kind of reference to calculate the angle against.

complete tutorial on graphical lcd 128x64

You wish.. finding information about electronics seems painful, even at this day and age. I wonder what it has been like before the internet..

debugger detected - please close it down

There's been a bunch of different variants of the above in the logs. I'm afraid that I just have to say that welcome to the brave new world of DRM that .. mostly works, I guess. I hope it doesn't kill anyone.

draw vampires tutorial

It's in the fangs.

example using l-system

Let's say you have axioms A='ABA' and B='BAA' and start from a single 'A'. The generations go something like 'A' -> 'ABA' -> 'ABABAAABA' -> 'ABABAAABABAAABAABAABABAAABA' and so on. The joke here is that in addition to th string-generation codes, you can also put in control codes, like "logo" turtle codes (move forward, turn, pen up, pen down, etc) and generate nifty images, structures, and so on.

explain the terms bit, byte, nibble, and word are related?


fast frame rate tutorial

Do things in more efficient ways.

fun drinkable things


get taller shoe sols


harder english sol makeup?


how to get wall tiles level when wall runs out

Extend the wall? Make tile gaps slightly wider for the whole wall? Just give up and break some tiles?

how to put a laptop keyboard back together

Uh oh..

how to save gta1

You can't. They're already making gta4.

i love this site

Well thank you.

is there anyway you can pull off the keys on the keyboard

Most keyboards I've seen have been built so that you can just pull the keys out without damaging the keyboard. Your mileage may vary and all that, though.

line age 2 crack free download

I could do a 'the line age' joke here, but I'll just wonder what kinds of people think they can pirate a completely online game and get away with it?

max value of a short integer +1 what happens

Yep, that's a good question. I'd say it depends on whether we're talking about signed or unsigned values here.

problems on application's of pythagoras theorem

Mostly variable overflows.

shifting the nibble without using temporary variables

That depends on how you define temporary variable.

short film "would you marry me" ring fish


should i learn sql?

If you need it, sure! If you want to expand your general computing knowledge, sure! If you don't have the time, no.

tutorial for nested for loop in c++

Here's one: int i,j; for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) ..

what do you call the long words that starts with letter h

Long words starting with letter h?

what is frame rate independance

The way that games (and other applications) seem to run in "real time", or "the same speed", regardless of how many frames per second you get on screen.

what is xor useful?


what will happen if i won't drink softdrinks

You might lose weight. No promises though.

why should boolean values be single bits

Because they can only be true or false.

worlds first real-time raytracing demo

Tough question; I don't know what was the first, but my favorite from the early ones was Transgression 2 by MFX (and as it happens, still my favorite demo from them).


March 20th, 2007 #

Wow, it's been a while. I've been meaning to write an update for a while now, but never got any of my multitude of projects into a good enough shape to write about. Anyway, here's some things that I've been working on..


Blender has come a long way, and it's actually quite usable now. I started writing a simple exporter for it, as well as a simple 3d engine. The primary target for that project is to write a late 90's -class "3d player" 3d engine in a understandable and extensible way in OpenGL, document it and release it for people to use, learn from and expand. Secondary goal is to use it myself to learn and try out stuff. One thing I do need to learn a bit more is Python, and for that reason I also bought a python book. This project is a bit starved for time though, so don't hold your breath.

The last engine I worked on was six years ago or so and scene complexity target back then was about 10k visible triangles per frame. For this "engine" I set the performance target to about a million polys to show at more than one frame per second. At its current form I surpassed that (with untextured polys and two lights) by a wide margin, running several millions of triangles at over 20 frames per second. Things are bound to get slower though =)

Another project (that I can talk about) is a school project I recently finished.

As a part of a "interfacing PC" course, we had a project to create a USB device that acts as a USB mouse or keyboard, but does something else. Like you could create a simple mouse out of six press-buttons for example (four directions, two mouse buttons). As could be expected, I did something slightly different..


The electronics image is a photo of a Cypress PSoC development board. I connected the same graphical LCD that I've used before into it, and made it act as a USB keyboard. Instead of being a input device, however, I used the keyboard lights to transfer data to be drawn on the LCD.

Since I didn't find any information on how the keyboard lights work on PSoC, and found a couple people asking about it, I might as well drop a couple of hints here; First, as anyone working on USB knows, "in" means towards the host (PC) and "out" is towards the device. The keyboard has two endpoints, "in" and "out". The "in" endpoint is used to transfer keys to the PC, and "out" is used to read the keyboard LED values.

In order to read the "out" value, you need to call USBFS_EnableOutEP(2), wait until there's data with USBFS_bGetEPAckState(2), and read the data with USBFS_bReadOutEP(2, &lights, 1). After this you need to call USBFS_EnableOutEP(2) again, or you won't be receiving any more data, ever. There. I probably saved someone a couple hours of debugging time.

On the PC side, things are a bit more hazy. There's three different APIs (at least) on windows to change the keyboard states; I used the (deprecated) keybd_event() win32 calls, which worked well enough. However, the led states don't always get to the device for some reason. To make things a bit more reliable I've had to toggle the 'data bits' on and off every data frame regardless of whether the data itself changes. Sending an "ack" back to the PC is easy, considering that it's a keyboard we're talking about =).

Even after all this mess things are still a bit unreliable (I'm estimating that about 1 data block of 2 bits per 4000 fails), so a higher-level error checking layer would be needed to make it reliable.

That is, if the whole led-data-transfer-thingy was anything but pointless =) But, there's probably some very custom applications for this. For me, the application was to build an interesting project and pass a course.

Oh, and I added TIGRS 3.0 ratings to Ass hat desings page. So now you know what age group the games are suitable for, in my opinion, accompanied by pretty cool and pretty pretty icons.

IR webcam etc

January 13th, 2007 #


Happy new year and all that jazz.

School has started again, and my goal for the spring is to get the rest of the mandatory courses done, meaning mainly swedish and leadership. I'm also taking a couple of electronics courses as well as doing a few extra projects.

Related to one of those extra projects (which I'm not allowed to speak about much yet), I updated ESCAPI, my extremely simple capture API. On the image you can see ESCAPI capturing video from three video sources at the same time. The top left is black since the video capture device on my video card is not connected to anything. On top right is my Creative WebCam Instant which has been modified to be an IR camera, and on bottom left is my Logitech QuickCam Messenger, which is just a normal webcam.

If you want to make an ir camera, I can heartily recommend the creative webcam instant; it was a very easy modification, as opposed to what the logitech camera would have been (according to this guide anyway).

The image also shows the difference between IR and normal image pretty well. My mugshot on the fathammer badge disappears, business cards turn (mostly) white, and the LCD screen on the background looks blank. The IR images are rather freaky =)

Anyway, the new ESCAPI contains support for multiple devices, and you don't necessarily have to capture from all of them at once even though the example does so..

One irritating thing that I hit was that if I try to use the ESCAPI under debugger, I get a dialog saying: "Protection Error", "Debugger detected - please close it down and restart!". Apparently this is because there's some video feed filter in my system that doesn't like debuggers, and Nero (the CD burner software) is a likely culprit. Thus, I can't debug any webcam apps. If someone has a solution to this, toss me a mail!

Year 2006 news archived here

Site design & Copyright © 2022 Jari Komppa
Possibly modified around: January 28 2015