Pages

Wednesday, June 1, 2011

A thousand comments later

I am a perpetual noob.
Funny? Yes, but I'm actually referring to the fact that I get bored easily with the stuff I already know and always get distracted into learning new things. One of these new things is Android development. I have been poking my way around the android platform for almost 6 months now. It may seem like a lot but all the poking was done during short sparse bursts of spare time so it doesn't add to a lot of work hours.
It's not a lot of work hours but it's a lot of work.
I wrote Fleya as an experiment to test the limits of my Android phone and because I needed a pet project to lead me into the Android world.

Google tells me that the market can install Fleya to 400+ devices. That's a lot!
Even if some of those devices have the same hardware but different release names (think i9000 and i9003) that still leaves a lot of them. This large number of devices means there are lots of implementations of Android and with that come compatibility issues.

Samsung has its own build of Android which moves some stuff around under the hood. All is great until things start to fall apart. The problem is that sometimes, apps lose access rights to their own preferences. Even to the default settings. This manifests itself as apps forgetting your preferences, your username, the last level you played and your high score, etc... If you've ever seen this happening, there's a pretty high chance that it's not the developer's fault. This is a very annoying problem because it's the developers that get the blame.
I fell into the same trap with a recent update. Although I made sure that if settings are lost, the app reverts to defaults, I never thought that accessing preferences could become such a problem that even the defaults would be screwed. This caused Fleya to not only forget settings, but crash in certain situations. I don't own a Samsung device and never got to see my app crashing. I only got reports in the market.
A crashing app crashes the rating.
It sounds obvious but it's even worse. Users will encounter a crash, leave a bad rating and then uninstall. The result is that the bad rating stays there, with very little chance of change because the average user won't have the chance to see you fix things.
By the way, I managed to fix the crash, so you should update to the latest version of Fleya and change your bad rating to a 5 star hint! ;-)

Remember when I said that I'm working on this in my spare time? Nobody is paying me to build and maintain Fleya. Another new thing you may notice in recent updates is ads.
Ads keep things free!
I know ads can be annoying so I did my best to make them as unobtrusive as possible.
To display ads in a mobile app requires a permission to access the internet. When asking for this permission, Android calls it Full internet access. OMG, FULL internet access...
For some reason, some people don't understand that there's no other kind of internet access. You either have it or you don't. Try to remember the last time an app asked you for any other kind of internet access and you'll believe me :)

A thousand comments later, there's something I never expected in the beginning:
It's very hard to get useful feedback.
At the time of writing this post, Fleya is approaching 90000 downloads. While it's true that at 3:00 AM that cold night in February when I published the first version on the market I never expected so many downloads, I also thought that by 10k, my inbox would be overflowing. Well, it's not, but still there are some people, to which I am very thankful, which took the time to write.
Because I am building it and know how things work under the hood, I have no idea if the interface is intuitive enough. Friends are useful but to a point. When they get the hang of it, they also go blind in terms of intuitiveness. My goal is to build an app intuitive enough that it doesn't need a help screen or tutorial to use but still complex enough to keep you from getting bored.
Since I recently discovered Google Moderator, I decided to use it to get some feedback.
Try it out: http://www.google.com/moderator/#16/e=8bcb1
You can submit ideas and/or vote on ideas already submitted. I'm not lacking ideas, I just want to see what is the most popular one so I can start working on it first.

Enjoy!

