No Business Naming Things

Where sassy women wear jaunty hats.

No Business Naming Things header image 4

Entries from November 2008

Rockstar

November 24th, 2007 · No Comments

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:

Cats and Dogs

November 23rd, 2007 · No Comments

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: ,

Shovelling

November 22nd, 2007 · No Comments

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: ,

Winter!

November 22nd, 2007 · No Comments

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:

You Heard The Man, Blow Your Brains Out!

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.

  1. open NSObject and put the following line at the beginning of release():
    System.out.println(”Release: ” + toString());
  2. launch and make the crash happen
  3. 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
  4. 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.

  5. 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.
  6. 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.

  7. find all callers to
    release()

    on the subclass.

  8. 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

‘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:

Guitar Hero

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:

Super Mario Sunshine: A Cure For Buddhism

November 16th, 2007 · No Comments

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:

Ah Crap

November 14th, 2007 · No Comments

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: ,

Dusting Off The Wii

November 12th, 2007 · No Comments

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:

P H P b b

November 12th, 2007 · No Comments

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: