Indie Is as Indie Does

Home | Blog | Articles | About | Contact
 

6/26/2008

Backwards Compatibility

Filed under: — joeindie @ 6:21 pm
Backwards Compatibility
 
When I say “backwards compatibility”, I’m thinking of:
  • New versions of the software supporting (including properly displaying) data and processes (but mostly data) created or built with or for previous versions.
  • And, to a lesser extent, having the new version output data in a format that can be read by older versions.
 
(Is that the generally accepted definition of backwards compatibility? I should look, I guess.)
 
A tertiary goal of mine for backwards compatibility is to make that support (and proper display) of old data as invisible to the user as possible. In other words, the new version “just works” with the old data. No complicated upgrade processes.
 
Those have been my goals with every new version of The Journal since 1996. I’ve been mostly successful at it, if I do  say so myself, with only a few hiccups along the way. And I’d like to think I’m getting better at it.
 
I get irked when the developers of software I use don’t seem to have the same priorities. (Just like I tend to get pissed off when the customer support I receive isn’t up to my own standards.)
 
Yes, supporting old data is a pain in the ass.
 
Tough.
 
As an aside: What I find kind of funny is that since EXE sizes no longer have much of an impact on users, each new version can effectively include the old version in its entirety. (I think Windows does this.)
 
The Journal v1’s EXE was about 750K. Each major update has, so far, doubled the EXE of the previous version. I trim everything I can, of course, but I’d rather have a few extra MB’s of EXE than “cut off” a user. (I’m pretty sure, though, that GUI code and database code and similar library code make up the bulk of the EXE. Which is to say: It ain’t my code swelling things up. ;-) )
 
Anyway, I know some “programmer putzes purists” and “design morons purists” think of backwards compatibility as the Root of All Evil. They want each new version to totally replace the previous versions–wiping out the mistakes and missteps that plagued those previous versions–all of which are gone now, of course, totally fixed in the new version. They are stupid idealists and only want to look forward. Not backward. They believe that sissy users should suck it up and upgrade and fix all their own mistakes–even those mistakes made in good faith, properly using the old software.
 
There is only One True Way to these idiots dreamers–and it doesn’t include backwards compatibility.
 
Yeah, those people bug me. Can you tell?
 
In summary: Backwards Compatibility == Good Thing.
 
-David

6/25/2008

Beyond Tedium

Filed under: — joeindie @ 10:30 pm
Beyond Tedium
 
The first implementation phase of Project Vee was getting the original application to compile in a sparkling new development environment. That took a week or so (because being 6 years behind in your dev tools is a long time to be behind).
 
In the second implementation phase I replaced the database backend. And wrote the routines for properly upgrading data from earlier versions. And, while I was at it, totally redesigned how the internal data structures communicated with the database. All of that took a couple months (because when you change the database, you change the backup/restore process and all maintenance functions, the new installation detection and similar very low-level functionality).
 
Now, in the current implementation phase (which is called IP2, because I’m a geek), I’m re-designing Project Vee from the inside out. Which is to say, I’m streamlining (and/or replacing) certain core data structures in anticipation of extending those streamlined (and/or replaced) core data structures in anticipation of totally overhauling the UI.
 
I start by describing (in The Journal, of course) where I want to end up. Then I figure out which existing data structures  need to be changed or extended to get me there. And then I make small, isolated change after small, isolated change, doing full builds and testing against legacy data as I go, because I don’t want to lose anything on the way.
 
Because backwards compatibility must be maintained. (Anyone who tells you differently is an idiot. But that’s another topic.)
 
And so the summer grinds along.
 
-David

6/18/2008

Tedium, Tedium, Tedium, Tedium, Tedium …

Filed under: — joeindie @ 11:39 pm
Tedium, Tedium, Tedium, Tedium, Tedium …
 
What I need is an intern. [*] Which is to say: “Someone I can dump this really shitty grind of a task on.”
 
Gawd. What the hell was I thinking?
 
Tedium following tedium. First, reviewing a quarter-million lines of code to convert the project to Unicode. And now, going through the same damn quarter-million lines of code again to separate out the UI display text for localization (and–maybe fortunately–finding a few missed parts of the Unicode conversion).
 
