Open source!

I used to host a bunch of my private projects on Unfuddle, which is a great website for hosting personal projects that have potential for growth that are also novel ideas that might generate revenue. In practice though, those ideas tend to be forgotten after a while and die a silent death. I received some e-mails from unfuddle about old projects of mine that were about to expire, so I decided to share them on my github account instead and make them open-source. Feel free to do anything you like with it :)

  • Rankkeeper was an attempt at creating a generic media-rating website à la Anime Planet
  • Goalkeeper was a scheduler/time tracker that was supposed to use the pomodoro technique to help people keep track of what they do. It was a cooperative project that ever really came off the ground.
  • The Android client for Moodlogger is actually a work-in-progress, but I don't have a lot of time recently and other people have expressed their interest in developing an Android version, so here you go.
Posted in Tech | Tagged

New version of Moodlogger

Had a bit of time today and decided to work on Moodlogger for a bit. The new version is awaiting approval in the app store. The new version has two new features:

  • Moods are now ordered by category, and you can swipe up and down to switch between positive, neutral and negative moods.
  • I added a Stats tab which shows you your online statistics.

The statistics tab will prove very useful in the future, as I can update its contents without having to release a new app (and waiting to get it approved every time..). I'm planning to add a map to the stats view as soon as I find more time. It'd be really cool if you could add/remove/change locations to your moods on the fly. Hopefully coming soon :)

Posted in Tech | Tagged

Moodlogger 1.2 released!

Moodlogger 1.2 is now available on iTunes and on! I added a whole bunch of things to the new version, hoping that I can work on improving the website from now on without having to worry about releasing a new version of the app. Here's the most important changes:

  • Offline mode. Registration is now optional (though you'll miss out on all the cool web stats if you don't register)
  • History view showing a list of recent moods (delete-able)
  • More moodset graphics added, hooray for Steven Seagal!
  • Location logging! No stats on that yet but there will be a ton of cool things that you'll be able to do if you turn this on.

Thanks everyone for trying it! I hope the project can really take off after this.

Posted in Tech | Tagged

Devving, Slumping and Trancing

It's been a while since I left my trademark statement of intent on this blog. That's mostly because I don't really have one. I've moved to the UK and I'm currently staying in the Ealing area of west London, in a tiny little room that I found at the last minute. The rent is incredibly cheap, especially for a short stay agreement. The only downside is that it's not a place of my own since I'm sharing it with people. Being a poor sodding introvert who values his privacy greatly, I do sometimes get annoyed at my situation. It'd help if the weather was better because then I could go out by bicycle more often, but water's been dripping from the sky for days on end. I haven't quite found my 'place of mental peace' in the area yet either, which is something I placed high value on both in Japan and in Holland. I wonder if I can even find one in London.

A lot of people I know seem to have trouble finding a job. I don't seem to be one of them. It took me all but one week to arrange some interviews, after which I got several offers. I took one, and I'll be starting work this Friday. I guess the times are good for programmers, especially in big cities. It helps to 'specialize' in less-mainstream things such as Python and Django. Having said that, I found exactly 3 job ads in London for Django developer. I applied to and got offers from two of them. I'm not quite sure what to expect yet, but I'm certain it will be very different from what I was doing before. And that  is a very good thing indeed.

While we're on the topic of programming, you may have noticed on this blog that I've been keeping busy with my personal project named Moodlogger. It's been taking up a lot of my concentration, and for the past few days I've been unable to think about anything else. Once I get really into something I go to bed with it and wake up with it, even when I really should be thinking about more important things (in my case, things related to settling down in London >_<;). Still, there is good reason for me to continue to work on the project. Having an app on the app store that communicates with a server writting in Django is a massive benefit if you're looking to get employed. I'd say those projects are on the same level of importance as a professional career at some company, with academic experience coming a distant third. That's just my experience though.

The mental load finally lifted from me today after submitting the new Moodlogger to the app store. It takes a lot of energy to jump through all the hoops of releasing an app, and I'm glad I can focus on the server from now on. In the new app I focused mainly on getting it to work offline, and added some extra features as well, such as some help messages, user switching and location logging. Location logging just sprung into my head last night and I felt compelled to implement it right away. (Actually, it was just a single word: moodmap, and the idea is still far from reaching its final form). It really sucks to write code for location retrieval if you don't have a device that actually supports it because obviously you have no idea if it'll work or not. Most importantly, the app sends all the important data to the server, even though the server is not ready to handle it all yet. I can work on my own pace on the server and freely change whatever I want without breaking backwards compatibility. The next app release will be a painful one as client-side data will no doubt have to be migrated..

Part of the reason (if not the main reason) why I've been so focused on programming lately is that there is little else to do here for me. I just don't have anything better to do, especially when it's raining outside. Friends are all at work during the week,  and soon I will be too. I'm in a bit of a slump, but I've decided to get out it right now at this very moment, while writing this blogpost. I have no clue what I will do tomorrow, but it won't be programming. I'll have a bit of a cool-down and then I'll get back to work on stuff that excites me. My long-term plans are still wide open, and that's what keeps life exciting. Until next time.


Posted in Tech , Thoughts | Tagged

Sneak preview: Moodlogger 1.2


I am so tired, I wanted to Ctrl-C the image straight from Photoshop into this blogpost...


Posted in Tech | Tagged

Moodlogger Site Update

The moodlogger website now had a minor design change. I fixed the trouble that was introduced when adding new moodsets and moods, and the user stats page looks pretty again.

The main new feature that's been added is that users can now select whether or not they want to share their moods publicly, or keep their stats page private only to members or only to themselves. The same page will also allow you to change your e-mail address.

Oh, and I added a Donate button to the about page. Please give me money! :)

Posted in Tech | Tagged

