With my new job underway I have some free time that I am plugging with two old hobbies: the equestrian team and pottery class. No, that’s right… ah, writing a finance app in Python and playing video games. More on the former later; more on the latter now.
I beat Arkham Asylum with a completion score of 90%. I solved 100% of the Riddler Challenges, including the unlisted final Amadeus Arkham riddle. The attention to irrelevant Gotham City villans was impressive – they even plumbed the depths of the Alice in Wonderland themed characters by showcasing the ridiculous Jervis Tetch, Dumfree and Deever Tweed, and Humphry Dumpler. I guess if you didn’t really care about the Bat-a-verse the game would still be pretty good, but if you’re a comic book fanatic, it’s *really* good. Finally in Batman news, GameInformer just ran a cover story on Batman: Arkham City, which sounds like it will be even better (“…and it sounds even BETTER than when I’m singing out!”).
After Batman I participated in a two-for-two trade with one my friends. I sent Bayonetta and Batman out into the world and received Heavy Rain and Demon’s Souls in return. Demon’s Souls is famously difficult and my wife thinks it would make her punch through walls and flip the apartment over, but I’m giving it a go. I don’t have an incredible amount of time and my typical playing style (bull rush. attack. everything.) is leaving me bloodied and annoyed. SO – I’m taking it upon myself to show that I’m a learner and trying to play a calmer and gentler game of Demon’s Souls. Also, I’m the thief – so I can’t even wield the big weapons anyway. But that’s ok, it’s fun.
Ok, on to the former. v1.0.0 of FINally is about to be released (to my wife and I)! I’ve made pretty good progress implementing some under-the-hood features like a new SQLite backend using Elixir and a new grid-based GUI front-end using wxPython. The first version of this tool focuses on getting the basics (creating, reading, updating, and deleting) to work in an extensible and clean way. What does this mean? It means the tool looks like complete ass and will probably not approve in appearance until all of the guts are there. Skinning the tool will probably be a task all it’s own down the road because I know myself well enough to know that I could spend nearly infinite time tweaking the appearance.
Pretty much all of the FINally code has been re-written, although it might look familiar to those who have browsed it before because the underlying wxPython setup didn’t change. The biggest improvements were made to the database, the Python class/module layout, and general user friendliness.
The backend was written using Elixir, which is a Python module that basically sits on top of SQLAlchemy and prevents you from having to do any real work. Elixir’s worth lies in the fact that it allows you to create and access SQLite databases of moderate complexity with truly minimal code (not to mention a minimal understanding of Object Relational Mappers). I haven’t hit this speed bump yet, but I think the balance for this is the fact that if you ever *do* need to get into the nuts and bolts you basically have to learn SQLAlchemy, which you could have learned in the first place. I had to pick one of the two to go with and Demon’s Souls convinced me to go with Elixir.
On the Python class point, I did some research into classes to try and determine why I was occasionally doing this:
class foo(bar):var = 1234def __init__(self):# code here
..and why I was occasionally doing this:
class foo(bar):def __init__(self):self.var = 1234# more code here
The reason (class variables vs. instance variables) was interesting and clarifying. (Side note: yeah, so I’ve never really professionally written anything other than embedded C (not even C++) for automotive applications, and Perl for an occasional Venom-laden makefile. I think I’m a bit behind on my OOP. Also, I skipped Java entirely.) IN ANY CASE it was very interesting and it helped with the tool.
Finally, I tried to simplify the UI so that the average operator could sit down after a long night at the bar and tally up the receipts with no problem. As mentioned above, the skin I’ve chosen is “Butt Ugly”, but that will change in time. The basic use is: open tool, enter/edit data, close tool. The tool handles the rest. Hoorah!
Here’s a screenshot of the main screen:
The hideous green will be replaced by buttons, a menubar will appears, and I might even add some row-by-row icons to special expenses. Many things to come.
Ok, my wife has now gone to bed and this post has gone on long enough. I’ll write again later to talk about how you can contribute if you’re interested and also to shed some light on my love affair with Mercurial.
tags: FINally · video games

hyerim · August 24, 2010 at 10:24 am
SO very glad that I purchased that shiny bit and face paint. I regret the hoodie purchase though…
Can’t wait to use the tool for realz!