Who cares about the piggy? I do!

As I commented in my last post, during my investigation about the state of Qt in Maemo, I decided to start implementing an idea I’ve had in my mind since I got my N900.

I guess I should start explaining that I’m a complete disaster managing my money. I don’t really know what I do with it, or where I spend it. And living in this global-crisis time, this is serious guys! I need a way to fix it.

So I thought: wouldn’t it be great if I could store all my expenses in my brand new N900, so I could not only know where I spend my money, but also be able to know my current state compared to the month budget???? Even more!!! once I have all that information stored, I could perform every kind of weird queries over it, like how much money I spend in coffee, food, beer (mmm… not sure if I want to know about this one ๐Ÿ˜› )
And having all this information, I could start saving money, and my piggybank would be able to leave peacefully without being afraid of being killed!

I guess you already know what happens when you put a developer with an idea in front of a new technology to test so… I started the development of siggy (whose name is a declaration of intentions: Save the pIGGY!) ๐Ÿ˜›

These were the features I wanted to have for its initial release:

  • Be able to define a budget for a month
  • Be able to write down expenses in that month
  • Be able to easily see my evolution during the month, comparing it to an ideal one
  • The creation of expenses should be as fast as possible, and I shouldn’t need to use the keyboard
  • Be able to define categories to the expenses
  • Autocreation of recurrent expenses

And besides those, of course, I wanted to test what could be done with Qt in the N900. So, I had also these ones:

  • Integrate siggy visually with the Maemo environment as much as possible by using the custon Maemo5 QWidgets
  • Internationalization support
  • Integration with the backup system
  • Make siggy rotation aware?

So, I created the siggy repository on gitorious and started coding: put a SQLite database here, a MVC pattern there, a custom widget to draw a graph with the expenses evolution, some basic gesture support, lots of dialogs to achieve the Maemo5 user experience, and… I’m proud to announce that I’ve just released the 0.2 version of siggy!!! ๐Ÿ™‚

What can you find in this 0.2 release? These are the features:

  • A month is represented as a graph where the expenses are represented together with an ideal evolution, so getting info about the current state is really easy and fast. User can navigate through existent months by dragging left or right in the main window
  • There are two views for the month, the daily one and the accumulated one. User may change between them by clicking on the main window
  • User can define a budget for each month, and define a default budget for every month
  • User can create/update/delete items. An item is a category for an expense with a predefined price
  • User can create/update/delete expenses in any month. An expense may or may not be associated to an item
  • User can create/update/delete scheduled expenses in the application. Scheduled expenses will automatically be created in the specified months, so the user doesn’t have to create, for example, an expense for the rent each month
  • Application is perfectly integrated with the Maemo5 environment
  • The application has internationalization support and currently has english and spanish translations
  • Both database and configuration file are integrated with system’s backup application

Of course, this are not the only features siggy will offer, but they are the basic ones needed to start using it and entering data. After this release, my plan is to start implementing features related to extract information from the stored data. But, of course, I’m willing to hear your opinions, suggestions, whatever! ๐Ÿ™‚

You can get the source code from the siggy repository on gitorious, where you can also find a small user manual. Bear in mind that in order to build/run the application, you need to have installed the libqt4-maemo5-* packages available from the extras-devel repository. Please, feel to report any problems you can find ๐Ÿ™‚

And as farewell, here you have some pics! ๐Ÿ™‚

8 thoughts on “Who cares about the piggy? I do!”

  1. Is there any chance of having binary packages uploaded anytime soon?

    Wow, this looks very, very useful. The handy expenses tracker that I have seen in the old PalmOS is one of the things I have missed in recent handheld devices, and it looks like it could fill the gap!

    Great work, indeed ๐Ÿ˜‰

    1. @Adrian

      Even better, I plan to add it to extras-devel for easier installation. Anyway, if this is delayed, I’ll provide some binaries ๐Ÿ™‚

  2. Hi!
    About the features: Do you support multiple accounts? Do you plan to add support for it?

    I started a Java application, initially targeting OSX, about a year ago (development is stalled, but you can take a look at [1] and [2]) with similar objectives. One of my errors was focusing too much on the internals and too little on the initial usability, so I didn’t use it while I was developing it, and finally the urge for finishing it disappeared.

    I’m one of this year’s Free SW Master students, and I’m also interested in Maemo 5 development. I own a Maemo 4 device, so siggy wouldn’t work as is, but maybe replacing Qt5 references for Qt4 could do the deal (and maybe an OSX port isn’t that hard). The thing is: I like financial apps and I also want to learn Maemo 5 and Qt development, so I’d like to join forces with you: small tasks first, complex ones later. If you are at Coruรฑa’s office tomorrow in the afternoon or saturday in the morning, we can meet. Otherwise, Internet should be enough ๐Ÿ™‚ (you’ve got my email in the form)

    See you,


    [1] http://code.google.com/p/pennybank/
    [2] http://www.simonpena.com/blog/pennybank

    1. @Simรณn

      mmm I’m afraid this app and yours are not targeted to the same task. This one is not oriented to handle a bank account, as yours, but to handle expenses. When using a bank account you don’t need to define a budget, for example, and you need to support both adding and removing money from the account, while siggy only allows only adding expenses…
      Anyway, I think the changes needed to do what you want (including multiple account support) shouldn’t be that much ๐Ÿ˜‰

      Regarding Qt4.5 and Qt4.6, adding some ifdefs to the code (to replace QValueButtons with comboboxes and a couple of other Maemo5 widgets) would be enough to have a Maemo4/desktop/whatever version of the application.I guess I can start a new branch for that ๐Ÿ™‚

      Not sure if I’ll be at the office this Friday afternoon/ Saturday morning, but we’ll keep the contact! ๐Ÿ˜‰

  3. Really great app! Any plans to use unique IDs in the database to make synchronisation with a server based expenses database easier?

    1. @captain chaos

      I hadn’t thought of it, but you’re right… it makes sense ๐Ÿ™‚
      I guess I could add to the database a kind of unique ID for the expenses… something using a timestamp and the device id, for example.
      Proposal added to the list! ๐Ÿ™‚

  4. @magomez
    It would help me a lot. A timestamp would be helpful as well. The poblem is to to distinguish deleted items from renamed ones etc. The thing any PIM snychronisation has to deal with.

Comments are closed.