New version of Moodlogger!

Well, it's not quite released yet, but the updated app is pending review. I added a whole bunch of new moods as well as the ability to select from different sets of moods. I wanted to do a lot more, like implement an offline mode, clarify the registration procedure, add twitter/facebook connectivity etc. But I just don't have the time right now. I made preparations in this version for the offline feature though, and I also made it a whole lot easier for me to release new moods and new moodsets without having to update the app; everything just downloads from the server automatically, meaning it's a whole lot easier now to do incremental updates.

The website didn't change in terms of design, but the back-end was changed quite a bit to support mood sets and the soon-to-be-introduced offline mode. There's still some work to be done, but fortunately I can do it while/after the app's been reviewed, giving me a bit more time.

I've been thinking about starting a dev blog, but since there's precious little to report if I don't have time to work on it, I've decided to keep all the Moodlogger reports here on CFW for now. Hopefully I'll have some more to tell you later.


Posted in Tech | Tagged

Introducing: Moodlogger

As a programmer I tend to be a perfectionist (aren't we all?). For projects that I do in a non-professional environment I always tend to spend a lot of time on getting things perfect. It's also the reason I never release anything. Until now: is online and the Moodlogger iPhone app is available in the app store! This post is not meant to describe what moodlogger is about; for that, just check out the site, and my own moodlogger profile that shows my current and past moods for an example of how it works. But I thought I'd tell a short story of how it came into life.

Moodlogger took exactly one week to develop. I started working on the app on Monday two weeks ago. I submitted the app for review on Friday. On Saturday I spent some time finalizing the website, and on Sunday I re-submitted the app because I forgot to add some error messages. One week later the app was approved and available on the app store. My first personal project out in the open. It's quite exciting, even though it is only the bare minimum product.

Developers always want to try out the latest gadgets, programming languages, version control systems and whatnot. I'm no different, but for this project I had clear time constraints: only 2 weeks until the start of a holiday, and after that I probably won't be in an ideal development environment for quite some time. So I decided to go only with technology that I already knew. For the server-side that meant Python+Django and MySQL. I chose to build an iPhone app because I had got the developer license earlier this year and haven't used it at all yet, and one of my goals for my 'break period' is to have an app in the app store. When I set that goal I didn't think I would have been able to accomplish it in only one week. For version control systems I chose SVN because I've been working with it all of my professional career. It's is a choice I slightly regret because I want to learn more about git, and git seems to integrate with the new xcode better than svn.

Having to do absolutely everything in a development cycle yourself is one of the most valuable experiences you can have as a programmer. I never knew there was such a huge list of things to get right before submitting my app to the store. Creating icons in all dimensions, meticulously preparing the property list file, compiling for the right target, testing under different versions and on real devices. If you've only ever done projects that were never released then you'll suddenly realize that there's a lot of little only trivially-related things that need to be taken care of. Lesson learned. And fortunately you only have to learn it once.

I had some trouble in the iPhone app because my knowledge of Obj-C (and it's libraries) is limited. I had to learn a couple of new libraries in order to get the right functionality for my app. The most praiseworthy library I want to mention is ASIHttpRequest, which makes it really easy to do anything with http connections. Thanks to that library and JSON the client-server communication was ridiculously easy to implement. No fuss with manually opening connections, cookies, sessions and whatnot. It just works straight out of the box. On the server side I kept the libraries to a bare minimum, sticking to Django's standards libraries to manage sessions and users.  The part of the database schema that contains the core business logic is only two tables.

The most difficult part was by far the UI design, both for the website and the app. My first issue was: where do I get emoticons for the moods that I want to display? I don't have a lot of artistic talent, so I decided to find a set of free emoticons that I could use. I found a whole bunch of them but none of them were really suitable for my idea. That's the problem if you can't (or won't) design your own material. I weighed the amount of time it would take me to create suitable emoticons myself versus using the best match I found so far, and decided to use the emoticon set I found online. It's lacking some moods that I would like to include, but I'll worry about that in the future.

Designing the UI and the website happened in pretty much the same way. I thought of the fastest way to accomplish what I wanted to accomplish, and never looked back when I did. There's a ton of things I'm still not happy about and that I would have tweaked if I had more time to work on it, but the sudden deadline meant that I didn't give myself the time to look back. The main idea was: "Stop worrying about if there's something better. If you can do it right now then just go with that.". That's how I got the domain name, the icon pack, the UI design and everything else too. For hosting I just went with my shared hosting provider. I won't worry about dedicated hosting until it really becomes necessary.

There's a ton of features I still want to implement. I want to add a history view to the iPhone app so that users can see a calendar view of their moods. I want to make the app work offline and synchronize with the server when internet is available. I want users to publish their moods to Facebook and Twitter. I want users to be able to add friends and import friends from Facebook. I want to make an Android app! But perhaps the coolest thing is: I will have a lot of mood data to work with in my database. Add some demographics and I'll be able to generate some pretty interesting statistics, both for each user independently as well as in a global sense. But that'll be version 2.0.

You may note that the app is free, registration is free and there are no ads on the website. So where do I make my money from? The answer is: I don't. Making a free app and a paid app separately would've cost more time, and the functionality of the app is still very limited, so I don't really feel like charging people money to use it. The website will hopefully become a garden of wonderful statistics in the future, which could become a source of income if I added ads to it. But I hate ads, so that's not going to happen. Consider it donationware for now.

All in all I'm quite happy with the result. I realized once again how absolutely vital it is to release something. Even if it's just the barebones, after it's released you'll have everything in place to start incrementally improving it. I'll be on holiday for a couple of weeks, but I'll definitely pick this up after I get back. It's one of the most fun projects I've ever worked on.

Posted in Tech | Tagged