Categories
Coffee Food

Roasty

Moka Kadir again. Took this one to Full City+ / maybe Vienna? Temps on this one are from the fancy new thermocouple I hacked into the roaster.

Vital Stats: 250g roasted, 77F Ambient, Target of Full City++ (447F). Post roast weight: 206g.

Time Temp Heater Fan Notes
0:00 229 100 0
0:15 243 100 0
0:30 256 100 0
0:45 269 100 0
1:00 282 100 0
1:15 294 100 0 Dropped Beans In
1:30 279 100 0
1:45 244 100 0
2:00 206 100 0
2:15 184 100 0
2:30 174 100 0
2:45 171 100 0
3:00 174 100 0
3:15 179 100 0
3:30 186 100 0
3:45 193 100 0
4:00 201 100 0
4:15 208 100 75 Quick fan kick to remove moisture
4:30 215 100 0
4:45 223 100 0 First Aroma
5:00 230 100 0
5:15 236 100 0
5:30 243 100 0
5:45 249 100 0
6:00 255 100 0
6:15 261 100 0
6:30 266 100 0
6:45 272 100 0
7:00 277 100 0
7:15 282 100 0
7:30 287 100 0
7:45 291 100 0
8:00 296 100 0
8:15 300 100 0
8:30 305 100 0
8:45 309 100 0
9:00 314 100 0
9:15 318 100 0
9:30 322 100 0
9:45 327 100 0
10:00 331 100 0
10:15 335 80 0
10:30 339 80 0
10:45 344 80 0
11:00 348 80 0
11:15 352 80 25
11:30 356 100 25
11:45 360 100 25
12:00 364 100 25
12:15 368 100 25
12:30 372 100 25
12:45 376 100 25
13:00 381 80 25
13:15 385 80 50 FC Starts
13:30 390 80 50
13:45 395 50 50
14:00 399 40 50
14:15 403 40 50
14:30 406 40 50
14:45 410 40 50
15:00 412 40 50
15:15 416 40 50 FC Ends
15:30 419 80 50
15:45 422 80 75
16:00 425 80 75
16:15 429 80 75
16:30 432 80 100
16:45 436 60 100 SC Starts
17:00 440 60 100
17:15 445 60 100
17:21 447 60 100 Stopped Roast
Categories
Computers

Tracking Dojo using Git

Lately, I’ve been using Git as my source code management tool of choice, and I’ve especially come to love the Subversion integration provided by the git-svn command. It turns out that Git is an excellent façade on top of Subversion, providing a bunch of features I really enjoy: things like local commits, the ability to reorder commits before sending them upstream, and of course the fantastic branch and merge support for my little local experiments.

One of the projects I track using git-svn is Dojo. Tracking Dojo is a bit tricky as we use a non-standard Subversion repository layout, with each of the five main components of the overall toolkit having it’s own trunk, branches, tags triad, but release tags and most branches are actually handled in tags and branches directories located off the root of the repo. So, there are tags and branches local to each subproject and then there are overarching tags and branches that apply to all five sub-projects at once. It can get a bit confusing.

Anyway, you don’t have to deal with it. I’m putting my Git mirror of Dojo up on github for anyone to fork and enjoy. The mirror is currently updated when I feel like it, but I should have some scripts in place to update it every hour or so. The mirror itself is broken up much like the Subversion repository with one Git repository per sub-project in Dojo, and the bigger Dojo project which knits them all together using git submodules.

If you find this handy, do let me know, or just fork the project on github.

Update:

freelock on the #dojo channel on freenode did something similar but took it quite a bit futher. He found a way to pull all of the dojo subprojects into one git repo, and keep up to date with the overarching branches and tags. I definitely recommend taking a look at his approach if you find this whole thing interesting.

Categories
Computers

Chrome: Google’s New Browser

Google’s new Chrome web browser was released in beta today. So far, I like it quite a bit. It’s fast, the process-per-tab architecture really makes sense, and the awesome little comic book explaining it is brilliantly done. On Vista, the use of the aero glass is a really nice touch and I think the tabs on top really make sense.

I tried to test out the new v8 JavaScript engine it uses, but the SunSpider JS benchmark appears to be getting slammed at the moment. I wonder why… :)

Now it just remains to be seen if this can get any market share and how everyone reacts to it. So far, I give it a thumbs up.

Categories
Etc

haircut

before
before

after
after

Categories
Computers Work

Yay for querySelectorAll. Boo for StaticNodeList.

In the coming months, all of the major browser vendors are going to implement a new API called querySelectorAll, which allows us web developers to query a document for elements matching a CSS3 selector and quickly get back a list of matching nodes. This is really fantastic news and should help to speed up one of the more common things we do in web apps.

We have basic support for the API in the latest Firefox 3.1 nightlies, IE8 beta 2, and WebKit, and Dojo has basic support in trunk for using querySelectorAll to drive dojo.query if it’s available, so I thought I’d try it out and see what happens.

Well, things … mostly … work. The selection stuff is great, but Dojo does one rather nice thing with the dojo.query interface: it returns an Array object that’s been decorated with the JS 1.7 array methods if they’re not natively available, plus some other Dojo-specific things, like connect and style and so forth, to make running operations against the result set easy. For some reason, a number of these methods were broken.

I did some digging and it turns out that the breakage is happening because the querySelectorAll return is not an Array or a subclass of an Array, but a new thing called a StaticNodeList. It looks mostly like an array and works like an array, but it doesn’t have any of the new array methods (at least on Firefox 3.1 and IE8 beta 2) and as it’s not an array, it fails an instanceof check. This means code like this:

var spans = document.querySelectorAll("span");
var divs = document.querySelectorAll("div");
var both = spans.concat(divs); // fails, no concat method

just plain doesn’t work. JS devs already have this array-ish problem with the return from document.getElementsByTagName and the arguments object available inside functions. From looking at the spec for the StaticNodeList, I cannot for the life of me see why this isn’t just a plain array with the standard array methods on it. It’s a static collection, so treating it just like an array should be fine, no?

If anyone can shed light on why the returned value from querySelectorAll is not just a plain JS array, I’d love to hear it.