Archive for the ‘Articles’ Category

Welcome back to TPOLM 7017!

Sunday, January 8th, 2017

It’s time to get the bum mad rush go yes no!

Lackluster is organizing a shocking Indiegogo Campaign to reclaim CDs from being binned

Thursday, January 29th, 2015

We here at TPOLM have shocking news. Lackluster’s CDs are about to be thrown in the garbage dump / landfill / bin!

That’s right, these poor poor CDs might end up in a Belgian dump, unless if we get this indiegogo project funded. Sadface. Still 35 days left to go, to save these poor poor poor poor poor..

You can get perks like the MerckRU (R U OHO?), MerckSC (Showcase Sampler) 12″s, or autographed Slice & Spaces CDs or just a regular Slice CD, or even a gigantic Merck/Etc bundle with 6 CDs, etc.

Or strange number perks like $3/$33/$333

Or Bandcamp download codes.

Please chip in, if you can.

Making of Parsley State

Monday, July 2nd, 2012


Following up the disapointment of Cyboman 5 placing so low at Stream i decided to try again with a new javascript intro. I had also recently finished work on the “Under a Seering Sky” javascript game. Another disapointing competiton result, this time from Atparty wild competition. The new target event was DemoJS, a demoparty in Paris focusing on javascript and browser technologies. DemoJS popped up last year sponsored by Mozilla during their 2011 campaign to get more demos for the browser with a few events across the world. Competition would probably be harder but atleast the attending audience would more likely know what they are voting on. Aimed again for pure canvas, no webgl. There are still lots of things on the canvas specification that folks don’t seem to be using that much, i wanted to explore that a bit.

There were 4 categories at DemoJS: 1k, 10k, demo and wild. 1k is mostly for 1 trick ponies and it’s typical playground for webgl experiments, not what i was looking for. Demo would require a dedicated graphician to work with, so i also set it aside. Wild would have been great for something similar to “Under a Seering Sky”, but i was running out of time to make two prods. 10k seemed more appropriate to aim for. So now that i knew the target, what i was missing was a good tune with small size. Fellow TPOLM’er Kaneel was recruited for the job. Our aim was to do a haterztro, sending joyful fuckings to all the folks that enjoy talking shit about us whatever it is we do. Inspiration from the epic B.o.B. track Haterz Everywhere popularized by machine drum on lazy sunday radios of old.

Research and development

Focusing on the 10k category i did some research on available sound apis and concluded we had 4 options to chose from for our plan to world domination to have appropriate sound:
1) bytecode music. Has the advantage of taking much less size, ideal for 1k and 4k. Has the disadvantage of always sounding like crap made my coders fooling around.
2) sonant-js, a javascript port of a softsynth some other sceners been using for native and web 4k intros. Has the advantage of a gui, useful for letting the musicians do the music. Has the disadvantage of generaly sounding overly simplistic. Great for simple pads and melodies, but that has all been done before to exhaustion.
3) ahx replayer, a javascript replayer of the famous ahx amiga sound format. Has the advantage of a well tested tracker gui and established format. Great fun for chiptune / oldschool fetishists. Has the disadvantage of the replayer being unstable and relatively large in size.
4) jsmodplayer. Has the advantage of the musician being able to use a trackers interface to compose the track and the replayer been around longer then the other options so more likely to be something stable. Has the disadvantage of easily getting too big in size if the musician is careless with selecting his samples and patterns.

In the end we decided to go for AHX. Kaneel felt motivated to try some oldschool chiptune sounds despite having had a little trouble installing the amiga emulator and learning the tracker. I had to crunch any of the players anyways so as long as it sounded good any of the options 2) 3) or 4) would be ok. The choice of AHX had it’s drawbacks: mild-high learning curve to learn the format, it’s replayer actually emulates some amiga opcodes and can be quite unstable when you’re trying to debug things in javascript debugger. But it had sound support for both the webkit audio and mozilla sound api, which is nice, the more browsers supported the better.


tpolm style

1 week before the event we started having some test tunes we were both happy with. We did a couple of interactions of syncing effects and reworking the track a bit. Unconsciously we morphed the original haterztro into something more TPOLM like.

We tried to follow a few basic TPOLM guidelines:
1) being informative
2) featuring tunnels
3) greeting TPOLM
4) being short and to the point

Information on Parsley was added. Unfortunately we had to cancel the second point of compliance with TPOLM technology guidelines. Even though we actually had a tunnel effect working, it was running in much too low framerate to be worth releasing. Greetings featured TPOLM. We focused on the theme keeping it short and not boring.