12 years of “mostly adequate” coding practices coming home to roost. ;-) At least Delphi 2007 has automated some of the really tedious parts. But I still have to review and approve. And the RSI’s are beginning to loom.
 
Even better: after I’m finished with the current bullet point … the hard work begins.
 
Back to the grind…
 
-David
 
[*] No, not really. If you’re cute and female, my wife will exercise her veto. If you’re neither-nor … well … the pay is total crap (AKA, “nothing”). And I can be very demanding for a guy paying total crap.

6/5/2008

Eunuch Owed

Filed under: — joeindie @ 10:24 am
Eunuch Owed
 
I’m in the process of converting a 12-year-old code base to Unicode (Windows UCS2). That’s one of the strategic goals of Project Vee.
 
Oh, the joy of it all.
 
Delphi makes it pretty easy. For the most part, WideStrings are handled the same as what are now called AnsiStrings. My chief gripes/concerns are:
  • I have to write my own versions of some tools I’ve grown accustomed to.
  • I have to switch to special WideString-enabled UI components (at least they’re free).
  • I have to go through every source code file and make sure that I have properly changed the type of string and functions called with those strings–except where I shouldn’t.
  • Because some parts of the program are going to continue using 8-bit character strings. For the very compelling reason that if they don’t, I kill 12 years of backwards compatibility. Fortunately, there are few places where this is necessary, and none of them involve user input.
 
I cringe at the thought of the nifty new, hard-to-find bugs that I’m introducing to a stable product.
 
Still, I look forward to how much this could/will broaden the scope of the final project.
 
And it’s good practice for the next strategic goal of Project Vee that will probably cause lingering headaches: localization.
 
-David

5/29/2008

My New Hobby

Filed under: — joeindie @ 2:50 pm
My New Hobby
 
In the beginning … I mostly sat on my ass all day and coded, with brief periods of providing customer support via email. Some days I even saw my family, who were in the next room [1]. I’ve talked some about this before.
 
Last year, most of my physical exercise came in 2 forms. First, walking around ridiculously large furniture stores, time after time, trying to find furniture we liked and could afford. [2] Second, moving from one house to another. And then moving stuff around in the new house.
 
Came my birthday in December–my last “approaching 40″ birthday–I realized (a) that I no longer lived in a skate-friendly neighborhood [3]; and (b) that I was probably too old–and would be embarrassing my family–if I tried to resuscitate that particular form of exercise. Oh, and (c) that I didn’t want to look so … chubby. The rest of me is too thin for the middle be so … not thin.
 
So I claimed a 6′ x 8′ section of the new game room and bought a weight bench to fill it with. Serendipitously, and almost simultaneously, I found a workout plan that seemed both simple and effective. I rearranged the workout (as Mark suggested) to reflect my own priorities [4] and called it mine.
 
DavidRM's Gym
 
Just an FYI: I didn’t buy all of that equipment at once. That would’ve been damn expensive. And likely premature.
 
I started following my “personalized” workout plan in January with just the bench, the barbell (borrowed), and a few cast iron dumbbells. I added some free vinyl weights and a curl bar that someone had left at my folks’s house years ago (when teenagers still lived there). Those are gone now, replaced (because they just didn’t match the rest of the equipment; and were ugly). And I’ve added dumbbells that take free weights (much cheaper than individual cast iron dumbbells once you get to the 20-25 lb mark).
 
I’m finishing my fifth month of following the plan and working out 5 times a week. I lost a couple weeks back in late January due to illness, but that’s it. Even when on vacation I missed only a couple days because the hotel where we stayed had a gym.
 
I call this my new hobby. Because:
  • I work on it almost every day.
  • I spend money on it almost every month.
  • I read up on topics of exercise and (especially) proper form on my own time. [5]
 
So, after 5 months, what results have I seen? First, I’ve lost almost no weight at all. Possibly none. But that’s OK. I wasn’t trying to lose weight (my weight isn’t the problem, it’s my shape). My waist has shrunk a couple inches, though, and I’ve put on muscle weight in my shoulders, chest, back and arms. I’m stronger.
 
