Sorry I haven’t posted in a while, but I’ve decided to participate in this year’s Month of Monsters. My first post is up now.
Wow, it’s been a long time ((It’s been a really long time, as Rob has pointed out.)) since I posted anything here. I never meant for that to happen.
Anyhow, the always amazing Natalie Metzger is hosting Month of Monsters, where people challenge themselves to create a monster a day for the month of October. Entries can take the form of a story, or a drawing, or whatever. I thought it might be a fun thing to try. My first post, Fnark in the Dark, is up now. ((I even included a doodle, which I can’t promise to do again, because that’s not really my strength.))
Be sure to check out the rest of the posts as well!
How the classic Ultima games led to the creation of PDAR: a new patch distribution format.
Classic Games Live Again
A few weeks ago, Good Old Games ((A great place to buy older PC games and run them on modern systems (DRMfree). )) added the first six games in the Ultima series in a two bundles. ((Ultima 1+2+3, and Ultima 4+5+6 (Ultima 4 is also available for free).)) These are some of my all time favorites, and while I already own them all at least twice over, I was glad to see them available once more.
These games are old, and they look it, which may or may not be a problem for you. ((1-5 are also fully keyboard driven, and make good use of the old PC’s 83 button controller.)) Over the years there have been a number of patches and upgrades to these games, fixing bugs, solving issues with faster systems, adding improved graphics, and adding the music that was originally only available on the C64 and Apple II versions. Unlike the games themselves, these patches have remained readily available thanks to sites like the wonderful Ultima Aiera.
I don’t doubt most people are going to look a these games and pass them by. They are old. But those who do want to try them, and want the best experience will want the patches. Unfortunately there’s a common problem with all of these patches. The assume you know DOS, and in many cases, that you are running DOS under Windows 9x. Here’s a typical example from the excellent Ultima 5 Upgrade:
Unpack the U5 Upgrade zip file into your Ultima 5 directory on your hard drive. This will not affect your current saved games.
Run “setm.exe” from the Ultima 5 directory to configure your sound card, if you will be playing music.
Run “u5cfg.exe” to configure the game options.
Run “u5data.exe” to patch DATA.OVL.
Run “ultima5.com” from the Ultima 5 directory to start the game.
Ugh. And that’s one of the more straightforward ones. If you weren’t playing these games back in the day, it’s probably not obvious that “Run” did not mean “double click the icon” at the time. It refers to doing these things from DOS, and in many cases a DOS with certain memory features that really only existed when run under Windows.
PDAR: Repackaging Patches
With this in mind, I started looking for a way to repackage these patches in a better way. I wanted:
A single file archive that contained the rules to modify the files, instead of the modified files themselves.
A simple command line to create and apply patches.
Something that didn’t require the end user to run a bunch of extra binary tools.
Something portable, so it would continue to work when today’s platforms are no longer viable.
I found a number of things for single file binary deltas, but didn’t really find anything that met my needs. ((I should mention that while I was thinking this over an excellent Windows GUI based installer for these patches was also released (but I’m on a Mac, so I kept at it).)) So I decided I’d have to do it myself. After some thought, and some Python ((while my reference implementation is written in Python, the file format is not tied to Python in any way, so alternative tools are welcome)), the Portable Delta Archive, or PDAR was born.
With PDAR, applying the above patch is reduced to: ((I guess I should mention that this will modify your files. As always you should back them up first.))
pdar apply Ultima5.Exodus_Upgrade-1.0.pdar "C:\Program Files\GOG.com\Ultima Second Trilogy\ULTIMA5\"
A set of PDAR files for Ultimas 1-6 are now available on Ultima Aiera. I had hoped that each PDAR patch would be posted along side the original patches, rather than as a single bundle, but if need be I can host them here as separate files ((PDAR files are also usually much smaller than the original patch distributions)). You can grab PDAR itself from github. ((For Windows users there is a standalone pdar.exe available))
I hope PDAR is useful beyond patching old PC games, and welcome any feedback.
A new version of my Use Google Libraries WordPress Plugin is available, adding support for the upcoming WordPress 3.1.
A new version of my Use Google Libraries WordPress Plugin is available for download from the Plugin Directory, along with the full documentation and support forum. It mainly improves support for the upcoming WordPress 3.1 ((tested against RC1 and a recent SVN snapshot)) but it is still compatible with WordPress 3.0.
Shopping for presents for my wife, Denise, isn’t easy. She usually just says she doesn’t need anything, and leaves you to guess. This year she unwittingly helped me out. In late September she was semi-randomly pushing buttons on the TiVo remote while I was getting ready for bed (as she often does) when she came across the description of Sharktopus (2010):
Genetically engineered, a monster that is half-shark and half-octopus goes on a killing spree.
“Why can’t it ever the good halves of things? Why can’t it have a big smile and wave to eight people at once?”, she asked. After thinking about it a bit more she, rather sadly, commented on how the outcome would probably be the same with people killing it out of fear when it tried to hug them.
The next morning I woke up and found I couldn’t shake the image of a happy, friendly sharktopus, smiling and waving. My thoughts immediately went to Natalie Metzger. I though she might also find the idea humorous, and as we already have some of her art and photography hanging in the house I figured I’d see if she would be willing to take a commission based on the idea.
Natalie responded positively, and send along her (very reasonable) price sheet. I looked it over, and my brain exploded. There at the end of the list was “(~1ft.x1ft) stuffed animal”. Stuffed animal! How awesome would that be?
I asked if an 8×10″ and stuffed animal could be done in time for Christmas. About a week later I received a sketch. It was better than I imagined. Perfect. Well,almost. It only had one tooth, which gave it an amazingly cute smile, but knowing Denise I was pretty sure she envisioned it having a very toothy shark grin. I managed to bring it up again in conversation and confirm my suspicions without awakening hers. I let Natalie know and she quickly made the change.
Soon after this arrived via email:
The stuffed animal took a little longer, but when I saw the photos Natalie sent I knew Christmas couldn’t come soon enough. Luckily the box came on a day when I was working from home and alone in the house. I opened it, took a quick peek at the awesomeness it contained, then packed it back up and hid it just as I heard the garage door opening.
I wrapped the print, and the stuffed animal separately and made sure Christmas morning that these two particular presents were the last left under the tree. I gave Denise the print to open first, and she understood at once what it was (and even recognized the artist on the spot). I could see she was pleased. When I handed her the big giant box she had a bit of a “how are you going to top that one, and what in the world is this giant thing?” look on her face.
You may have noticed the that the example NaNoWriMo ProgPress meter in my earlier post is actually live. I wasn’t really sure I was going to do NaNoWriMo this year until fairly late. Then I considered how much writing I haven’t been getting done, and started to consider it.
I participated in 2006 and 2007 (“winning” both times), but this was going to be different. The problem was, I didn’t have an outline ready, or even an idea I’d been grooming for a new project. The idea of trying to write 50,000 new words in thirty days without any real plan and only a few days to come up with one scared me. Which is exactly why I decided to do it.
I started the month with about 10 sentences of semi-connected thoughts where I’d usually have a more detailed outline. Some of them haven’t worked out at all, but I am producing words at a steady pace and I have a reasonable chance of “winning” this year. Feel free to follow my progress on my NaNoWriMo profile.
I’ve also been participating this other, less stressful, month-long project. I shaved off my beard late on October, 31 (although not before doing something silly with it first), and I’ll be letting it grow throughout the month of November.
This isn’t just about growing face fur though, it’s a fundraiser. All funds will be donated to the Breast Cancer Research Foundation. The lofty goal is to raise $5,000, and you can help by sponsoring me. Check out my HoNoGroABeMo page where (just about) every day on I post a photo of my progress, and blog entry (which is probably more blog posting than I’ve done in the last year). It currently looks like despite all the manly facial hair antics the fundraiser is going to come up short this year, so anything you can do to help would be greatly appreciated.
ProgPress 1.1 is now available. Now integrates with the NaNoWriMo Word Count API!
ProgPress 1.1 is available now. There are a number of internal changes, with the goal of making it easier to create “add-on” plugins for ProgPress. The biggest new feature is the first one of the add-on plugins allowing you to use ProgPress to integrate into the NaNoWriMoWord Count API.
To enable this feature you have to first activate the ProgPress — NaNoWriMo Support plugin (automatically installed with ProgPress 1.1). Once that’s done, you can use the nanowrimo attribute on the [[progpress]] shortcode to pass in your NaNoWriMo user id. This overrides the goal, current, and previous attributes.
Using my hacker knowledge for the good of others. Plugin Progress, cmdln’s Chapters, and Patching Portfiles.
I recently updated ProgPress, my progress meter plugin for WordPress, based on some outstanding requests for functionality and better documentation. It now has (hopefully) useful documentation, new options, and works as a shortcode. If you have a self-hosted WordPress blog, and you want to track progress towards a goal, you should check it out.
My friend Thomas “cmdln” Gideon mentioned that chapter marks in the AAC version of his amazing podcast were going away, a casualty of his switch from Mac OS X to Linux. I’ve spent a lot of time messing with this very thing, and I was glad to share this useless information specialized knowledge, and give Thomas a pointer to the mp4v2 project, which has a utility for just that purpose. After an email explaining how the tool worked Thomas announced that chapter marks would be staying, and he was able to automate the process.
I was happy to see that epubcheck added to MacPorts. I was less happy when the wrapper script it installed didn’t work for me. Luckily it was easy to fix, so I submitted a patch. My automated MacPorts update installed it this morning.
Wow. Has it really been almost five months? Well, I’ve been busy. Shortly after my last post I changed jobs, and I’ve been adjusting. ((The biggest adjustment is probably the commute, which used to be ten minutes each way, and is now over an hour each way.)) Last week the routine seemed to settle in for the most part, and I’m once again able to make time to write semi-regularly.
The revisions on Miracles are just about done, after being more or less stalled for way too long.
Time to put up or shut up with regards to finishing revising my novel “Miracles”.
Here we are, halfway through January 2010 and I’ve barely made a dent working my way through the last few steps of novel revisions. There are many reasons for this, but excuses aside, I’m feeling frustrated and disappointed with the whole thing at this point.
So rather than whine about it, I’m doing something about it. A few days ago I noticed that today was empty on the family calendar. ((it may in fact have been the only empty day in all of January)) I promptly fixed this my writing in “Jay writing day”. I expected to get some push-back on this, but I didn’t get any. ((At least once I promised it wouldn’t affect our weekly ritual of watching an episode of the Muppet Show after dinner as a family))
So it’s time to put up or shut up. The seven hundred other things that need my attention are all on hold while I try to plow through as much of this as possible today. I’m hoping to move that progress meter all the way to the end, and get as far as I can on a “last” proofread.
I’ll be updating the progress bar on the right sidebar ((non-mobile site)) and posting updates on twitter ((unless it becomes a distraction)), and I’ll do my best to post an update tonight on how far I made it.