Entries from November 2008
All of this Guitar Hero makes me long for the olden rock games. Not music games, mind you, but rockstar games. This genre is kind of limited but has one shining example - Rockstar, by Wizard games. This game is a masterpiece - the perfect exercise in entropy management. No matter how hard you try and stay the straight and narrow you’ll inevitably have to compromise. Will you take cocain or heroin for a much needed boost in creativity? Will you forgo a much needed vacation so you can do another tour? You’re low on cash but a record company has offered you a contract with an incredibly lucrative advance - do you sign and relinquish control to them? I’ve been playing this gem again through the magic of DOSbox and I’ve really been enjoying it.
Such a great game. Someone needs to create an online multiplayer version of this game.
Tags: dos
We are dog watching this weekend. After work today I walked to retrieve the dog in question and walk her home and I immediate invoked my nascent Caesar-foo. I didn’t leave the house until she was calm and I corrected her whenever she tried to drag me along (every 2 seconds), stopping whenever she became impervious to the correction. It took us about twice as long as it could have to get home but in the end I think it was worth it. By the time we reached the front door she was pretty submissive. When I insisted that I go into the house before her she readily agreed.
And then things went sour. The cats caught sight of her. The boys, chickens that they are, raced downstairs like their asses were on fire. Surprisingly, Abby stood her ground. Not only did she stand her ground, but as I shucked my winter coat she brazenly came forward. I didn’t even notice her stalking us as I got the dog into the kitchen to be cleaned off. I turned around to find her mid pounce. If I had been half a second later the dog would be wearing Abby for a hat right now.
Tensions have subsided but Abby insists on giving the dog the stink eye from a few feets distance.
This isn’t ideal, obviously. Lexy and I are going with some friends to see Bellydance Superstars this evening in Hull which means the dog will be crated for a few hours more than we’d like. Hopefully Abby doesn’t figure out the crate and murder her while we’re gone.
Tags: cats,dogs
I went out to shovel the driveway only to find that our attached neighbor had done it for us. How incredibly awesome! We’ll definitely have to get them a gift over the holidays to thank them for it.
In an effort to pass the good will along I finished up what little bit of shovelling we had left to do (the steps) and went across the street to help the older lady who lives there finish her driveway*. We talked a bit and as we finished she agreed to give me a street plan with the names and phone numbers of all of our neighbors.
It’s so bizarre to live near people who don’t actively dislike you. We were in a perpetual vendetta with our last neighbors and my neighbors before that were antagonistic as well. I’ve become so used to neighbors being shitheads (and being a shithead myself I imagine) that I forgot people generally lived in peace with their neighbors.
* I hereby acknowledge that by talking about a good deed I taint it forever.
Tags: karma,life
I’m working from home today in celebration/condemnation of the first serious snow of the year - we’re going to walk away with 20cm of it or so in the end.
I’m getting a lot done but certain individuals are trying their best to put an end to that. These individuals, who have four legs and like to sleep on my laptop, haven’t left me alone for one minute. I have one pinning down each arm at the moment in fact. I have to wonder what these cats do when we’re not here. I somehow doubt they sleep on one another like this…
Tags: cats
November 20th, 2007 · 5 Comments
So you’ve read Steve’s blog and you’re all excited to help out with the Cocoa port (as you should be). But then you grab the code and you’re worried. Just how do you do anything with this? This is all so new and rough. You’re plodding along, kicking the tires, and suddenly you’re assaulted by a segfault in the native library. Your pant burst into flame, your dog gives birth to kittens, and you start singing soprano. Where do you start? How do you track this issue down?
There are going to be crashes. When you come across one that smells like a segfault here’s a simple (if somewhat laborious) method to track it down.
- open NSObject and put the following line at the beginning of release():
System.out.println(”Release: ” + toString());
- launch and make the crash happen
- In your Console view you should see reams and reams of lines like this:
…
Release: org.eclipse.swt.internal.cocoa.NSBezierPath@dd4cd3
Release: org.eclipse.swt.internal.cocoa.NSAttributedString@deb323
Release: org.eclipse.swt.internal.cocoa.NSBezierPath@c2ee77
- Starting from the bottom up locate each subclass of NSObject (such as NSBezierPath) and either override it’s
release()
method such that it’s empty or alter the existing
release()
method so that it does nothing.
- repeat steps 2-4 with each successive subclass you encounter until the crash stops happening. Something pertaining to the last class you changed is probably your culpret.
- restore the
release()
method on the subclass to its original form so that the crash happens again. Remove the
System.out.println
as well if you no longer feel it’s helpful to you.
- find all callers to
release()
on the subclass.
- from here it gets fuzzy. You’ll need to start commenting out calls to
release()
and see if any particular disposal of the object is responsible. Perhaps
release()
is called but the object is still held in SWT and later used for another purpose. If commenting out any particular
release()
call doesn’t stop the crash from happening you start looking at how the object is being retained. If we’re using an object from another structure are we calling
retain()
or
copy()
on it? We should never be
release()
-ing anything we haven’t previously
retain()
‘d (explicitly or implicitly)
Here’s how I applied this technique to find the crash Steve alluded to that was preventing Eclipse from coming up. I added my System.out statement to
NSObject.release()
and started Eclipse. It crashed and the last thing to be released was
NSAutoReleasePool
. I added an empty
release()
method to this class and tried to launch again. This time it crashed on
NSBezierPath
. I added a no-op
release()
to
NSBezierPath
and tried again. No crash! I then reverted
NSAutoReleasePool
and turned my attention towards callers to
NSBezierPath.release()
.
I found two of interest in
GC
and another in
Path
. I decided to look at
GC
first because it seemed more interesting than
Path
. I commented out one of the releases in
GC.setClipping()
and launched only to find that the crash persisted. I then commented out the one in
GC.dispose()
and still the crash persisted. This one was going to be a bit more difficult than a simple disposal. I turned my attention towards all the places we set the
data.clipPath
member (the member that contained a reference to an
NSBezierPath
). I discovered two places where we set the value of
data.clipPath
: we
null
it out in
GC.dispose()
after calling
release()
on it and we
both
null
it out and assign it in
setClipping
. I decide to look in
setClipping()
first because the
dispose()
looks innocuous enough.
In
setClipping
we’re releasing the previous value of
data.clipPath
, if any. We then go and assign the supplied
NSBezierPath
to the
data.clipPath
member. Hmm. Interesting. We’re releasing an object we haven’t retained in this method. We must be retaining it elsewhere, right? Let’s look. There are four callers to the
setClipping()
method that takes an
NSBezierPath
. The first, taking four integer arguments, constructs and retains a new
NSBezierPath
so that isn’t our culprit. The second, taking a
Path
, creates a
copy()
of the path
NSBezierPath
instance (which is implicitly
retain()
‘d
). This one is probably good too. Next up at bat is
setClipping
that takes a
Region
as input. This one looks suspicious! Here we’re passing in the
NSBezierPath
of the
Region
object without retaining it. Decrementing the reference count of an object you haven’t previously increased the reference for is a surefire way of causing grief. If we simply add a
retain()
or
copy()
call to the
NSBezierPath
object we’re getting from
Region.getPath()
the crash should go away. And lo it does.
This virgin Cocoa port represents an incredibly awesome opportunity for the community to shine. People have been crying for a Cocoa port for years now and now there’s an opportunity for industrious contributors to grab the bull by the horns and make it happen. The rewards (in terms of good will alone) are enormous. The SWT team has done a remarkable job bootstrapping the effort to get this port underway and it would be a real shame if the community didn’t jump on board and make it happen. Long term we absolutely NEED Cocoa for continued existence on the Mac - Carbons days are numbered. If you’re an Eclipse user on the Mac you owe it to yourself and the community to participate in this as best you can. If you don’t feel you’re able to submit patches then well-investigated bug reports will do. This is a huge amount of work and every little bit helps!
Tags: cocoa
November 18th, 2007 · 2 Comments
We picked up Guitar Hero III for PS3 today. Ideally we would’ve got it for Wii but the Wii version is impossible to find apparently. So far we’re having a lot of fun but we’re finding the guitar to be pretty cheap. The green button has died on us several times. It’s come back after a bit of fuss but we can’t yet figure out if it’s an issue with a button or the connector in the neck. Websites seem to indicate the later but we’re not sure yet.
I’m watching Lexy play “Bulls on Parade” right now and she looks like such a badass. A wonderful, geeky, badass. 
Tags: ps3
I worked from home today because we had both a garage door repairman and a chimney cleaner come today. Today was also Lexy’s day off (she gets one off every two weeks). While I hacked away she played Super Mario Sunshine - the reason for what reason I can only guess. The best I can come up with is that she wasn’t beaten enough as a child. This game is SADISTIC. The amount of profanity my ears have experienced today has caused a semi-permanent blush to form on my cheek bones. If ever there was a game that caused Nintendo mouth this is it.
It’s not just that the game is hard. Its punishing. It makes you weep. It gives you heart murmurs. A demoniacally possessed camera turns what should be an easy jump into a suicide dive off into oblivion. You left side goes numb. It conditions you to wet your pants whenever you hear a capella music.
You get the idea. Maybe it’s just that I’m not really that “hardcore” a gamer. I don’t want extreme difficulty - I want to experience a game from beginning to end without getting discouraged. My time is limited and if I have to play the same two minutes of gameplay for sixty minutes I’m going to move onto a different game.
Tags: gamecube
This is a good time to be a gamer but a bad time to have a job and a fiancee. I forgot all about Assassin’s Creed, Lego Star Wars: The Complete Saga, Umbrella Chronicles… and those are just the ones for the consoles I own.
*whimper*
Tags: ps3,wii
I have to be honest - the Wii has been a bit of a disappointment for me. As a diehard Nintendo fan this is impossibly difficult for me to say. I cannot believe I live in a world where not only do I own a Playstation but it sees at least 5x the use that my Wii does. It pains me. I’ve cried myself to sleep at night.
With that in mind I’m pretty excited about the Wii right now. I had the fortune of playing two games on the weekend that have resparked my interest - Guitar Hero III and Zack and Wiki.
Guitar Hero III, while being multiplatform, feels at home on the Wii (notwithstanding the totally unacceptable mono bug that’s been exposed). This was my first experience with any of the Guitar Hero games and despite my skepticism it had me from the first song. Even though I probablly looked like a dumbass I felt like a total pro. Acing a song in that game gives you a real sense of accomplishment. I almost regret buying Eye of Judgment now - if I knew how much I enjoyed Guitar Hero I would’ve chosen it instead.
Zack and Wiki and the Wii were made for one another. Modern(ish) graphics and oldschool LucasArts-style adventure gameplay. I played through a few of the initial levels and felt like I had a smile on my face the entire time. I particularly like how additional players can help along via additional Wiimotes - it lends itself so well to cooperative gameplay by nature that this small touch was a real win for me. I sincerely hope that it becomes a commercial success - the Wii needs more A class ORIGINAL games like this.
Tomorrow of course brings us Super Mario Galaxy. My anticipation for this can best be summed up by gurgling and a cross-eyed stare. Unfortunately for me I can’t buy it - it’s on my Christmas List which means I have a month and a half of agony ahead of me provided I get it at all.
Tags: wii
Looking at my referrer logs is something I can’t help but do. I have to know who’s linking to me. For the most part it’s an easy chore but PHPbb referrers drive me mad. Not including the query string means I need to hunt and peck my way around systems I’d sooner never look at. Stupid complusion. Maybe I should just learn to not look in my logs…
Edit: title altered to prevent attack scripts that think this is a PHPBB system.
Tags: spam