So the guidelines were more or less followed, further consultancy with our vintage superhero Antti “fthr” Jadertpolm confirmed the authenticity of our alignment. We spent some more iterations polishing colors and lyrics.



At some point in time i was spending a bored evening and checked flight prices through ryanair to Paris, it was quite cheap to go from Porto, which i would be visiting at the time, so i booked the tickets on impulse. From that point on i really had to finish something decent to present at the event despite starting to run out of time.

Then, suddenly, just a few days before the event, i heard of a planned air traffic controlers strike being announced for the dates of the event. Confirmed the clash at the Ryanair website, they only mentioned to stay tuned for more information. Unsure if the flights were still flying i carried on polishing the intro with the help and consultancy from kaneel and fthr.

Then, just as suddenly, Portugal lost the semi-finals match of the euro to Spain.

Then, even more suddenly, the air traffic controllers strike was canceled and all flights were announced to be back on schedule. Hooray! The plan to become hopsters in Paris was reinstated once more. I informed the family, swapped meet up information, set my alarm clock and packed my computer bag to go to Paris the next day.

At this point the intro still had some small things needing polish and we were deciding between an easter egg secret part or adding some vector graphics to fill up the remaining space of the intro. We had 500 bytes left to fill up with something.

I met up with Kaneel on Friday afternoon after a long travel without food and we babysitted his daughter for a while, then went shopping for beer and took her for a walk in the park before another party visitor and the babysitter showed up. The afternoon was going by quite fast, the beers also, and we hadn’t even made it to the partyplace yet. But it was now just a couple of metro stops away! We exited the metro at Bastille and found our way to ISART, the partyplace.

Party coding

Upon arrival we immediately met some other foreigners and instead of working we continued our hopster beer adventure through the night. After too many beers we finally decided we should probably try to get the intro finished instead of just getting drunk.

We only needed to fix some syncs in the greetings and add the coat of arms graphics, should be easy to do. Right?

Getting a place to setup was easy, everyone was watching a screening of Moleman 2 while we wrestled with the WiFi… It was supposed to exist but it didn’t. We needed internet to convert the SVG into canvas code, so we bothered the organizers. After a few hours and a few more beers the internet was working again and a converted version of the SVG was now in place. The intro had just bumped from 9k to 12k. Let the optimizing begin!

Kaneel was playing demo VJ with the big screen while i tried out a few optimization tricks. First manually removing the weird animation junk code from the svg conversion. Then removing some decimals from the bezier curve data. Then removing all decimals from the bezier curve data. Then removing some of the bezier curves themselfs. Just had to make sure the quality was still acceptable.

At some point Kaneel had to leave for home and i took the wonderful opportunity to get some food. Returning to the partyplace most of the people had already gone to sleep. Our intro was still at 11k so I carried on optimizing some more. Next step was removing functionality from the AHX replayer that wasn’t beeing used by the track and hacking some functions to generate data instead of using the lookup tables. Still too big.

Compress me beautiful

Re-watched p01’s talk on creative coding and size optimization to remember a few tricks. Replacing all Math.floor calls with 0|, dirty trigonometry, function hashing, etc. Function hashing called for some more wrestling with closure compiler to get the intro working again.

After a long night of trying several updates and reverts i was still 500 bytes too big. Trying out JsExe instead of PNGinator would give some better results but still always 40 or 80 bytes too big from the 10240 limit.

I started comparing the code directly with the closure compiler version. I noticed that some optimizations i would do would size down the closure compiled version significantly but have little impact on the final .PNG size. This can be explained by common compression entropy, the compression takes heavy advantage of repeating elements, so the more and longer repeats you have the better it’s ratio of compression. When you replace the long repeats for smaller versions you are doing work the compressor would do, and probably doing it in a less optimized way, so you end up losing compression ratio, making your optimizations worthless.

Ofcourse i could just cut the graphics out of the intro and go to sleep, but that would be cheating! I took a couple of breaks to refresh myself and went back at it. But i was still at a dead end, trying some new desperate hacks and the best result i could still get out fo JSexe was 10260. I decided to bug Gasman, asking for his opinion if i should keep trying to optimize the closure compiler to the max hoping that eventually the final size would start also decreasing or try to rearrange data in hopes it would pack better. Gasman took a look at my code and paused at the AHX track loader. I been loading the track by including a base64 encoded version of the track and decoding it on load. Gasman had the idea to replace the base64 with an url encoder. The string would no doubt be longer but the PNG compression should compress it better, also we would be able to replace the 2 functions related to the base64 utf8 decoding with an eval().