It may not seem like much after 5 months, but I have no complaints. And I look forward to the next 5 months, and further. I don’t plan to be entering bodybuilding contests, but I have to admit I’m curious: What will I look like with shoulders? ;-)
 
Here’s why this works for me:
  • I don’t have to leave my house. (It’s convenient.)
  • The workouts usually take only 25-35 minutes. The longest day is less than 45 minutes. (It’s fast.)
  • The workouts are different every day. (It’s varied.)
  • I see progress. (It’s working.)
 
And it’s cheap. (As hobbies go.)
 
In a sense, this is just like everything else I do: Highly (maybe overly) organized, with slow and steady progress toward a (possibly vague) goal. And it happens at home. I’m such a homebody these days.
 
I do miss skating, though. Some.
 
-David
 
[1] It was a really small house.
 
[2] I lost about 5 lbs doing that throughout the spring and summer. My wife and I started calling it our “retail walk”.
 
[3] Great house, great neighborhood, rather shitty, potholed asphalt streets. Some parts of the neighborhood are being repaved, though, so I have hope that mine will one day be as well.
 
[4] Abs, shoulders, chest, arms, and legs, in that order. Back gets lumped in with abs to fill out my Mondays.
 
[5] But mostly because I spend money on it. That’s what hobbies are for. They’re money sinks. ;-)

A Case of the Vapors; or Indie Games Get Mentioned in Mainstream Media

Filed under: — joeindie @ 1:30 pm
A Case of the Vapors; or Indie Games Get Mentioned in Mainstream Media
 
Article (with Truly Stupid Title) on MSNBC.com:
 
Let us swoon, for we are noticed.
 
-David

5/28/2008

Bullet Point Follows Bullet Point

Filed under: — joeindie @ 11:22 am
Bullet Point Follows Bullet Point
 
Been working (a lot) on Project Vee since I got back from New Orleans. Almost obsessively.
 
I’ve spent hours researching the Windows side-by-side (SxS) API. I probably won’t use it. I’ve diligently hunted (and serendipitously found) bugs caused by a legacy of code that dates back to the previous century. I’ve profiled code that I thought was performing quite snappily, and discovered I was wrong (there is a limit to how much you can do between keystrokes; who knew?) In making the new version properly upgrade data from the old, I’ve bumped into database artifacts of an obscure bug that was fixed over five years ago (and discovered information in my own data that I thought I had lost to that bug). I’ve streamlined the complexity of internal data structures–which took guts, since most of the original data structure design decisions were made just after the turn of the current century. And more.
 
May sound boring to you. But I love programming. That’s why I’m here. :-)
 
Circumstances created by the catastrophic hard drive crash in March, though, have caused me to review–and revise–the project plan for Vee. Most of the revision is in the form of moving bullet points from implementation phases and lodging them under “Future Development”. Because I need this project out the door much faster now.
 
Strategic features are being retained, of course, but tactical features are being pruned to the minimum. “Minimum” being mostly defined as “will the users notice the lack?” With a few shades of “what have I promised most loudly?” So long as I get the strategic features implemented, I figure I can roll out minor updates (after Vee’s initial release) that build tactical features on top of the foundation created by the new strategic features.
 
It’s a plan, anyway. And I’m checking off bullet points (or moving them to the future) one by one.
 
-David

5/19/2008

Been Done Vacating

Filed under: — joeindie @ 8:32 pm
Been Done Vacating
 
Took my first real vacation in 8 years last week. The wife & I went to New Orleans. Her mother watched the kids while we were out and about. Which, according to the kids, means we now owe them a vacation. Big time.
 
Magazine Street, New Orleans
 
This has very little to do with New Orleans, but it’s one of my favorite pictures of the trip.
 
Just hanging around
 
So, anyway, now I’m back.
 
Project Vee is my main focus. With a bit of luck–and more than a bit of obsessive-compulsive behavior–it should be into testing before the middle of summer.
 
More news as it happens.
 
