A couple weeks ago I released mobile version of my project APEXvj to stores. It’s made with Adobe AIR 3.2 and it works in iOS and Android. Since then I’ve been collecting feedback, reacting to those and continued to work on get it solid as possible.

The first release was in many ways total disaster and in other hand a priceless learning experience. This post will cover that and explain the design of gadget. I would also want to make one point (oh no…). This post covers many topics so if you find one boring just skip to next. It’ll also be pretty safe from hardcore coding stuff instead there’s a lot of pretty pictures :)


Epic fail on launch


I have two devices. iPhone4 and iPhone3GS. So obviously I started to design to those. Later I got iPad2 from a colleague for testing. I didn’t have any Android devices until the UI was pretty much done. Later I got Samsung Galaxy 2 II from a colleagues husband. Nice device, but not very good for testing. It’s extremely fast and screen size vs. resolution is too close to iPhones. Anyway I had a feeling that I should get this out soon as possible and everything pretty much worked so I released apps to AppStore and GooglePlay.

I heard that first 72 hours is somehow crucial and one should try to get as much traffic as possible during that time. So I sent emails to all APEXvj desktop users who gave permission. There was something like 5500 of them. Also drummed about the release at Twitter and at APEXvj Facebook page (~8500 dudes). All fine so far.. Then I started to get a lot of emails about the app isn’t supported on high-end android devices. Like on Galaxy S II that was my test device. :E WTF is this?? After way too much time I found this post from @polyGeek. And it says: In the -app.xml manifest file there is a setting for uses-configuration android:reqFiveWayNav=”true”. If you leave that set to the default of true then when you put your app in the Android Marketplace it will not show up for people who have a phone without a trackball – most of them. YEAH AUTS!!

Apparently that’s pretty common newbie mistake. So put this rule deep into your memory: Make sure you have

uses-configuration android:reqFiveWayNav=”false”

in your application description xml.

So if a lot of people sent me email about it didn’t worked for them it means that it didn’t work for shit loads of people. There were other issues as well. There are currently 693 Androids were APEXvj should work. This means a lot of different screen sizes and resolutions. I didn’t have this covered in first release. Not at all. For example layout elements didn’t adjust to higher resolutions. This caused UI to have too small hit areas and text was way too small. Also for example HTC Sensation has a pretty much same size screen then iPhone but resolution is huge 540×980. Also the touch works differently. Apparently it’s very sensitive for touches. Not like iOS that ‘knows’ when user is touching vs. swiping. This caused a problem where user couldn’t press any buttons. Fixed it when Eugene kindly pointed it out. With more test devices I could have avoided all of this, but like I could buy my self a stack of Androids…

Everything is now pretty much fixed and if I found more issues I’ll fix them right away. Updating to GooglePlay takes about an hour. Gladly the iOS version worked pretty well. There the update phase is one week. Good thing it’s my project so no harm done to others :)


Returning to graphics design



I started my digital journey as graphics designer. It was the beginning of 2000. At work I did layouts and flash animations. On my free time I was quite actively creating photoshop pictures. I remember those outstanding flows I had with these pieces. Here are some from that period. They are quite naive, but so was the designer back then :) Anyway they were done for the right reasons. What do I mean about ‘right reasons’? I’ll get back to that later.


There are more at cosmos.

When I was at military one ‘brother in arms’ thought me a for-loop and I was hooked on coding. I realized that one day I could make those pictures moving. So I focused on coding for many years. At work I always had outstanding graphics designer/AD working with me. I haven’t done layouts for years. Until this winter I felt need to do that. First I redesigned this blog and now the APEXvj mobile. On APEXvj I cannot take full credit since I used some of the elements originally designed by Jani Länsimäki. Never the less there are also something mine. Also this was new field for me since I have never designed anything into mobile environment. I have coded, but not designed.

UI is a set of playlists that can be changed by swiping. Here are ‘this week top 200 from SoundCloud’- and ‘Search’-view.

Some of the song can be downloaded and they are collected to ‘Downloaded’-playlist. Also user can connect with SoundCloud. This gives ability to set song as favorite.

Once authorization with SoundCloud is done user see their favorite and own songs in separate lists.

