Posted by pookzilla on December 28, 2007
This has been another awesome Christmas. No stress, no fuss, just good eating, great company, and a crazy amount of presents.
First, the presents. I wont enumerate them completely but the items relevant to what I talk about here include three video games (Super Mario Galaxy, Assassins Creed, and Folklore), Wii remotes and Sixaxis controllers (shared), and a Hello Kitty Stratocaster with practice amp and numerous Hello Kitty branded accessories(!).
First, the games.
After about 3-4 hours of playtime I feel the negative reviews of Assassins Creed are unfair. It’s not the second coming of video games but I find it quite enjoyable, particularly jumping from rooftop to rooftop like a medieval Batman. For nothing else I’d stick with it just to experience the story, which in my opinion, is probably the freshest new game IP in years.
In the past three days Lexy and I have put in about 21 hours of Mario Galaxy. It’s my opinion that this is indeed the best game ever made. Despite being on the Wii I have to say it’s probably the prettiest game on the current generation of consoles (not accounting pixels of course – but design). It is a bit on the easy side, but I do not consider this a fault. I’ve yet to think to myself “this game isn’t fair.” When it does become difficult you feel that with just a few more tries you can accomplish what’s vexing you. This is SO unlike Mario Sunshine. If I had one complaint it would be that the hub area (the Starship) isn’t as rich as Delfino Plaza in Sunshine. You could spend hours just tooling around Delfino sniffing out secrets. The secrets that are in the Starship, such as they are, are quite shallow in comparison.
I can’t yet comment on Folklore – I haven’t had time to put it in yet. But from the demos I’ve played I’m going to enjoy it quite a bit.
Now, the guitar. I’ve been keen to take up an instrument again lately. My last foray into music (despite being limited) was great if only for one thing – it really helped boost the self esteem. On a lark I suggested that I might want a Hello Kitty instrument and lo – there it was on Christmas morning! I haven’t managed to learn a thing so far but I suppose it’s early yet.
Posted by pookzilla on December 22, 2007
Perhaps it’s a side effect of being a new home owner, but I’m really paranoid lately. This past week has been a real chore for me – dealing with the snow has left me worried perpetually. I worry about the weight of the snow on our roof, I worry about ice buildup on the roof (which we are now experiencing the effects of – we have our first leak in the living room window), I worry about the Big Melt coming tomorrow and where all the snow is going to go. This worry was alleviated somewhat today the fact that the city removed the 20+ foot snow mound that had built up in the middle of our street. Although the hill is gone, they did nothing to clear the drains on the street, both of which are quite close to our place. Again, feeling paranoid (and perhaps overly self reliant) I went out not long ago and cleared both drains of all the snow around them. Without a proper ice shovel this was no easy task but it’s done – if the Big Melt is as bad as I hear it’s going to be tomorrow we should be better prepared.
What I find funny is that none of the other neighbors thought to do this themselves. It’s not like we’re the only ones that could benefit from a little drainage tomorrow. Perhaps it’s because I hate relying on other people for my own well being. If the city doesn’t clear the drains and I get fucked because of it I can’t help but be held responsible for some degree – I had the ability to affect some change on the matter.
Oh, when I said that the pile in the center of our circle was about 20 feet high I wasn’t kidding. I decided to trek to the top of it yesterday to get a better look at the height of snow on our roof. When I reached the top I discovered that I was looking down onto almost the entirety of our roof. I was scared shitless and came back down on my backside. These bones aren’t as rubbery as they used to be.
Posted by pookzilla on December 21, 2007
With the help of some family I was able to clear the snow off of the house. This involved soaking my arms up to the elbows in ice cold water in the gutters, but it was done. After coming in and getting my snow clothes off Jack decided to use me as furniture. He’s very warm, so I was happy to oblige.