9 comments:

  1. Even my 5-month-old daughter has taken a shine to Fleya - be it on my phone or tablet. Thought I'd share a vid: YouTube

    Thanks for entertaining her!

    ReplyDelete
  2. I'm glad she likes it :)
    She's so cute :D

    ReplyDelete
  3. I love your app !
    Any chance you post some code or tutorial on how you did that ? I'd like to do some fluid simulation in 3D and would welcome some examples...

    ReplyDelete
  4. I really liked your app, and I have no issue with you using ads in your app, you have to make money too!

    However, you should consider using another form of ad other than the push notification type. Those are extremely intrusive and appear even when I'm not using your app!

    One comparison is this: If I don't want to watch commercials on TV, I don't have to watch TV. Push notification ads are the equivalent of commercials that continue after the tv has been turned off.

    I don't see ads from godaddy.com after I leave their website. I don't see commercials when the TV is off.

    Ads that appear as notifications are only going to hurt your apps rating.

    After I found out that it was your app causing the notifications, I very unfortunately had to uninstall it. Were you to switch to in-app ads, or to a paid version, I would gladly reinstall!

    Thanks for your work!

    ReplyDelete
  5. Absolutely spectacular work. I'll admit I dreamed of writing this app, but i'm happy to enjoy yours. Gotta ask though - what method did you use to solve the Navier-Stokes? Finite difference? Finite element? Fourier series? On my Samsung galaxy s2 it runs so smoothly I was actually slightly shocked. If you want a suggestion: try swirling other things besides solid colors. Images! video!

    ReplyDelete
    Replies
    1. Hi Matt. Thank you for this great feedback :)
      When I first started to work on Fleya, there were a few apps that attempted fluid dynamics on android. I remember Plasmeriser and Plasma puddle, maybe one more but I forget the name. At the time, I had an HTC Magic (MyTouch3G) phone which ran these apps at a snails pace so I decided to try to do better, and I did. My point is that you shouldn't give up on "writing this app" just because I already wrote Fleya. You may even do a better job :)

      I started out by experimenting with Jos Stam's code on realtime fluid dynamics (really great work BTW) and tried to write as optimum as possible, always measuring the impact of each change I made to it. What I now have is a not very precise fluid solver but it's fast enough for a phone to handle.

      Swirling images or video...now that's a challenge :) Actually the absolute first version of Fleya that I ran on a phone used a photo for the simulation. It swirled around a 320x480 grid of true color pixels at the blinding speed of 0.3-0.5 frames per second :) The current engine should do a better job but would it be enough for realtime?...probably not. However, the current engine only uses one CPU core for the heavy lifting and no GPU, so there's room for improvement...the hardware on these newer phones is amazing so it's possible.

      If only I had the time...
      Cheers!

      Delete
    2. Hi,
      I am writing similar application for Android. I'am actually halfway through and I was shocked today to see your app on market - I looked for similar apps before, but somehow missed yours. Now I see that I'll have to do better than I initially planned to find lots of users. :)

      You did great job on optimization. I also started with Stam's implementation and I still haven't done many functional changes to it - I feel every time I remove something / decrease number of iterations, fluid looks much worse. I currently run my app in solid 35 frames with 128x64 fluid resolution, so when I saw yours with max. resolution of 300xsomething (I counted) running quite smooth on my tablet, I thought that you must be using multiple cores, but apparently you're not. :) I'm planning on using NEON for heavy inner loops and multiple cores and I'll probably need them both done well to reach the resolution your app is running at.

      Finally, congratulations on writing such a successful app.

      Delete
  6. Just use a black and white swirl as a transparency mask on an image/video layer. It will look awesome and only add a single rendering step to your current blazing fast code!

    Maxed all my settings on my Galaxy Nexus and still 30+ fps. Let me know if you want some free coding collaboration on this, I'd love to contribute to it!

    ReplyDelete
    Replies
    1. Actually, I've been experimenting with using images as the fluid base and swirling them around. No transparency mask, I'm using the image data directly. To me it looks great but it still needs lots of work before a release.
      No video swirling yet but I've also managed to use the live input from the camera as a source instead of a static photo. It's pretty weird :) like trying to use your phone inside a dream.

      This time, I'm on a Galaxy Nexus as my main device and it's a lot smoother than I initially expected. It also runs OK on a Galaxy S but that's the lowest I've tried.

      I'll try and post some previews soon.

      Delete