Once user tap a song it starts to play. After slight delay view animates down and visualizations start. If user double taps song just starts to play. Song name is replaced with waveform that indicates load and duration. User can change the position of song by tapping the waveform. Currently playing song is written under the prev/play/next + visuals controls.

When song is playing a info-icon is set over the waveform. By pressing that user can read more info about the track, share song, favorite and possibly download it. Download is confirmed with a popup. If user decides to download the progress is shown in popup. This is a performance thing since downloading a song takes a lot of cpu.

User can share a song to twitter or copy url. Copying isn’t possible with all devices, but better save then sorry. That could be changed after future software updates.

By pressing the shared url user is taken to page that shows song title and user who uploaded it. By pressing the play-button APEXvj application is opened and song is added to ‘Shared to you’-list. After little delay the song starts to play with visualizations. Delay is here so that user knows what is happening. ‘Shared to you’-list shows 50 latest shared songs. Users can mark songs to their favorite list and download list if feels so.

The position in view row is indicated by dots at top of view. Every list has maximum of 50 tracks shown at one time. After that there’s a pager where current page is inside large circle. Previous is at left and next at right. Left circle also leads to last page when viewing the first page. This show instantly how many pages are there. User can move to visuals by swiping down or tapping the logo-circle. Android users can kill the application by touching the quit X at top right corner.

User can return to UI by swiping up. This logic is informed in different places. When user tap a visualization view a settings panel opens. User can adjust ‘cut frequency’ which is in other words: “How tight the camera cut phase should be?” Also user can choose render quality and pick a color scheme.

By default user get two visualizations. Six more can be bought from Eye Candy shop.

In first run user can preview the visualization for 10 seconds. After that preview time is smaller. After preview they are encouraged to buy visuals. Eye Candy Shop has button that opens an in-app purchase dialog. It takes about 5 seconds to buy a visual-pack. After all sort of blood suckers I get about an euro per visual-pack minus taxes.

I’m planning on creating more visuals in the future. I think I’ll have few days break though :)

A couple days ago I went to toilet with camera… nothing like that! I filmed the app in different devices. It would be nice to expand this collection of ‘APEXvj running in different devices’. Anyway here’s APEXvj in Samsung Galaxy S II.


Sorry about the horrible quality. My camera is not top notch and that noise at background is a washing machine. Anyway here’s APEXvj in iPhone3GS.

Lastly iPhone4 which is awesome test device since its performance is horrible.

There it is. If you have more usability issues or some other concerns please let me know so that I can fix them.


What about that thing doing stuff for the right reasons?


The scientific fact is that universe where we live in is about 13.7 billion years old and it’ll continue to be at least next 38 billion years. My life is so extremely small piece of that. So small that it can be called nothing. This fraction of energy can be seen either significant or insignificant. Depends on point of view. In most 99.9999999…% of cases it’s insignificant. If I had a more enlightened mind I would consider it also meaningless. With that enlightened mind I could trash my selfish motives, leave all worries behind and just go with the flow. But I can’t. I don’t have that sort of mind… yet.

I want to be free from problems caused by ego at some point. Ego causes envy, low self-esteem, fear and leads person to vicious circle of never been enough. It’s ego doing its stuff when one seeks respect from others. This is all personal growing stuff, but lately I have come to realize that ego might be doing its devious works on my codings.

When I was doing those photoshop pictures there wasn’t Twitter. I had no place where to show them. I did not measure ‘success’ in RT’s or visitor counts. Did them just for my self. Just started to build something, fall into beautiful flow state where everything was easy, interesting and felt right. Afterward I was like “whoahh what happened? That was awesome”. These days I do get flows but I also always check if people RT my posts and even feel a bit sad when there’s only few of them. Shit. Social media is turning me into a narcissist idiot.

Denying ego issues is part of its scam. If I look back about my latest codings I see some dubious signs like “Look 1.4 million particles (in other words: Look I have skills to do that!)”. I have created stunts. That’s bullshit and not why I want do my stuff. Gladly I open sourced that code so that I don’t feel like complete douche bag now. Anyway it’s worrying.

For me the right reason is exploring my inner, learn and enjoy. Wrong reason is to seek for cheers, respect and all stuff coming from outside to feed my ego.

I want to get to right path again. So I think I won’t be releasing future codings right after I make them. I will wait for a week so that I get bored on them or might not release them at all.