Posted by pookzilla on December 20, 2007
On a lark I picked up the new Mind’s Eye Theatre. I always managed to avoid LARPs as a kid but for some reason the idea is appealing to me now – perhaps due to the fact that 90% of my friends in Ottawa have scattered to the four winds over the past two years and I could use to make some new local friends. ANYHOO… I gave it a quick browse last night and found the similarity to the tabletop whitewolf stuff to be welcoming to the extreme. Borderline enthusiastic, I set out today to investigate whether or not there were any local Camarilla chapters or, if not, some independent games that I could join.
Unless I’m totally off the mark, some kind of nuclear weapon has detonated in the LARP world or at the very least their online presence. Pretty much every LARP website I went to is either dead, either utterly (404s) or effectively. This includes the Canadian Camarilla franchise. Their webserver seems to have lost all content and is tossing back default Apache content for all requests. Hell, even White Wolfs official Camarilla website is seemingly dead – half of the links don’t work! I did manage to find an old World of Darkness LARP in Ottawa that seems to be at least remedially active but I’m not very enthusiastic about the oWOD – I’m one of the few people who though the reboot was the best thing they could have done. All the same, I may give them a looksy – given the state of the landscape I don’t think I can afford to be too choosy.
I’m not surprised the LARPs are suffering. World of Warcraft is a brutal foe who’s impact on tabletop gaming has been observed (although I’ll be damned if I can find my references for this one) for some time now. Additionally, I have to wonder if Second Life is eating into their participation at all. It seems to be an ideal medium for moving LARPs into the online world. Perhaps it’s worked too well…
Posted by pookzilla on December 18, 2007
I apologize to anyone waiting for a Christmas card. We have them stamped and ready to go – we’re just missing the labels. I doubt they’ll make it on time for Christmas time but I guess that’s what we get for being slackers!
Posted by pookzilla on
There is another variant of the workbench startup problem I talked about previously that is outlined in bug 195664. In a nutshell, the problem is this.
In your editor (or view) part init method you need to pop up a progress dialog for some reason. When that kicks off, it uses a sync exec to do some work within ModalContext. After the workbench has started, this isn’t an issue, but if you hit this on startup there’ll be issues. The workbench is in a state where non-startup (a)sync execs are batched up for execution at a later time, after initialization is complete. Since we’re invoking one of these guys from the UI thread and waiting for it to complete we’re going to deadlock. Boourns.
So, what to do? Well, to start with, you probably don’t want to do any operation long enough to need a progress bar in the init method. Instead of performing the operation at that time instead defer the operation until after the editor is initialized. To do this you can use UI jobs. For instance, imagine an editor that prompts for a log-in before showing contents and then shows progress while the log-in is verified. The code could look something like the following:
[code lang="java"]
package interactiveEditor;
// snip imports
public class InteractiveTextEditorWithLogin extends TextEditor {
private StackLayout layout = new StackLayout();
private Composite composite;
public void init(final IEditorSite site, IEditorInput input)
throws PartInitException {
setSite(site);
setInput(input);
Job loginJob = new LoginJob("login", site);
loginJob.schedule();
}
public void createPartControl(Composite parent) {
composite = new Composite(parent, SWT.NONE);
composite.setLayout(layout);
Label label = new Label(composite, SWT.NONE);
label.setText("Please log in.");
layout.topControl = label;
}
protected void createRealContents() {
Composite realComposite = new Composite(composite, SWT.NONE);
realComposite.setLayout(new FillLayout());
super.createPartControl(realComposite);
layout.topControl = realComposite;
composite.layout(true);
}
private final class LoginJob extends UIJob {
private final IEditorSite site;
private LoginJob(String name, IEditorSite site) {
super(name);
this.site = site;
}
public IStatus runInUIThread(IProgressMonitor monitor) {
Dialog dialog = new LoginDialog(site.getWorkbenchWindow()
.getShell(), site);
dialog.open();
return Status.OK_STATUS;
}
}
private final class LoginDialog extends Dialog {
private final class LoginRunnable implements IRunnableWithProgress {
public void run(IProgressMonitor monitor)
throws InvocationTargetException,
InterruptedException {
monitor.beginTask("Logging in", 10);
for (int i = 0; i < 10; i++) {
monitor.worked(1);
Thread.sleep(500);
}
}
}
private final IEditorSite site;
private LoginDialog(Shell parentShell, IEditorSite site) {
super(parentShell);
this.site = site;
}
protected Control createDialogArea(Composite parent) {
Composite composite = (Composite) super.createDialogArea(parent);
Label nameLabel = new Label(composite, SWT.NONE);
nameLabel.setText("Name:");
new Text(composite, SWT.SINGLE);
Label passwordLabel = new Label(composite, SWT.NONE);
passwordLabel.setText("Password:");
new Text(composite, SWT.PASSWORD);
return composite;
}
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, 1, "Login", true);
}
protected void buttonPressed(int buttonId) {
close();
}
public boolean close() {
boolean code = super.close();
ProgressMonitorDialog pDialog = new ProgressMonitorDialog(site
.getWorkbenchWindow().getShell());
try {
pDialog.run(false, false, new LoginRunnable());
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
createRealContents();
return code;
}
}
}
[/code]
Instead of opening the login dialog (and subsequent progress dialog) directly in init we instead spawn a job that will open the the dialogs when executed. The initial contents of the editor is a simple label and only after the heavy lifting has been performed by the job are the real controls for the editor created and populated. This technique will work both when the editor is opened in a running Eclipse instance and when it is restored on startup in subsequent Eclipse instances – the workbench is smart enough not to run UIJobs until everything is settled after a startup.
So, this code will work but it still isn’t necessarily a good idea. Opening a dialog as a consequence of opening an editor is bad form. What would happen if you had two of these editors visible on startup? You’d have two dialogs opened with no idea which editor they belonged to. Instead, you might want to try the following code instead:
[code lang="java"]
package interactiveEditor;
// snip imports
public class InteractiveTextEditorWithLoginNoJobs extends TextEditor {
private final class LoginRunnable implements IRunnableWithProgress {
public void run(IProgressMonitor monitor)
throws InvocationTargetException, InterruptedException {
monitor.beginTask("Logging in", 5);
for (int i = 0; i < 5; i++) {
monitor.worked(1);
Thread.sleep(250);
}
}
}
private StackLayout layout = new StackLayout();
private Composite composite;
@Override
public void init(final IEditorSite site, IEditorInput input)
throws PartInitException {
setSite(site);
setInput(input);
}
@Override
public void createPartControl(Composite parent) {
composite = new Composite(parent, SWT.NONE);
composite.setLayout(layout);
Composite loginComposite = new Composite(composite, SWT.NONE);
loginComposite.setLayout(new GridLayout(2, false));
Label label = new Label(loginComposite, SWT.NONE);
label.setText("Please log in.");
label.setLayoutData(new GridData(GridData.BEGINNING,
GridData.BEGINNING, true, false, 2, 1));
Label nameLabel = new Label(loginComposite, SWT.NONE);
nameLabel.setText("Name:");
nameLabel.setLayoutData(new GridData(GridData.BEGINNING,
GridData.BEGINNING, true, false, 1, 1));
Text nameText = new Text(loginComposite, SWT.SINGLE);
nameText.setLayoutData(new GridData(GridData.BEGINNING,
GridData.BEGINNING, true, false, 1, 1));
Label passwordLabel = new Label(loginComposite, SWT.NONE);
passwordLabel.setText("Password:");
passwordLabel.setLayoutData(new GridData(GridData.BEGINNING,
GridData.BEGINNING, true, false, 1, 1));
Text passwordText = new Text(loginComposite, SWT.PASSWORD);
passwordText.setLayoutData(new GridData(GridData.BEGINNING,
GridData.BEGINNING, true, false, 1, 1));
Button loginButton = new Button(loginComposite, SWT.PUSH);
loginButton.setText("Login");
loginButton.setLayoutData(new GridData(GridData.BEGINNING,
GridData.BEGINNING, true, false, 2, 1));
loginButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
ProgressMonitorDialog pDialog = new ProgressMonitorDialog(
getSite().getWorkbenchWindow().getShell());
try {
pDialog.run(false, false, new LoginRunnable());
} catch (InvocationTargetException ex) {
ex.printStackTrace();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
createRealContents();
}
});
layout.topControl = loginComposite;
}
protected void createRealContents() {
Composite realComposite = new Composite(composite, SWT.NONE);
realComposite.setLayout(new FillLayout());
super.createPartControl(realComposite);
layout.topControl = realComposite;
composite.layout(true);
}
}
[/code]
This code will embed log in controls into the editor instead of opening a dialog to display them. This is a much less offensive solution, particularly in the restoration case. No one wants a dialog in the eye first thing in the morning after booting Eclipse!
Posted by pookzilla on December 16, 2007
The boys have the right idea today…

