Archive for February, 2010

Inspiration and Perspiration

I feel like I was more organized when I was younger (high school, definitely not college!) but I think that may just be a case of selective memory. After all I do remember spending more than one lunch period in the library doing homework or an essay that was due that afternoon. Maybe back then I just didn’t know how poorly organized I was so it didn’t bother me as much as it does now.

Anyways, the source of my scheduling issues seem to stem from a strange artist-like quirk of my personality – I really need to feel inspired in order to sit down and code. If my muse is there it can be scary how much code I can write in just a few hours. On the flip side, forcing inspiration can be hard – very hard. I seem to want to mentally sabotage the effort – there’s always something more interesting or more important I should be doing.

I think taking the next step to better self-scheduling/not procrastinating is difficult because I’ve been very successful at slaying the first dragon in this quest – hitting deadlines. I’ve been really good over the past year with the vast majority of my deadlines. There have been a few nasty outliers, that’s for sure, but for the most part I’m getting quite unaccustomed to the lovely sound a deadline makes as it whizzes past.

Now that I’ve dealt with my issues well enough to not hurt other people, the only person I’m still negatively affecting is myself. I still have to put in a good deal more stressed-out crunch time and heroic efforts than I would like. It’s one thing to beat my muse into submission so that I don’t negatively affect someone else and a whole other thing to try to smack my muse down to the point that I don’t have to work late to make that happen.

The technique I’m currently trying is a combination of better/earlier delegation combined with daily or near daily minimum levels of effort for ALL projects I’m currently working on. I sure do hope this works because I’m getting really tired of working late but at the same time I actually love the pace of my schedule!

Opening a Can of Bugs

I spent a good amount of time tonight working on getting a new release of HYPE ready. I quickly smashed through the bugs reported up on GitHub and even managed to track down a nasty series of three bugs that were all hiding behind one another (I fixed bug A, which exposed bug B, which, when fixed, exposed bug C!).

The clencher though was when I discovered that a null object error that would only crop up when I would save a file out from my test SWF – and even then, it wasn’t consistent. I was able to fix the bug, but I haven’t been able to nail down exactly what was happening. As best I can tell, opening a FileReference dialog interupts the normal process of the garbage collector and it appears that the bug was causing my code to be dependant on the rapid cycling of the garbage collector to hide it’s mess and prevent it from throwing runtime errors.

And after all of this I just discovered a particular edge case that breaks the RLE compressor I wrote for my TGA (Targa) image exporter. Ugh. Gonna have to deal with that one in the morning.

Keyboard Flailing

monolithThere are times in which I feel a bit too much like the apes beating on the monolith in the movie “2001: A Space Odyssey”. One of those times was… well, this entire morning. For the life of me I couldn’t get the keyboard shortcuts in FDT (my preferred ActionScript editor, by far!) to play nice. I could make a class with Command+Alt+N, but then no matter what I did I couldn’t regain focus in the editor. I found list after list of Eclipse keyboard shortcuts but nothing worked. I was so close to mouse-less nirvana dammit!

But then, on a whim I simple restored Eclipse’s keyboard shortcuts and everything worked… almost. Now, I could open the new class dialog, but no matter what I did I couldn’t tab onto the damn Browse button to select my classes base class. The urge to go find a bone, howl, and beat on the computer was strong at this point. Luckily, before I before I began raiding the company fridge for whatever bone I could find I tweeted about my problem and a follower of my Dominic Graefen (@devboy_org) tweeted back that it was an OS X option! WTF?!?

Turns out Dominic was dead on, it is an OSX option – toggle full keyboard access. It’s keyboard shortcut is Control+F7 – dangerously close (particularly with my flailing about trying to make the editor regain focus) to Command+F7, which in Eclipse changes to the next View. I turned off the system keyboard shortcut and am now happily in Eclipse keyboard nirvana – haven’t touched the mouse in a solid 15 minutes – woo! Thanks Dominic!

Bruised Shins

When I left college I knew a bit about GNU Make. Just a bit though. Only what I had been taught in class to make my C++ applications build. I had no idea what I was really doing, nor had I any concept about the power of the tool or related tools like Autoconf.

I had to run into the problem of a complex build and deployment process before I really “got” the idea of build scripts. The same thing was true for me about test-driven development. Until you experience the pain of playing wack-a-mole with regression errors it’s hard to comprehend the importance of well written unit tests. Hell, when I think about it, almost every single major point of growth in my ability to develop software has been based on me virtually banging my shins on something.

At this point in my career my virtual shins should be entirely black and blue.

A major benefit to learning software development in this manner is that every line of code you write, you write with purpose. You avoid falling into a trap placed in front of developers by many well-meaning experts – you never get religion. If an expert says you must do TDD or always follow the rules of OOP… well, you do it! Because it’s better. But why is it better? Well, you forget, but it must be better because the smart person told you so!

Getting religion about code is dangerous. It makes you less pragmatic and less open to new ideas. Best practices are only best until something better comes along. How will you know when something better comes along if you don’t really understand why the current best practices are “best”?

I think that’s why I, as the author of a book about object oriented programming, am currently in a study group with some friends (including my co-author, Sam Wan!) trying to learn Scheme and functional programming. After all, sacred cows make the best hamburgers.

Clean Slate

Over the past few years I’ve wiped and restarted my blog many, many times. In the process I’ve managed to piss off more than a few people trying to find old content. Sorry.

In the past my blog was always very Flash and ActionScript oriented. This wasn’t a bad thing – it was, and still is, a major passion of mine. However at this point there a lot of Flash bloggers and many of them are simply smarter, more articulate, and more inclined to actually blog. I don’t intend to not write about Flash, but it won’t be the focus of my writing.

Instead, the focus will be the “nom de ‘net” I chose for this site when I bought the domain back in 2002. I came up with waxpraxis by smooshing together wax to denote increasing (as in the waxing moon) and praxis to denote practice, learning, and action. I simply want to write more because I feel that I do my best learning when I am actually teaching.

Back in the early days of Flash I would literally learn a feature or technique and immediately make a forum post or write a tutorial about it. Somehow over the last few years I’ve lost that habit, but now, for both selfish and altruistic reasons, I want to start it back up.

I don’t want to set any posting goals – I’m hoping sheer habit will take care of that. Instead, my major goal is to keep this blogs content, in it’s whole form, for the next 5 years. Hopefully, this will be fun!