Announcing Happymon – monitor your mood swings!

As mentioned previously I started programming again this summer. Today I am excited to introduce Happymon – a tool that helps you monitor mood swings.

It is free to use and I’m hoping enough people will find it useful or fun and want me to develop the idea further.

Welcome to Happymon
The welcome page for Happymon

I have written it primarily as a learning exercise. Here’s what I have used:


It is written in PHP using the Codeigniter framework, with a MySQL database.

I found Codeigniter a bit hard going at first – I needed to rethink just about everything! But after a couple of Fridays (Fridays are my coding days) it started to click and yesterday I added 2 new features with ease and am really beginning to enjoy what Codeigniter can do for me.

This app is simple, there are just 2 models, 2 controllers and a handful of views. I don’t think I would have wanted to try anything harder as an introduction. Codeigniter claims to have the best documentation, and once you get over the initial shock it IS good. However I despised their tutorial – it told you what to do, but didn’t once explain why, which made learning hard for me (i’m not so good at unquestioning obedience).

The database has a few tables – one holds user details, one is the main log, one contains the aggregated data and I added a table containing a load of quotes about mood from (semi-) famous people.


The front end is all html and javascript with a bit of jQuery.

I started out using the excellent Twitter Bootstrap, but then recently got excited about responsive web design after listening to Ketan talk at Reading Geek Night last month. Ketan is an impressive character and has started a really interesting project called C.A.P.O.W – it is a framework for writing comics online.

For those who don’t know, Responsive Web Design is a way of tackling the problem where people will use your app on any number of devices with all sorts of different screen sizes. The dev world seems to be split (some things NEVER change) about the best way to tackle this. There is a strong argument that says basically suck it up – rewrite the app for each device. The idea of RWD is that you can design your app to work on multiple devices with some well considered design and CSS.

Anyway, I bought a book (of course) Responsive Web Design with HTML5 and CSS3 on Kindle and then read it in a weekend, and thought I’d have a go.

The result is that apart from the registration form, everything else is hand-made CSS. It is not perfect! …but it does seem to work ok on a laptop, iPad and android phone.

Screenshot of the mood monitor
jQuery Sparklines plugin used for displaying the mood charts

For the mood charts I’m using jQuery Sparklines which I think are pretty awesome, and very easy to work with.

Oh, and the logo font is Sansita One from the brilliant

Please have a play with Happymon – I welcome all feedback, good or bad…

Cheers, Mark

1 Comment

  1. I love the simplicity of Happymon, and the slightly pharmaceutical colour scheme of the mood logs!

    I have been using it now for 3 days and imagine feedback will come after a slightly longer period of use, as the real value lies in being able to look back over a week or a month to see some patterns. I love the aggregated data for world mood and I wonder how this will change as more users adopt the technology.

    Really interesting to read more about the coding side of this!

Leave a Comment

Your email address will not be published. Required fields are marked *