Ingy 2.ö

Monday, June 30, 2008

Coffee & Diffie


I've been hanging out in Palo Alto for the last week, meeting new coworkers at Socialtext, and visiting old friends. This last Saturday morning I made a new friend. I was waiting for my coffee and I spied a man sitting at a table using a laptop. Not a rarity around these parts by any means. But this was a man I was pretty sure I'd seen before at a Foo Camp some years ago... "Excuse me, are you Whit Diffie?" "Yes, I am." "Hi, my name's Ingy döt Net"... Whit and I talked a bit and then I ran off to have breakfast with Lyssa.

This morning I ran into Whit again and we ended up talking for about an hour or so. I think I am cursed with this condition that when I meet someone with interesting ideas, I feel compelled to turn those ideas into projects. Whit left me with two interesting ideas...

1) While discussing the concept of "ingy.net", he impressed on my that a query url is a long lasting resource of good information on a subject. For instance http://ingy.net (this blog) may become dead some day, but http://www.google.com/search?q=ingy+dot+net is much more robust. This led me to the idea of creating a blogware wrapper, that basically contained the latest google info about me, without me needing to lift a finger.

So far I have create http://i.ingy.net. For now, it is a simple redirect to google, but may be more interesting at some point. It might be an interesting meme to make domains like 'i.' or 'iii.' to mean, "general information". At this point "www" has very little meaning, but lots of people type it in regardless.

2) Whit is interested in NSA factoids and during some talk about this and Wikis, we came to the conclusion that a wiki would be a decent tool for a group of people with that common interest to share what they know. The main difference is that this data is more structured in nature and wikis are pretty much about free form content.

This discussion rekindled my interest in two older ideas of mine: Kwiki and CogBase. I think that there is a lot of potential in what I would called a "typed wiki", a wiki who's pages have a type and that type implies a certain schema (aka required data). That way you could set up a wiki that contained both free form prose, and also pages that made you fill in a form for certain data. Imagine a baseball wiki. You could have pages on players that required all the typical "baseball card" info and also free formed pages that talked about things like a certain famous game.

Whit was quite an interesting man, but given my current project schedule, perhaps dangerous to meet with too often. ;-)

Monday, June 23, 2008

A Twelve Pack of YAPC


I just got back from Chicago. I really love that place. I usually tell people, "Chicago is a nice place to live, but you wouldn't want to visit there", but I had a great visit.

I went salmon fishing on Lake Michigan with my dad and my brother. We caught 6 fish and drank a few beers, then we met up with mom for a nice family dinner.

I also got to see my old friends Dave, Brooke, Margy and Emily. They really took good care of me. Thanks!

The main reason I went to Chicago was to speak at my 12th YAPC conference. That's me in that picture at the end of my first ever naked impromptu lightning talk!

I've been to 6 North America YAPCs (2001,2002,2003,2005,2006,2008); 5 in Asia (2004-2008) and YAPC Europe in Amsterdam (2001). I've given talks at every one of them.

This year's YAPC was really inspiring to me. Larry Wall's talk was the best one I've ever seen him give. I think it rekindled my spirit to work on the following major (for various definitions of major) open source projects:

as well as my many Perl modules like Inline, IO::All, pQuery, Module::Install, Module::Compile, JS, WikiText and Vroom.

The best part of YAPC is always seeing your old Perl friends and making new ones. Too many people to list here. I love y'all, and y'all know who you are.

Labels:

Friday, June 6, 2008

Good Morning Ingy

Last week I got back from a couple months in Taiwan, with a side trip to Tokyo. Nice to be back to some proper Seattle June weather... cold, wet, miserable. Ah well, we still got the most best coffee houses and I live right in the middle of the that sweet spot.

In the past I've always gone to the nearest cafe, Online Cafe, for my morning americano. While the coffee and people there are awesome... that's just criminal. Within 8 blocks of me there is Victrola, Caffe Vita, Bauhaus, Vivace, Fuel, Republik, Stumptown, Presse, and oh so many more. I love these cafes but never go to them on any regular basis. But this week two things changed...