Gasman went off to write a binhexjs.rb while i forked the sourcecode and aimed for some heavier closure optimization. Half an hour later we merged both our efforts and the final size was now around the 9700 bytes. Success!

Idling with style

Entry finished and submitted! Now all that was left was one whole day of doing a bucketload of nothing.

Saturday morning was completely uneventful.

Saturday afternoon had some interesting talks, most of them in French sadly enough for us poor foreign visitors. Went outside for some beers with old scener friend Flod who was briefly visiting the partyplace. Bastille was of the centers of the Parisian gay parade happening that day, so everything was packed with colorful people and rainbow mayhem. We eventually found a bar and after a couple of beers headed back to DemoJS.

The rest of the afternoon was spent socializing with other foreigners and making some new friends. Mostly drinking beer, explaining the scene to a new musician and waiting for the compos to start. DJ Pie was playing a set but we somehow managed to miss it.


The organizers came outside to warn us the compos were about to begin. “Everybody in, everybody in, the show is about to begin.”

First up were the 1k. Plenty of entries, most of them without music but still mildly interesting. The last to be shown was Matraka, a joint work of p01 and 4mat, blowing all the competition into second league.


Next the 10k, featuring only 3 entries. The first was Reborn by tmp & Adinpsz, a simple terrain generator with some 2d trees, nothing fancy but people seemed to like it. Second up was a co-op by Rift and DSS titled mwwnwormer, a dark side of the moon raytracer with some music using jssonant. The graphics looked pretty good and it quickly became clear they would win the compo. Last up was our entry, Parsley State by TPOLM, there were a couple of bugs showing, but people didn’t seem to notice and veemently applauded when it ended. I was pretty confident we would get second place at this point.

Still left to show was the wild compo, only 4 entries, one of them didn’t really work due to an unexpected update on chrome. The best one was clearly the Turbo Out Run clone game, even if it didn’t have sound.

Last but not least was the demo compo. Not many entries, only 5. A couple of compo fillers and fast made prods. The most polished entry seemed to be BIGintro by The Matadors who oddly to me ended up placed 3rd in the final results. The democompo winner being Burnt by Games From Mars, which was nice but clearly rushed for the compo.

After a quick online voting session final results were presented with a little closing ceremony. We were granted the last place and asked to come on stage. 🙁 I thanked the audience with an important message from the moomin: “Remember to use more parsley when you cook!”


The remaining night was dedicated to uploading the entry online, decompressing and getting some sleep. Next day was travelling back home day. Spent some airport time getting started on this making of report and figuring all the things i had left to do when i arrived home.

Was happy to notice people on pouet seemed to be thumbing up Parsley State. Nice not to get hated on a new release for a change. Even though we still got last place in the compo.

Next day i uploaded the source code to github. And finished writing this report. Please tweet or mail me some comments if you have found this post useful in some shape or form. 🙂

Making of Cyboman 5

Monday, May 21st, 2012

Dealing with advanced technology from the future can quickly become complicated, with this in mind the planet of leather moomins intergalactic conspiracy empire has emmited this special making of report of their latest hit single Cyboman 5.

Step 1) chose your compo wisely

If you are not aware where to find running compos you should consult the internet and for example follow for a listing of recent events on the so called demoscene, several competitions will be provided for you.

For Cyboman 5, the Stream Tiny Intro Compo was selected as target. Once your target is obtained you can have strategic advantages by consulting results from editions of the event and procuring information on what other groups are planning to develop. If you do a careful analysis you may be able to obtain several bonus points and achievement unlocks.

Step 2) select your weapon of mass destruction

To ensure world domination you need to have a weapon. several mixes and dance tracks have been put together in the past, but none can outrun or equal the power of megablast. you should refrain from selecting a weapon of mass destruction you are not very familiar with. this might cause you to waste time dealing with language and operational logistics rather then focusing on the actual extermination of all resistance.

In the case of Cyboman 5 our weapon of mass destruction was javascript canvas. Most players seem to prefer the abuse of shaders under WebGL, or facilitate their byte crunching work with native toolchain compilers. Our objective with Cyboman 5 was to push javascript native capabilities (no WebGL wanking), this ensures higher machine and browser compatibility at the expense of some mindcandy tricks. Finding a creative escape to non sensical limitations is also part of the planet of leather moomins survival ethos.

