In honor of the 5th of November, Creating Building Blocks for Independents is now a wiki: buildingblocks.pbwiki.com.
Last Friday Leah IM'd me at the last minute and "tastefully hinted" (her words) that she was looking for help with transit directions from the East Bay over to Yahoo Hack Day. It turned out that I was driving down, despite having just flown in earlier that day from a wonderful trip to Japan where I had the honor of speaking at the New Context 2006 conference organized by Joi Ito and Digital Garage (much thanks to Fumi and Yuki as well!), and could use a carpool partner.
Suffice it to say we got to Yahoo's main campus in Sunnyvale in short order, registered, made the rounds saying hello to all the familiar friendly faces and stuffed our faces with the extra pizza in the cafeteria. After settling into the VIP coding area squatted by the Ruby Red Labs folks and wondering what the heck we were going to do, Leah exclaimed, wouldn't it be cool if you could see a Flickr photo that you like and send it to someone like an eCard. In fact, we couldn't figure out why Flickr hadn't already done this, except for the obvious only 24 hours in a day problem. I knew Greasemonkey could modify any webpage, like add a "Send Postcard" button to Flickr, even though I'd never written a user script. We also found out that the Yahoo Mail team had just released a beta version of their API so we realized all the pieces existed to build this.
Friday night we totally got the user interface working, and thanks Leslie's graphic design skillz, with icons that perfectly matched the rest of Flickr's cute little buttons on top of a photo (note the new "POST CARD" button on the far right):
Check out the cute pink highlights in the hover state:
Thanks to Firefox's built-in "View Selection Source" control-click menu command, I was able to reverse engineer the markup and HTML class names that Flickr uses for their drop down dialogs and thus immitate their look and feel. Leah wrote javascript (user script) to both create the button on the page, and create the script to create the "Send photo postcard:" dropdown dialog as well:
Sometime in the early AM hours we code completed the user interface and decided to catch a few hours of sleep before building out the back end.
Saturday morning Leah found out that there were actual prizes at stake for Yahoo Mail API hacks (iPods!), and so we got serious. Thanks to immeasurable help from Ryan Kennedy of the Yahoo Mail team, we got the backend piece barely working on Saturday and added little bits like an alert letting the user know that their photo had been sent:
We signed up just as we got everything working as #45 on the Hack Day contest submission wiki page. Then we anxiously waited our turn.
Leah spoke while I ran the demo. The network was reaaaaalllllllllyyyyy slow.
We had timed our demo for 60 seconds, and barely got it done in the allotted 120 seconds.
Phew. We were so relieved to have successfully finished and demonstrated a hack: our first Greasemonkey hack, first Flickr DOM walking/scraping, and first Yahoo Mail API app, that we just sat back and enjoyed watching the rest of the demos. But surprise surprise, our simple little hack was deemed worthy of 2nd place Yahoo Mail API hack! Look at us and our shiny new shared-custody 30 gigabyte iPod!
We've posted the hack at Leah's website and have open sourced it under a Creative Commons Attribution 2.5 license. Note that in the interest of showing what actually won, what's posted at that URL is raw and unchanged from what we demonstrated. We know it is suboptimal, we know it could use cleanup and improvement. We plan to do a cleanup pass and also put out the PHP used for the Mail API piece.
Instructions / requirements / caveats:
Thanks again Yahoo for throwing an awesome event. We had a blast. See my photos, and everyone's photos.
P.S. Hey Flickr team, it would be really cool if you could add this feature natively and just have it work with your built-in email system. You're welcome to use any/all of our art/code however you wish (if CC-by-2.5 is not enough for your lawyers) - all Leah and I ask for in exchange are "lifetime/neverending" Flickr Pro and Yahoo! Mail premium accounts. :)
Thanks!
We are not at war.
Ideas are at war. We are merely their pawns and canonfodder.
Fighting a war by fighting people is merely attacking symptoms rather than causes.
In the long run, fighting a war by fighting people is only as effective as fighting a disease by fighting the people that have contracted it rather than fighting the disease itself.
But there is no equivalent to antibiotics for ideas. You cannot kill an idea.
Several approaches have been attempted to fight ideas.
Which approach do you think is the most effective?
There is a fourth approach which AFAIK has never been attempted by design though instances have clearly evolved in the wild.
Whatever method(s) you choose, the larger choice is clear. Will you stand up to fight the bad ideas? Or will you waste your time fighting the people?
Technorati is looking for a modern professional XHTML+CSS+script web developer who has some experience working with authoring valid semantic XHTML in and across templates (e.g. PHP templates).
This is a fulltime position, onsite, at Technorati in San Francisco. You will be working on a live website that is updated several times a week, sometimes several times a day.
The Web Developer is responsible for taking design input from a variety of sources (including internal design mockups, product manager requests, external requirements, and guidance from the Chief Technologist - yours truly), and producing valid semantic XHTML 1.0 Strict, valid cross-browser compatible CSS, unobtrusive Javascript that degrades well for non-Javascript clients.
We are a startup, and thus there are plenty of opportunities to do lots of different things and learn new skills. Speaking of which...
We're passionate about quality code and we're looking for someone who is passionate about their craft as well, i.e. those who are continuously learning and updating their skills. Yes this means you have not only heard of AJAX, but have at least tinkered with it on your own site, even if with something like the quick and easy to use AHAH subset of AJAX.
We are pushing the limits of how fast the live web can be indexed and shown.
See the job description on the Technorati jobs page for more details on responsibilities, requirements, and plusses. A few plusses I want to call out in particular, experience with:
In addition to sending your text (ASCII or UTF8) or (X)HTML version (URL is fine) of your resume to careers@technorati.com, please feel free to CC me at tantek at technorati. Principals only.
My new iBook G4 is now dying of kernel panics upon turning it on or while booting or shortly after booting at the login screen or shortly after logging in. Etc. All the signs of some flakey hardware problem.
It's been less than four months folks.
And people ask me why I carry two laptops when traveling.
Apple, can you make a truly portable computer that people can expect to reliably take with them everywhere nearly everyday and have it last say at least 12 months like the warranty says? Can anyone?
It's been a very busy past few weeks and I'm even further behind in blogging about things since the 8 steps to serving better (X)HTML. Though usual things have been keeping me busy, I have to blame a friend of mine for getting me to check out a very different social networking site cofounded by my colleague Ben Brown, which has certainly consumed a lot of time, both online and off. Suffice it to say I'm still figuring it out. It began with Promsumating which was full of turning points and firsts, but best of all, some amazing people. More details later, I promise. Or you can search for them yourself if you're too curious to wait.
For now, if you think of yourself as "different", "geeky", "not_average", or perhaps "clever", check out Consumating.com and start tagging. I'm pretty easy to find.
In other news it's been over a month since a particularly painful transition, and I've been postponing dealing with a lot of it. I'll be taking a few days off, visiting my family, some distant friends, and doing some long overdue introspection. Not sure if I'll catchup with the blogging or not. Perhaps if the introspections are interesting or more generally applicable I'll share what surfaces.