-David

5/5/2008

Snobbery

Filed under: — joeindie @ 1:53 pm
Snobbery
 
I’m an easy-going guy. Really. Possessed of strong opinions, yes, and ready to talk about anything on a moment’s notice. But I’m also willing to listen, and most of my beliefs and convictions and opinions are open to discussion. Because I know I don’t know everything.
 
As I continue my education, I find out even more that I don’t know about. An endless cycle of revealed ignorance. I like learning, though. I like improving myself and my projects.
 
But … (you saw this coming, didn’t you?) … if someone wants to tell/offer me suggestions about/for:
  • How to improve my business, or
  • How to get in shape, or
  • How to improve my software, or
  • How to be a better writer, or
  • How to find an agent/publisher, or
  • How to invest or trade in the stock market, or
  • About anything else that they might think I need a helping hand on …
 
I’ll listen politely (more or less).
 
And then ignore them, unless they have:
  • Built a business of their own, or
  • Been on a workout plan for more than a week, or
  • Any experience designing and building end-user-targeted software, or
  • Written a novel or screenplay or anything at all within the last 2-3 years, or
  • An agent or publisher of their own, or
  • Actual investments in the stock market outside of their 401(k), or
  • Some other reason to think that what they have to say is at all significant besides high self-esteem and an ability to recite passages from books and articles they’ve read.
 
Which likely makes me seem a bit snobbish. :-)
 
As I’ve read more and more broadly, I’ve started to see how much of the “advice” and “information” you encounter on most life topics is the same stuff, regurgitated over and over. And most often regurgitated by someone who is just paraphrasing something he heard regurgitated by someone else, with very little practical experience gained on his own.
 
I’ve said before how much I like to learn from books. Book-learning is great. But only if you then use that knowledge, and expand on it with your own experience.
Without experience to convert knowledge to wisdom, all you have is a lot of Trivial Pursuit ™ answers. And without the board setup between us, and colorful little pie-shaped pieces to keep score, it’s just hard to be impressed.
 
-David

4/23/2008

Revving the Chainsaw

Filed under: — joeindie @ 11:36 am
Revving the Chainsaw
 
Last year I compared Google’s Ad Words to a chainsaw–an evil chainsaw with a taste for human flesh!
 
A couple weeks ago, Google offered me a “free optimization” of one of my ad campaigns. The sounds of revving were loud, but I decided I’d give it a shot. After all, I’m the first to admit that I have only experiential knowledge of Ad Words. What I’ve learned, I’ve learned by doing (and sometimes “doing poorly”).
 
I’ve tended to avoid most SEO advice (because I have a soul). Here, though, was a chance to see what The Beast could do, and a chance to maybe learn something new and useful.
 
Yesterday I put their optimizations into play (after carefully saving what I had before, of course). So far, I feel confident that I got my money’s worth. ;-)
 
What I’m appreciating so far is:
  • the way-expanded list of negative keywords. I had 5. They had 86. And, damnit, they were right.
  • the organization of the campaigns by keywords. Not just keywords, but collections of related search approaches, that will allow greater customization of bids and text ads. Obvious in retrospect, and I had done some of this. They did it better.
 
Speaking of text ads, though, I’m a bit underwhelmed by their text ad choices. On the plus side, they came up with text ads (based on my Web pages) that I would never have thought of. And that’s good. Because I can use their ideas as new foundations for text ad tinkering.
 
On the other hand, I’ve added back my old main text ad because I think it will outperform the ones they came up with. And is already outperforming them in one case.
 
Still, for $0, I think I got something useful out of the exercise. The expanded negative keyword list will likely save me a lot of money monthly. But it’ll take at least a week to know how much real value I got out of the rest.
 
Now I’m curious: Anyone else taken advantage of Google’s free optimization offer?
 
-David
« Previous entries

The Indie Game Development Survival Guide
by David Michael

Serious Games: Games that Educate, Train, and Inform
by David Michael and Sande Chen
DavidRM Software's The Journal
The Journal for Windows
45-Day FREE Trial
 
 
Contact | Copyright © 2005