I became (at least temporarily) a Morning Person. I thought I could avoid the jetlag coming back from Taiwan this year for sure. I did it last year, but alas, this year I got it bad. I woke up every morning at 2:30 or 3am for a whole week. Luckily Victrola opens at 5:30am so by then I was stoked to do something... like get my coffee. On the second day I figured out how to carry a coffee on my motorcycle!















My first Ducati mod. A MotorCycleCoffeeCozy!

Now I can easily go check out a new cafe every morning for like the next 10 years!

Taiwan was a great trip. I got to hang out with old friends Gugod and TvCafe. The Kogai family treated me to 10 days of bliss in Tokyo. Larry and Gloria Wall were there as well (Perl geek nirvana). I actually sat next to the same person on both of my flights to and from Taiwan and get this... he lives 2 blocks from me in Seattle and his name is Jimi Hendrix! We're going to hang out this weekend. Lyssa from LA came out to spend the last two weeks of Taiwan and Tokyo with me. She really knows Tokyo and I know my way around Taiwan, so it was a perfect match.

Good to be back in Seattle and America for a while. Obama FTW!

Monday, March 10, 2008

Comprehensive Programming Archive Network


Tonight I uploaded jQuery to CPAN.

True. The 'j' in that sentence stands for JavaScript, and the 'P' stands for Perl. So why put a top notch JavaScript library on the world renowned archive network traditionally used for Perl?

To me it's all just about programming. I have been a major Perl module author since 2000AD. Last time I checked, less than 10 people have more Perl modules on CPAN. For the last 3 years I have been hacking more JavaScript than Perl. I do this mostly for work, but since my work supports Open Source, I have released much of this code as JavaScript modules on JSAN. I happen to be the only person in the world with a module that is both on JSAN and CPAN; the Jemplate module, because it is half Perl and half JavaScript. (It lets Perl's famous Template Toolkit be used in JavaScript).

JSAN was a really good idea, and led to some key people porting important parts of the Perl packaging framework to JavaScript. Especially the test framework. The result is that there is a fairly standard way to package JavaScript modules, especially if you are a CPAN guy like me.

The problem is that there are only a very small handful of folks paying any attention to the upkeep of JSAN. Truthfully JSAN will never be close to what CPAN is. Fortunately, I have found out it really doesn't need to be. :)

I started toying with the idea of putting other languages on CPAN about 5 years ago, but decided against it after discussing it with some Perl mongers at OSCON. I also started FreePAN.org in 2003 with the goal of making a CPAN for all languages, but that project never really took off.

A couple weeks ago I started rethinking the whole thing. Certainly most languages have their own strong communities and distribution systems in 2008. But JavaScript (as a language) really doesn't. And almost every project I work on these days involves both Perl and JavaScript. And JSAN made JavaScript modules look like Perl modules. So I decided to look into how hard it would be to leverage CPAN for JavaScript's benefit. It was surprisingly easy.

It turns out that if you put any file in the lib/ directory of a CPAN module it will get installed. So, for example, lib/jQuery.js would be installed when the user runs make install.

However, I decided that it wouldn't be too cool to put the jQuery package on CPAN and let the user figure out that it was JavaScript and not Perl. Besides, there is already a Perl module called jQuery! I decided to put all these modules in the JS namespace. So jQuery becomes JS-jQuery on CPAN.

But what use is it to get JavaScript modules installed on your machine if JavaScript can't find them? I wrote a companion module called JS.pm. This module lets you run a command like:

> js-cpan jQuery.js /Library/Perl/5.8.8/JS/jQuery.js

So you can get the path names of the JavaScript modules you have on your system. You can then copy or symlink these modules into your web app. With a *nix command like this for example:

ln -s `js-cpan jQuery.js` jquery.js
Now you can distribute Perl web apps on CPAN that require certain JavaScript modules, and have them be included in the standard way as Perl module prerequisites.

For the most part, I plan to just upload my own JavaScript code to CPAN. But lately, almost everything I write in JavaScript relies on jQuery. It's just that good. If JavaScript 2.0 ever comes out, it should have the jQuery core included in the spec. :)

Wednesday, February 6, 2008

The Year of the Wiki

Happy new year! It's Chinese New Year. The year of the Rat.

Rat. Hmm. I don't think I want to spend this whole year giving honor to the Rat. See, I live in America. I've spent the last 7 years under the Rat.

