Snowy Scenes Download Frenzy

Here’s an interesting graphic:

What makes it interesting you might be asking? Well, I released the application on 16th December, and from that point on it was getting about 100-200 downloads a day. But then suddenly on the 26th December the numbers shot up to 2000+ a day. The number of comments and ratings also shot up. The android market home doesn’t seem to have any way of viewing historical data so I can’t do a graph, but if I could it would look a bit like this:

The simple conclusion must be that people got shiny new smart phones for Christmas and are now searching around for apps to install. I’d be interested to know whether that applies to paid for apps, and whether it applies to all kinds of apps or whether the spike is due to Snowy Scenes being a) a customisation application (the kind of thing that makes your phone look pretty) and b) a winter themed app. Anyone else with published apps got any interesting stats? I’ll be keeping an eye on the numbers over the next few days to see how temporary my download spike is.

Another interesting change was the review comments. At first they were overwhelmingly positive but I’ve now had a few that complain about the app not appearing in the applications list. This is because you have to enable live wallpapers via the settings, but to prevent any more negative feedback I’ve uploaded a new version that shows an instructions page for configuring live wallpaper.

The new version also includes a ‘move to SD card’ option for the app and the ability to save the individual images to your SD card if you’re interested :)

Edit: After the stats refreshed today it’s gone up to 12900 downloads, so the spike isn’t over yet.

Posted in android, programming, wallpaper | 2 Comments

Snowy Scenes v0.4

I’ve uploaded the third public version of my wallpaper app (v0.1 never made it out). The app now got a preview gallery in the settings when you’re choosing the backdrop which took me a lot longer to implement than I’d hoped (the android UI widget system is a complex beast, if anyone knows of a good book on the subject I’d be interested to read it :)

It also has some new photos – this weekend we’ve been pretty much snowed in so there was plenty of opportunity for capturing snowy photos. I managed to go out with a flat battery in my SLR, but luckily had a compact and my phone on hand to act as back-ups, phew!

In other news, it has passed the 500 downloads mark and has an average rating of 4.78 stars out of 5. Let’s see where the new patch takes it…

Updated screenshots:

Posted in android, programming, wallpaper | Leave a comment

Snowy Scenes v0.3

So, my wallpaper got 74 downloads in the first day, admittedly it’s free but that’s not a bad start (I picked up two 5 star ratings too, but both from people I know, so I think that’s cheating).

Today I’ve uploaded a new version with better snow, a blizzard mode (if you really like snow!), wind turbulence and it’s compiled against android 2.1 so it runs on older phones.

Interestingly, all the unofficial android marketplace websites have picked it up (click here to see one), and it already appears on a Google search. It’s amazing how much automatic web generation happens these days, and how fast. The sites are still pointing at the version I uploaded yesterday but I only uploaded the new one a few minutes ago, I wonder how long it’ll take for that version to appear.

Christmas party tomorrow night so no more updates until the weekend. I need to decide what my next feature will be -perhaps some experimentation with OpenGL to speed up the rendering.

Posted in android, programming, wallpaper | Leave a comment

Snowy Scenes – Android Wallpaper

Wow, I did it. I’ve published my first Android application. It’s called Snowy Scenes and it’s a live wallpaper which lets you choose from a selection of 20 or so background images, which are then displayed with ‘live’ snow floating in front of them.

The photos are all shots I’ve taken, mostly from around Leamington but also a few I took in the Canadian rockies.

It’s a free app. So, if you’ve got an android phone head over to the market search for snowy scenes and let me know what you think (and if it works on your phone!), all comments appreciated. I’d like to know which backgrounds people like, or don’t like, too as the app is currently slightly chunky at 6mb and I’d like to trim out the chaff. I’ve already got lots of plans to improve the snow :)

Here are a couple of screenshots:

Posted in android, programming | 2 Comments

My first Android app

Tonight I attended the midlands igda meet, which this time was all about indie games development. After seeing all the cool presentations by the local (and a few not so local) indie developers I was inspired to try my own dev.

so when I got home I began writing my first android app.Actually, that’s a lie, it’s my second app. But my first app just printed “hello world” on the screen so I’m discounting that one.

This one was much more ambitious, it draws a side scrolling parallax starfield as a live wallpaper on my android desktop. It only took me one hour and seventeen minutes, and amazingly that included downloading the eclipse IDE, and the android sdk, and installing them both on my laptop along with the usb driver for the phone.

All in all not bad for 77 minutes. Next up i’m going to optimise the point rendering into batches, then add some user prefs for speed, number of stars, etc… and maybe a background pic.

Posted in android, programming, waffle | Leave a comment

Android

Now that I’ve entered the twenty first century and got a smart phone (a HTC Desire HD to be specific) and downloaded the WordPress app from the marketplace I can blog on the move. Whether that actually happens is another matter entirely. Watch this space!

Posted in waffle | Tagged , | Leave a comment

Minecraft Mapping

I’ve had a quick go with a program called c10t which generates maps of minecraft worlds (I tried one call cartograph first but that just crashed) and produced this isometric map of my world:

When I started the world it was snowing, but after discovering that there are no seasons I used an editor to turn the snow off. So the bits I’ve been working on since then are snow free, but I still need to go back and remove some of the snow that’s fallen on my older structures… In fact I might go do that now :)

Posted in games, minecraft | Leave a comment

iteration-time * number-of-iterations = time-to-solution

Iteration means the act of repeating a process usually with the aim of approaching a desired goal or target or result.” (wikipedia)

