NoshBar's Dumping Ground

Rambly introductory

Until recently, I had no reason to code something in Python, as I had all my bases covered by C/C++, ObjectPascal, and PHP.
Lately work has had me pottering with some utilities written in Python, and even though I don't "know" Python, I could read the code just fine (as I guess is the case with most coders), and it seemed like something that would be good for quick prototypes (especially as my main development machine is now a Mac - it comes with Python pre-installed).

So I set myself the task of re-creating HelperMonkeyBot in Python.

Things I used

Having had some frustrations with getting an XMPP library and its dependencies set up and working with cross-platform C++ compilers, I was delighted to find SleekXMPP, which is easily installed by typing:
python install
I had Python 2.7 on OSX and Linux, and Python 3.2 on Windows.
I figured this would let me target the two different versions (and -hey-, how different could they be? More on that later, SIGH).

As before, I used SQLite for the database, using the full-text-search capability it provides.
This seems to be enabled in the OSX and Linux distributions I was using (10.7 and 11.10, respectively), but not on Windows Python 3.2.
The easy fix is to go the SQLite website and download a new sqlite3.dll and plonk it in the Python32\DLL folder.
Well, it WOULD be, but I guess the API has changed (or something, I didn't have the patience to check)... so I did what any impatient prototyper would have done (just me?) and uninstalled Python 3.2, and installed Python 2.7, replaced the DLL as before, and et voila, success!

For an editor/IDE, I initially just edited the code in Xcode, but that provided very little other than syntax highlighting.
So then I tried SPE, which was great, I could debug code, set breakpoints, do all the things I'm used to with compiled code... buuut it would sometimes crash, or just act weirdly. Nothing deal-breakery, but my lust for shiny new things had to be met, and it was the perfect to excuse to look for MOOORE.
I then used Aptana Studio 3, which has PyDev support built in, and worked pretty well (apart from the eye mangling default theme)... but still didn't feel quite right.

After much elimination and many crying supermodels, I finally chose Python Tools for Visual Studio... what can I say? I absolutely adore that IDE.
All the shortcuts I know, incredibly quick stepping through code (with Python 2.7 anyway), easy process killing, warnings in the IDE about mismatched white-spacing... it just felt right for me.

The story so far...

Despite the warnings and dismissals from internet experts and people I know, my opinion is that Python doesn't suck too bad.
I know my opinion is worth as much as the rest of the experts, but it boils down to this:
Bad code is bad code, how bad it is depends on how much you let yourself abuse the available functionality.

This initial code for HelperMonkeyBot must be horrendous to seasoned (hmm, salty) Python coders, but it's a stepping stone for me, and one I am proud of.
Not because I learnt a new language, not because I think it's great code, but simply because I didn't abuse it too much.

I think the thing I like most about Python is the same thing that has me liking Pascal/Delphi still:
people who provide examples in Python/Pascal provide code that is understandable, and seemingly want to explain things more than C/++ coders.
For years I would search for things like "avi player delphi" because the code would be easy to read, and there would normally be an accompanying article.
The great thing is that Python seems way more popular than Delphi, so a whole new world of easy-to-understand code has opened up to me, huzzah!

So, soon I will provide an updated HelperMonkeyBot (I'm testing it at the moment) which -thanks to being in Python with some easy to use helper libraries- sends mail reminders.
Not the world's most amazing feature, but considering the C code I'd have to do for that... YAY!

[ view entry ] ( 1145 views ) permalink print article


I keep claiming it's the worst written code on the planet... and recently someone asked if they could have the source to "play around with" (more likely it would have its way with them).

After being quite happy that I had lost the source a while back and could not prove that theory... well, curiosity got the better of me and I played with some undelete tools on an old hard-drive I had.

So here it is, the source code for my 15 minutes of fame, released under the "don't tell anyone I wrote it unless they think it's awesome" license.

I've been hesitant to release it in the past, because it is truly awful, from over a decade ago, before I could program, or even knew what the "Object" in Object-Pascal meant (which should be quite obvious).
I'd hate for this ever to hurt my chances of anyone ever employing me based on this code, so I would just like to state that I am infinitely better now.
But also, keep in mind that somehow I managed to keep working on this, understanding the mess, knowing exactly where in the bazillions of lines of code things happened... only a smart person could do that. Nod nod nod. Did I write smart? I meant to type "loony".

So anyway, use this at your own peril, and do NOT come asking for me help... especially not if it starts sucking your soul out...
It used to compile with Delphi 6 Personal Edition, and somewhere along the line I managed to use the ... Delphi... Studio... something... I don't remember what it was called, all I remember is that it required .NET 1.1, was incredibly bloated and slow, and crashed more than TISFAT.

And some of the many things I learnt doing this:

  • Never put code directly in an event handler, make it call an objects function or something
  • $I including files in Delphi is not smart, it's evil, and made debugging almost impossible (back in Delphi 5 days at least)
  • Delphi objects... well, you don't need to allocate memory for them in the traditional malloc() way, nor do you need to use pointers to them... instance := object.Create() works juuust fine, and is a lovely way of doing things.
  • When designing a file format, do just that, design it! The amount of fudges in the TISFAT format just to cater for tiny variances in previous versions... geez.
  • I quite enjoy working in my own filth.

[ view entry ] ( 624 views ) permalink print article

So, some progress on Tweenimator:

Astute readers may notice that images are now working, meaning I could add the world's ugliest test-UI too.

Also shown is how complex stick figures can be built from scratch.

Not show in action are the "move stick figure" and "rotate stick figure" options.
The "move" action works just peachy.
The "rotate" action, well...

See, in TISFAT, if you wanted to rotate a stick figure, you had to manually rotate the points. I can only imagine how difficult that must have been, because I never had the patience to do that kind of thing (sicko's!).
I _would_ have added the rotation option, but I had no idea how to handle mouse clicks on a rotated entity.
Now I do.

So, rotating an entire stick figure between frames means you can still edit the poses just by clicking on the stick figure like usual.

However, as this is prototype stage, I'm cutting myself some slack, in that the order of the rotations, or the center of which, must be wrong... when I rotate the stick figure, it goes way off screen.

That aside, progress is pretty good.

There is also an option to keep one "stick"/"limb" at the same angle to the one it is connected to, quite handy.
Except that I'm a mathematical genius * -1, and can't seem to get the angle right. I think I'm not transferring something during tweening...

Anyway, it's still fun, and that's what counts.
Especially when the world around me is covered in running combusting screaming monkeys.

[ view entry ] ( 192 views ) permalink print article

First there was the fine motor skills of an elephant.
Then there was TISFAT, which worked for a while, mostly, almost.
Then there was an unreleased tisfatTOO, which did nothing but frustrate me.

But now that tablets are common-place, and there are touch-screens actually capable of being useful (eat dust, resistivity!), I decided it would be fun just to see what animating a stick figure on them would be like.
So I whipped up a quick prototype to test it... and, well, damn. I've got the disease again.

It may not look like much, but the original TISFAT started with something way more basic/hideous.
AND it runs on iPad, TouchPad, and PlayBook already, huzzah!

To the FutureMobile!

[ view entry ] ( 144 views ) permalink print article

So, the BlackBerry PlayBook went on a firesale of sorts yesterday, and I had a voucher from my awesome work, so I naturally had to go get one for super cheap.

It took about 2 hours in total to get the SDK installed and Drumpster ported... The WebOS changes making it a straight-forward port.

So now it really is time to start making a sensible directory structure for the builds, getting some sort of source control up and running, and finally proceeding with work on improving Drumpster and taking it forwards, instead of sideways.

Fortunately being awesome is not a crime, unlike being a foreigner...
Due to me not coming from an English speaking country, and clearly not having any IT skills, I will have to leave the UK soon, hopefully ending up in Sweden, after which I can hopefully focus on making Drumpster something usable.

Always hoping...

[ view entry ] ( 308 views ) permalink print article

<<First <Newer | Older> Last>>