Cider is a fully managed development environment for open source hacking on Mac OSX. It’s powered by rvm, homebrew and chef. You only need Xcode to get started.

Cider builds everything up in ~/Developer. It won’t stomp on any of your current installations so you don’t have to commit your entire machine immediately. It’s simple to rollback if you really want to.

On iOS PhoneGap Notifications

The documentation for this in the PG docs are a little anemic when it comes to this topic for some reason, so I’m putting this out there.

Some of the time when you present a modal dialog like ``alert'' and almost always when your present a ``confirm'' you want to perform some action when the dialog is dismissed.  

The ``alert()'' and ``confirm()'' calls in normal web development are blocking and thus you do not use the typical “callback” event-driven method you might be used to in the mostly event-driven world of web development.  In these cases the main-thread is blocked until the dialog is dismissed and you’re passed back some sort of data on which button was pressed (in the case of a confirmation dialog).

The call for showing an alert in PhoneGap looks something like this (and this is how it is presented in the documentation):

navigator.notification.alert(message, title, buttonText);

What isn’t documented at all is that this method returns what Obj-C/Cocoa developers call a “delegate” (checked into master on May 10, 2010).  A delegate is just an object which has various known method names which the Notification object can call when the dialog is dismissed.  This is pretty much like a callback, except instead of just passing in a named or anonymous callback to the ``notification.alert'' call, you are returned this delegate which you can plop your callback into, like so:

delegate = navigator.notification.alert(message, title, buttonText);

delegate.onAlertDismissed = callback;

When the user clicks the button on this alert, the ``callback'' method will be executed and passed in two bits of information, an ``index'' and a ``label'' which correspond to the button you pressed.  

If you looked at the docs, you might wonder why this is useful when you can only show an alert which only has a single button.  Well what is also not in the docs is that there is a parallel ``notification.confirm'' method which can display multiple buttons (two, really).  What’s also not explained is that this just calls out to the “notification.alert” method with a ``buttonText'' which is just a comma-delimited string with your button labels, like so:

delegate = navigator.notification.confirm("You done goofed!", "Back traced!", "Crap,Lulz");

This is exactly equivalent to the following:

delegate = navigator.notification.alert("You done goofed!", "Back traced!", "Crap,Lulz");

The only advantage of the ``notification.confirm'' call is that it makes your code more understandable and if you just want “OK” and “Cancel” you don’t have to pass in any parameters for buttonLabel.

Hope this helps anyone out who is looking for this information!

Super cool analysis and 5 (or 4) really awesome singers:

If you’re a singer, you should be following Claudia Friedlander’s blog. The classically-trained, New York-based voice teacher provides sage advice not only for singers for all types, but also for musicians and people in general.

Although at least one of her students sings metal, Friedlander knows virtually nothing about it. I wondered what she would think of some of metal’s most classic male singers – the foundation of the artform. It’s rare to find someone who isn’t familiar with any of these singers. Her perspective would be a fresh one, free of cultural baggage. I sent her five completely unidentified songs. Her comments are below. I have also included initial reactions she sent me immediately upon hearing the singers.

Whoa.

Whoa.

chartier:

A great new Tumblr blog. Twice I laughed out loud in Argo Tea.

via Cesar Torres

If you’re getting this error while trying to update a localStorage record in iOS 3.2 (no idea if this is fixed in 4.0 or later), you’ll just need to remove the key before you store new data there. 

source

Holy crap! I played this game (ZZT) non-stop as a kid on my 286.  It even had its own programming language which I used to make my own levels (ZZT-OOP).

This is billed as: “(a leet ascii text adventure game you play in the browser with hundreds of thousands of other people in real-time)

(re)Implemented on Node.js and jQuery !

Ars Technica toolbar Safari extension

Just something I made for fun a few weeks back.  I put it in Github and updated it a couple of times, but I never posted about it here for some reason.

You can do stuff like change the update frequency and pick a single section to view. I think it’d be pretty easy to enable combining multiple sections:

The meat of the extension is a toolbar.  So the meat of is in toolbar.js, but that’s not the fun part.  I actually wrote the code for this extension in CoffeeScript which is a much funner way to write your JavaScript (trust me, just check it out).

So poke around in toolbar.coffee if you want to see some CoffeeScript in a real-world use-case, and also to learn a little bit about making toolbar-based Safari Extensions.

That’s it, enjoy.  And if you really would like to see me release this as a real extension, let me know.  If I get enough response, I can probably be cajoled. I’ve not done anything officially with it, as I passed it over a couple of people and I didn’t get the feeling they were dying for something like this ;)

That’s all, have a good week ;)

To get you ready for Katy Perry’s new album tomorrow!

Home-made gnochi and sauce—Saturday night cooking

Jacqui made gnochi from scratch (wow!)

I couldn’t let her just dump store-bought sauce on these.  So I went out on the back deck and plucked some deliciousness off my plants. Four black tomatoes and one of my anaheim peppers:

I cooked up some onion, garlic in some olive oil, then peeled the tomatoes and added them to the pan along with half of the diced pepper (it was freaking spicy!).  Added a little oregano, salt, pepper, parsley flakes and a few healthy glugs of red wine ;)

I let that simmer and cook down for a few minutes.  Turned off the heat and then folded in some ripped up basil that Jacqui’s been growing.  Finally, we tossed the cooked gnochis in it.  It was so good!

When worlds collide

Similar to PhoneGap but iOS only. Also costs $99.

There are a number of applications that can be used to turn a web application into a standalone desktop application. These applications are commonly referred to as Site Specific Browsers, or SSBs. The best way to generate an SSB is with Fluid (for Mac OS X) or Chrome (for Linux and Windows.)

via Lee

Thanks Tumblr! Theme by Thijs.