Posted by pookzilla on December 15, 2007
There are certain words and phrases you don’t want to read in your weather advisory. Some of these include: “copious amounts of snow”, “near-paralyzing conditions”, “dangerous winter weather” and “near record snowfall amounts”. By the time this is all said and done we’ll be able to say we have feet of snow on the ground.
Posted by pookzilla on December 14, 2007
As it turns out a log that doesn’t LOOK like it’s on fire may indeed be on fire. Finger 0, Fireplace 1.
Posted by pookzilla on December 13, 2007
If anyone sent me any interesting mail to my pookzilla.com account over the past day you might want to resend it. OS X Mail just ate my pookzilla.com inbox. I was able to archive it before it happened but I’ve effectively lost the ability to easily search through 3 years of mail. Color me pissed the hell off.
It all started this morning when I realized I hadn’t gotten any new mail since about noon yesterday. Thinking this was weird, I logged into my webmail and found about 100 mail waiting for me. Going back to Mail, I checked my connection and everything appeared to work fine. I went into my settings and just for the hell of it changed my password to gibberish. I synched again and lo – the connection still seemed to be working! Nothing I did would reset the account to a state where it would pop new mail from the server. Reluctantly, I archived my mail and added a new account. I did a pop and got down about 150 new mail.
Thinking I was out of the woods I briefly scanned my subject lines and then did a rebuild of my Mailbox – god knows why. When it was done I now had NO mail in my inbox! I still had mail in my secondary sorted folders (the ones that I used to sift through my mailing list mail) but my main inbox was empty. What’s more, all of the mail was gone from webmail as well! Whatever it did, it deleted the mail in both places despite my settings for the account saying “never delete.”
So not only have I lost the ability to browse Mail for the past three years but I’ve totally lost all personal Mail from the past 24 hours. From my brief scan of the subject lines I know I lost some stuff from people and I apologize for that.
When I get home tonight I will give Time Machine a try and see if I can’t restore to yesterdays state. I can swallow a days loss of mail but if I cant restore my inbox to its former state I’m going to seriously consider reverting to Tiger.