In programming when someone talks about iteration they usually mean the time it takes to get from making a change to their code, to seeing the effect of that change. At least, that’s how I’ve always thought about it.

For years I’ve been doing most of my development in C++ using Visual Studio. The code base I’ve been working with has been in development for over a decade and contains a few million lines of code. As you can imagine, making a change can be a time consuming business – a full recompile can take anywhere from 10 to 30 minutes (depending what mood Windows is in) and even a one line change is probably going to be 30 seconds by the time the build system has checked all it’s dependencies and linked everything.

Then of course there’s the application start up times. Our application is relatively lightweight compared to some I’ve seen but realistically it’s at least another 20-30 seconds from hitting Run to actually being able to test the feature you’re working on, often a lot more. We build our application as many separate DLLs but we’ve never got to a point where they could be unloaded and reloaded on demand to allow recompilation without a full application restart. Similarly we’ve dabbled with the Edit and Continue feature in Visual Studio but found it to be singularly unreliable on large applications. Often it’ll sit there for minutes before informing you that, sorry, you need to rebuild anyway.

So for years I have cursed the length of our iteration time. Every now and then I get to work on a smaller application which builds and runs in seconds and I imagine how life could be without all that baggage.

Well, luckily for me over the last year and a bit that’s started to happen. What began as an attempt to improve our application by letting users script it through Python has led to a revolution in the way I think about tools development. It turns out that scripting the tools isn’t just for end users, it’s for developers too. A lot of ‘non-core’ functionality is really much easier to write in a high level language like Python, and much faster. Being able to make a code change and see the result pretty much instantly means iteration times are dramatically reduced. And the worries about performance and memory usage have so far come to nothing (touch wood!).

But (there had to be a but, didn’t there) life is never without it’s challenges. Take away the compilation time and the application start-up time and you start to notice the other parts of the ‘iteration’ that you’d never noticed before. In fact for me there was one big one… debugging.

I’d never really thought of debugging as part of the iteration cycle. I knew that I spent a fair chunk of my day doing it but, unlike watching a compilation progress bar, it’s a very interactive and brain taxing process. It’s not like I’m ever sat there watching the debugger and waiting for my turn. But in the shift from C++ to Python I became acutely aware of debugging. Not only did it take up a larger percentage of my time due to the reduced compilation times, it also took longer because I wasn’t familiar with the tools.

I’d got very used to Visual Studio, which has some pretty slick debugging features, and when I went to Python I was suddenly using print statements to debug things again – it was like returning to the dark ages. I wasn’t very familiar with the features or syntax of the language either so debugging took me longer.

Actually ‘longer’ wasn’t the only problem. I’d got hung up on iteration times and forgotten about the other important factor in the iteration-time * number-of-iterations = time-to-solution equation. Did you spot it? Of course you did, it’s the number of iterations. Debugging with print statements, in a language I didn’t know well meant I was making more iterations to find problems that I could have solved in one hit had I been debugging C++ code in Visual Studio. On reflection that seems obvious, but then what doesn’t?

I’m happy to say I’ve become a lot more confident in Python now and we’ve discovered some much better debugging tools than the humble print (Aptana Studio for the win!) so both my iteration times and number of iterations have dropped dramatically. I can go for days sometimes without recompiling our C++ code-base, or even restarting the application, and when I do it feels like walking through treacle…. yuk!

Since getting stuck into Python, I’ve also started to dabble in Javascript, CSS and HTML (more about that in another post), all of which bring their own syntax and debugging tools into the mix. So what did I learn from the first experience that helped me?

  1. Spend time learning the technologies you’re dealing with. There’s only so much you can learn without getting stuck in, because ‘getting stuck in’ is often the best form of learning. But make sure you’ve got books and bookmarks on hand for when you do run into something new.
  2. Spend time researching the tools available to you. In many ways this is both more important and more tricky that the first point. Reference books for languages are pretty comprehensive and if you’ve programmed in one language you usually know roughly what you’re trying to achieve in another. Debugging tools aren’t like that – the variety and quality of reference material is patchy at best, as are the tools themselves, and of course there’s the cost issue to watch out for.
  3. Analyse your iterations, find the bottlenecks, and work out what you can do to remove or mitigate them.
  4. C++ is lame ;P
Posted in programming | Leave a comment

Tree of Trees

We’ve got a multi-player Minecraft server going at work. People have embarked on various projects including a huge pyramid, a replica of the Eiffel tower (although due to a mix up about the map height limit, only the bottom half of the tower) and a giant cavern. My contribution is a giant tree, created by planting trees on top of and around other trees. You only need one block of dirt for a sapling to grow so it’s easy to spread a few of these over the top of a tree, grow some more trees and then knock the dirt blocks out again. Actually, the dirt often gets so lost in amongst the foliage that I can’t actually find it to remove it. I’ve since discovered that my giant tree isn’t an original idea, and that people have built them before – I guess it’s not surprising that more than one person came up with the idea. I’m pretty sure mine is going to be the best though. Currently it stands at just over 40 blocks high, so I’ve got another 20 or so to go before I hit the invisible ceiling. Here’s a picture of it so far:


Posted in games, minecraft | Leave a comment

India Gate

I’ve been working on a few more structures in Minecraft, the latest being a replica of India Gate in Delhi. Here’s a picture of the real thing that I took while on holiday last year:

And my replica:

The angle is slightly different and Minecraft has a very wide field of view which warps things slightly, but you get the idea. It looks more similar from straight on, unfortunately I’ve built a castle somewhat in the way. Doh.

Posted in games, minecraft | Leave a comment