Step 3) effects

Having a wide range of effects available at hand is always essential for a successful world domination attempt. The typical TPOLM world domination consists of tunnels. I wanted to escape that cliché and focused on doing basic 2D canvas experiments for later complexification.

I developed a total of 10 different effects before even considering a concept or finding a music for the entry. Simple experiments including shape animations, rotozoom, Generative color complementors, repeating text to be used as texture, motion blur, plasma filters, alpha transparency tests, etc.

Step 4) music

Music is one of the key elements of a successful world domination. Good connecting music makes or breaks an entry. Since i was aiming at the tiny intro competition, the most simple way to have music would be to code some.

Luckily for me several experiments with tiny audio code have been done and publically documented. Most of them based on the work of Viznut and a certain thread. Online javascript players provided a platform for testing ideas and some sourcecode ready for crunching.

Additionally to the tiny music player a speech synthizer was also used, mostly copy pasted from work of p01.

Step 5) concept

One trick ponies are usually boring. And most tiny intros are usually one trick ponies. Real world domination comes from using your restrictions to break this cliché and do something else.

So after a few audio experiments a concept was developed. Something overly energetic, ahead of it’s time, with a technologically advanced mentality. Counterpointing the technologically advanced we have as comic relief the unavoidable fact that it is running on a mundane platform and based on simple 2d graphic effects abusing overlays in an over-complexified manner to produce a more murky, raw and industrial visual approach to connect with the sound.

Cyboman is a series of DOS intros from the 90s, done by different groups at different times, all of which claiming to be technologically advanced, some taking it more seriously then others. A newschool joke sequel to this concept felt appropriate, and so the entry was named Cyboman 5 and introduced as not being titled Cyboman 6.

Step 6) crunching

Crunching your code is the most important part of developing a tiny intro. Some golfing skills are required but not strictly mandatory. For this intro the original source code was 11k long. A few simple size optimizations made, plenty of room to optimize further. A minified version was then packed with UglifyJS to make the code 8k big. Still with plenty of room for further optimization, UglifyJS is good and fast compared to other minifiers out there but still leaves lot of room for manual optimization.

At this point you could pack your intro further, either manually or with actual packers that eval the packed string to self-execute your packed code. But recently there has been some work by Daekan, p01 and Gasman on a PNG self-executable which i wanted to give a try. So i gave Gasman’s pnginator a go and managed to have it down to 4k without requiring much further manual optimization.

Step 7) presentation and aftermath

Last step on our journey for world domination was to deliver the entry and make sure it got played properly. The submission system as Stream 2012 wasn’t actually working, so i resorted to mailing a link to the organizers and confirming they had received my entry before the compo started.

Entry was played halfway in the compo, music volume too low, mild clapping at the end. Was abit disapointed that people didn’t seem to really get into it at all. A few other entries played after mine and got a better public response, so world domination became a dimmer possibility. Personal feedback from other attenders was positive, ranging from borderline indiference to best of compo.


sourcecode @ github

Article about fruit

Friday, September 23rd, 2011

Considering TPOLM’s long term strong relations with all sorts of mothers, we have several times been reminded on the benefits of fruit towards an healthy nutrition. This is especially important on the dogs days, and not so relevant during the year of the dragon.

a demolink article about fruit

Fruits have long since been used to describe the innuendo behind the best fullscreen effects of the demoscene. Static noise and the tunnel effect.

As a bonus, fruit also goes well with icecream. In some countries, such as the USA, the term “ice cream” applies only to a specific variety, and most governments regulate the commercial use of the various terms according to the relative quantities of the main ingredients.

In several countries of the world fruit cake is worshiped as god. And you know what they say about fruitcake: “Reality is like a fruitcake; pretty enough to look at but with all sorts of nasty things lurking just beneath the surface.”

Despite what some people believe, salmiakki is not a fruit but a variety of liquorice that gets its name from the relatively large amount of sal ammoniac (Latin traditional name for ammonium chloride, a salt of ammonia) that it contains in addition to the liquorice root extract, sugar and starch or gum arabic that constitute regular liquorice. Ammonium chloride has a spicy taste that vaguely resembles that of sodium chloride (table salt) with a hint of ammonia smell. Salty liquorice does not necessarily contain any sodium since salt refers to the salt of ammonia and not to table salt (sodium chloride). Although some types of regular liquorice may also contain a small amount of ammonium chloride, salty liquorice can contain up to about 8 percent of ammonium chloride. Moreover, the salty taste is typically less masked by a high sugar content compared to regular liquorice.

