Cut the Rope in HTML5 and Javascript
The developers of the puzzle game Cut The Rope have ported their code from Objective-C to Javascript and HTML5.
And, despite the IE slant, the game works really well in Firefox! Check it out:
The personal blog of a Toronto based software developer, musician, sound designer, and theatre enthusiast.
The developers of the puzzle game Cut The Rope have ported their code from Objective-C to Javascript and HTML5.
And, despite the IE slant, the game works really well in Firefox! Check it out:
Some fine fellow has written some Javascript that runs one of my favourite games in the browser. I just watched the opening cutscene of Monkey Island in Firefox!
It’s still a bit buggy, but it’s a start!
There are a bunch of add-ons out there to help you sync Thunderbird with your Google Contacts.
I want to share my favourite one with you.
Simply named, “Google Contacts”, this add-on automatically detects if you have a GMail account in your profile, and does the rest of the heavy lifting for you.
Honestly, it’s as easy as falling off a bike.
So a big thank you to the add-on developer, H. Ogi!
My friend Joel Beck is kind of a badass.
When he’s not designing / building reactors for Atlantic Hydrogen in New Brunswick, he’s learning all sorts of cool skills.
Skills like leather-working.
Look what he gave me as an early Xmas gift:
This is a one-of-a-kind, hand-made leather wallet, made by my good friend Joel Beck.
Thanks Joel.
There’s no denying it: the vast majority of Thunderbird users are using some flavour of Windows.
So it’s a bit strange that I do most of my development on Linux, and use Thunderbird most regularly on Mac OSX.
Therefore, I’ve recently gotten a hold of a new, super-powerful Windows 7 box. Furthermore, in an effort to better understand what my users go through and experience, I’ll also be using Thunderbird on Windows as my primary mechanism for reading my mail.
So that’s all good, but there’s one problem: building Thunderbird on Windows takes forever.
But it doesn’t have to.
So the Simple Build Instructions for Thunderbird instructs developers to get the MozillaBuild package, which includes a bunch of the tools you need to get Mozilla stuff up and building on Windows. One of those tools is “make“, which is a tool that originates from the world of UNIX and Linux.
The problem with the make included with MozillaBuild is that it doesn’t take advantage of multiple processor cores on Windows. So even if you have a crazy-powerful 8-core machine, when you just use the vanilla “make -f client.mk” command, you’re only going to be using one of your cores.
Enter pymake. Pymake is a Mozilla-maintained mostly-compatible implementation of make in Python. The advantage? On Windows, we can finally use all of our cores.
So here’s how to set that up.
And blam, now you’re cookin’!
I can get a debug build done, from scratch, in about 22 minutes. Woo!
Once again, I’ve let my blog gather dust. And the comments have been piling up. And the emails have been rolling in. And I’ve been silent.
Sorry about that!
I’ve been pretty heads-down lately – here’s what’s going on:
About the address book – I’ve received a bunch of email making suggestions and asking for things. That’s great! I’ll comment on that shortly – I just need a little more time to clear Account Provisioner and Tabs on Top off my plate.
More soon.
So my dream of redesigning / rebuilding the Thunderbird address book is moving forward. Here’s the draft feature page.
I also got the Contacts add-on from Labs working (limping, rather) in Thunderbird. Some very interesting ideas in that add-on.
I’ve also started reading some related work. Here’s what I’ve been gazing at for the past few days:
So, basically, I’m exposing myself to as much current work in this problem space as possible. Is there anything else I should be reading?
So yesterday I posted some mock-ups for a new Thunderbird address book design, and I got a bunch of really awesome, useful feedback.
Probably what rang out loudest for me was that I don’t really have any data on how real users actually use Thunderbird’s address book. I know how I use it, but that’s about it. In fact, I talked a Thunderbird user the other day who didn’t even know that the Thunderbird address book existed. Go figure.
And here I went and jumped the gun, and tossed together some mock-ups.
If there’s anything that my grad supervisor Greg Wilson taught me, it’s not to jump to conclusions (or mock-ups) when we don’t have any data to back it up. I’m a scientist, damn it, and that’s just how we roll.
Firefox has this great add-on called Test Pilot that lets Firefox users volunteer to have data periodically collected from them. Work to get Test Pilot working for Thunderbird is underway, and I think that’d be an awesome tool for gathering feedback about how users use the address book.
Some questions I’d want answered, right off the top of my dome, in no particular order:
What are some other questions I should try to get answered?
UPDATE (Aug 29 – 10:00EST)
I’ve gotten some awesome feedback on this post, and some new questions to add to my list. Here they are, in no particular order:
While I was hacking away on my EDS Contacts Integration add-on, I got pretty familiar with the Thunderbird address book.
And as it stands, it’s adequate – but adequate like a pickle is adequate for dinner if it’s the only thing left in the fridge.
The address book interface hasn’t even really changed that much since it was part of Netscape Communicator. Check it out:
Before:
After:
Verdict: the Thunderbird address book is still stuck in the 90′s. It still assumes that your contacts only have one or two email addresses. It doesn’t have any notion of Twitter accounts, Facebook accounts, LinkedIn Profiles, or anything that we would associate with a modern online contact identity. It’s not flexible in the type and quantity of fields that can be associated with a contact.
We can do better.
I should start by saying that the following are just ideas that I’ve been tossing around, and it’s still very very early in the design process. This is just a starting point. Feedback is encouraged!
Ok, enough disclaimer. Here we go:
The first thing to notice is that the address book is now contained in a tab, as opposed to a separate pop-up window.
Next, notice that he tree of “address books” on the left is now gone. I always found it strange to open up the Thunderbird address book, and see that there were…address books inside of the address book. What I imagine instead is that the Thunderbird address book will know about “contact providers”, like Google Contacts, the OSX address book, the Evolution Data Server contacts database, etc. Thunderbird will copy all of those contacts locally for fast searching and processing, and synchronize changes both ways. It’ll also merge contacts that it realizes are the same person. (that’s a ton of work already…).
“But wait!”, I hear you cry. “I don’t want my Google Contacts to be mixed with the contacts from my OSX address book!”.
No problem – the new address book could have a notion of contact groups. Contacts imported from the OSX address book will belong to the OSX address book. Contacts imported from Google Contacts will belong to the Google Contacts group.
And contacts that were common between the two contact providers, and merged, will belong to both groups. Think of it like Google Plus’s Circles – a user can belong to one-or-several contact groups.
And if you want to view the contacts in a particular group, you could just choose that group from the contact group dropdown:
If we select a contact, we could view it like so:
And then we could edit it by clicking the “Edit” button towards the top right:
When we’re editing a contact, the contact list slides away, and we get the full space of the address book to edit the contact. I haven’t exactly figured out what the various editing tools will look like on a contact (especially considering a merged contact where some elements of the contact exist in one contact provider, but cannot exist in another…ugh).
So one thing that we’re missing in that last screenshot is a “Cancel” button. Notice that we have those back/forward navigation buttons in the top left. I’m not sure if those are sufficient / clear enough for the job…but suppose the user could just click “back” to return to viewing the contact without having saved it.
But what about selecting multiple contacts within the contact list? That might look like this:
So I’ve selected a few contacts here, and I can do various things with this selection – like removing the contacts from my address book, or printing them, etc. I can also assign these contacts to contact groups en masse.
Highlighting Barry Addison, Bruce Botrill and Phil Cassidy, I can see that all three belong to my “Friends” and “Clients” groups. Notice that the “Baseball Team” group checkbox looks a bit funny – it’s half filled in, which means that only some of my selection belongs to this group.
From here, I can just click on the various groups I want to assign these three contacts to. If I click on “Baseball Team”, the half-filled checkbox turns into a check – meaning that all of the contacts I’ve selected will be assigned to that group. Clicking it again would clear the check, meaning that all of the contacts I’ve selected will not be assigned to that group (and will be un-assigned if that already were assigned). And if I were to click that checkbox one more time, then it’d go back to it’s half-filled state, meaning that I’ll just keep the contacts that are assigned to “Baseball Team” where they are, and won’t add or remove any contacts from that group. It’s a tri-state checkbox. Kinda funky, but it’s my current solution.
Some other ideas worth mentioning:
Currently, many operations conducted by the address book are synchronous, meaning that the user interface can feel sluggish while it’s waiting for certain events to occur (like writing contact data to a database). These events should really happen in the background so that the address book stays nice and snappy, and the user can go about their work.
This is a big one – any edit or delete events should be un-doable and re-doable. No exceptions.
So that’s what I’ve been thinking about.
Feedback?