I'm actually very excited about this upcoming year, and the possibilities for doing good things and creating great things. I'm particularly excited about Wikis.

In 2003 I wrote some Wiki software called Kwiki. For a while it really started a wildfire, especially in the world of Perl. I set Kwiki up to make the software itself a collaborative experience, much in the way the Wiki is about collaborative content. In the following months and years, many Perl hackers hacked over 250 Kwiki Plugins!

Sadly, Kwiki fell to the sidelines for the last couple years. Last winter it started to surge again only to be stopped dead in its tracks by my accident in Taiwan in the Spring.

Now I am almost fully recovered and my enthusiasm for Wiki and Kwiki is back in full swing.

I spent this last week at Socialtext in Palo Alto. Socialtext is the original Wiki company and my employer of the last 5 years.

This last weekend I spent 48 hours in San Francisco, scheming and hacking with Eugene Eric Kim (eek) the father of the Purple Wiki. Eugene and I crafted some very ambitious Wiki plans for 2008.

Tonight I am at the Portland Wiki Wednesday, sitting across the table from Ward Cunningham, the inventor of the Wiki itself.

It's definitely been a Wiki Week. I'm getting the feeling that maybe it should be a Wiki Year. With all due respect to the Chinese, I declare the next year, starting right now:

The Year of the Wiki!!!



If you'd like to join me, visit:

Wednesday, November 28, 2007

The Hackers Will Always Overcome


So I bought a ticket to go to Taiwan in December, but later decided to postpone the trip.

The departure date was next week so I knew I'd better call today and cancel it. I called the airline at 5:15pm and they told me to use their website to cancel it. So I hung up and surfed on over.

After finally navigating this very crufty site to the cancellation page, I filled out the form and clicked the CONFIRM button. The page simply zipped to the top and did nothing. Strange. I tried again. Same thing. I looked around to find a better button to click. Nada.

So being a hacker I viewed the source code for the button and saw that it called the "validate_data" javascript function. I tried entering in some bad data, and it gave me alerts saying that my data was bad. Then I fixed all the bad data again and nothing. again.

At this point I said fµck it and called them back... I'm sorry, the office is now closed... office hours are from 9am to 5:30pm...

FµCK! This time I really said ƒµçk it!! I'm a hacker! I'm going to hack this site and make it work!!!

I fired up Firebug and did a document.getElementsByTagName('form'). Cool! Just one form. I clicked on the result and firebug showed me the guts of the form. It all looked good. Then I saw onsubmit="return validate_data()". That stupid stupid JS function. document.getElementsByTagName('form')[0].removeAttribute('onsubmit').

Buh-bye.

Now I went back and clicked CONFIRM again. Nothing... Hmm. Is this button even part of the form? Oh ƒµçk it. Who needs a button to submit a form? document.getElementsByTagName('form')[0].submit().

Voilà!

Don't let crappy e-commerce sites get you down. Just hack the ƒµçk out of them!

Friday, October 12, 2007

Fling, Me, A Passport


The craziest thing just happened to me! It makes me believe in life a little bit more.

A delightful man named Fling, whom I've never met before just walked up to me whilst I was working at Online Cafe. Yes, Fling. Yes, Online Cafe. None of this is made up. (I'm just not that creative!)

Fling asked me "Is your name Ingy"... Yes... I found your passport on the street... (jaw drops)... wait here and I'll run home and get it for you.

So two nights ago I got back from visiting my coworkers in Vancouver. I guess in the process of unpacking my car, the passport fell out. I had actually noticed it right away, and figured it was safe inside the car somewhere. Today when I got to the cafe, it crossed my mind to go get it from the car. Luckily I put it off and stayed in the cafe so Fling could find me, instead of going into a major freakout that would have ensued, since I need that passport to get back to Vancouver tomorrow.

Wow!

Fling rocks. Life is beautiful.

Speaking of life, I attended the funeral reception for the passing on of my good friend Meghan's
father, yesterday. The Tesh-s are a great family, and we all had a good time enjoying the comfort of friendships, and toasting to the life of Don Tesh. I only met him once, but he had an important effect on my life... He was the retired doctor who referred me to my most excellent wrist surgeon in April.

Rest in peace, Don.