And neither are apes. Watermelons are considered fruits, pepos to be more precise, characteristic of the Cucurbitaceae. The watermelon fruit, loosely considered a type of melon – although not in the genus Cucumis – has a smooth exterior rind (green, yellow and sometimes white) and a juicy, sweet interior flesh (usually pink, but sometimes orange, yellow, red and sometimes green if not ripe).

Thank you for your patronage. Our ninjas salute you with a pineapple fruit slash.

Article about jazz musicians

Friday, September 2nd, 2011

On the matters of jazz music and soul companion, TPOLM has long been known to provide a steady influx of diverse analytical material where to derive your sacrificial exertions from.

a demolink article about jazz musicians

As we have often mentioned, you can never have too much information. So it is invaluable to add that there have never been any TPOLM demos featuring jazz musicians or any of their relatives. As opposed to demos about ninjas.

You might be aware however that Hungarian entities, not in any direct way related to TPOLM, have commited such acts in the past against jazz musician idols such as Miles Davis. We hereby dismiss any and all accusations that these people are in any way related to acts of women or child abuse.

According to promiscuous acts of self-loathing and miss-directed hatred, jazz musicians have often been considered neglected artists in search of an existencial paradigm they not yet possess. Possessing virtual objects such as cubes or donuts can bring a strong sense of inner satisfaction that can be, for some people, extremely hard to experience through other activities. Yoga and deep psyche binding methods have often been used to catalyze the phenomena with mild success.

Other important facts to retain on jazz musicians is their pronounced fetish for black and white aesthetics, known to provoke secret intelligence responses in different conglomerates surrounding the french riviera.

For further reference on these and other issues concerning jazz musicians please consult the official TPOLM crisis manual or contact your local Halme webmaster. In the advent of further incidents, TV static has been known to help reduce dissemination and contain the spread to just your neighbours and friendly pets. Whatever you do, please don’t make a mess of our murals.

Article about the feds

Friday, August 26th, 2011

TPOLM intergalactic legend killers, in association with redhead baguette industries, is proud to bring you, a new and revolutionary demolink article entitled

a demolink article about the feds

The fed is known internationagalactically as a mythical creature riddled with pain and distrust to your fellow creative personas. Not often have they been spotted spotting down the spotless junkie as have they also been known to torture and distraught lost kittens. Arabs are not to blame for this.

Many other occasions have the feds been known to also pursue military state surveillance on regular consultants of penguins and lettuces alike. Although cabbages are regularly consumable in soup, penguin soup is not advisable for children under the age of 15, 12 or even 8. Most children under 8 should also avoid sharks, elefants, tapirs and stroganoff cocktails.

Under any circumstance should children be allowed to play with fire or plastic bags unsupervised. Long exposure to plastics has been known to affect the endocranian development and is heavily documented to prevent prepubescent migraines in young males and females alike.

For further information on proper fed supervision please consult your manual under section VI paragraph 6: “there have been mixes and dance tracks put together in the past, but none can outrun or equal the power of megablast”

This article has not been certified by Halme and may contains vague references to bondage with a preying mantis, sharks in space, nigerian chilinuts and/or nokia.

Article about your mother

Tuesday, August 2nd, 2011

TPOLM international galactic conspiracy is proud to to present to you

a demolink article about your mother

Mothers are important. they give birth to babies. and sometimes they nurture them too. so you should love your mother regardless of what they are. like your mother loves you. TPOLM has known this for many years.

If you are a mother on a beer terrace you might get scorned by local drunkards for bringing your baby into that kind of environment. even while drinking a cider and eating a pizza in a corner far away from everyone else. at 4pm.

It is also important to notice that all mothers are the best mothers in the world. except for the bad mothers. which there are none. except when they are.
please do not confuse this with vague pulp fiction references by orange.

Mothers are also a good source of conjugated linoleic acids. According to studies that targeted its effects on the belly firmness and fatty acid composition of genetically lean pigs, the supplemental CLA usage had a positive effect on the improvement of belly firmness and may provide a nutritional solution to carcass fat and belly firmness problems.

Further studies have proved that mothers have a rapid response to all sorts of children complaints, including sex deviations, sleep deprivation and different kind of drug related issues.

This article has been certified by Halme and contains no references to bondage with animals, dolphins with lasers, south-african pedophilia, hot mustard or routine checks to endochondral ossification complications.