Tuesday, July 29, 2008

Dia Dos

Nothing much in the way of exciting stuff to report, just checking in on the goals.

  1. I jogged 1.65 miles and did 10 laps in the pool.
  2. I had an apple with my breakfast.
  3. Day 2 without coke was better than Day 1.
  4. Did a couple problems on Project Euler.
  5. Check
  6. Check.
I am deadly tired, since I woke up at 1:30 today. Kathy needs to get home so we can eat dinner and I can hit the hay.

Monday, July 28, 2008

Primer Dia

First day was a success.

  1. I jogged 1.35 miles and did 10 laps in the pool.
  2. I had an apple with my breakfast.
  3. Nothing but water, coffee, and milk were imbibed.
  4. Added some functionality to our item tracker.
  5. Imported new cards and got pagination working on search results.
  6. Here is my blog post.
(You can put your mouse over each to see the goal this addresses.)

Sunday, July 27, 2008

The Face Of The Earth

... I fell off it.

This summer I have slipped into an odd sleeping schedule (complete lack thereof) and time has definitely flown. It's hard to believe that we are almost to August. It's even harder to believe because I don't feel like I've accomplished a lot.

I've done some work on a new interface to the Magic site, and will hopefully get something out there on that front soon. I'm about halfway through SICP, which has been just as mind-expanding the second time as the first. I've also been dabbling the last couple days in creating my own web framework.

The standard response when someone creates their own framework is "there is no way you can do it better than the thousands of people working on existing mainstream frameworks." Yes, there is no way I have time to make a polished framework with all the features of those frameworks, so this argument is true on the surface. But frankly nothing out there is as simple as what I want, and I'm not setting out to make the greatest thing ever, I just want something that works for me.

Besides, it's fun.

But, in order to make better use of the five months of freedom that remain, I'd like to lay out some goals. They are all baby steps for now, with hopeful modifications later on.

  1. Exercise every day when I get up.
  2. Eat at least one piece of fruit a day.
  3. Stop drinking coke.
  4. Devote at least one hour a day to coding.
  5. Devote at least one hour a day to a project.
  6. Blog once a day, and mention progress on these goals.
You might look at #4 and think "You can't even work one hour a day?!" ... but that isn't the issue. When I get to working on something I can get lost for hours at a time. The problem is that I often go two to three days without getting anything done, which definitely needs to stop. Also notice that coding does not necessarily mean accomplishing anything on one of my projects, so those are separate. I might accomplish my coding goal through SICP or Project Euler, but I should definitely make progress on some projects too.

Also, on a less daily front, I think I want to feel out and possibly apply to grad school. So that will be my long term personal development project.

Now one caveat. My 'days' are not standard days, so for the purpose of this, 'every day' is every time I'm awake for an extended period. 'Today,' for instance, started at 10pm Saturday night and is going to end at about 4pm.

Saturday, June 28, 2008

And The Winner Is

So since the Twitter IM bot has been down for like three weeks, I finally gave up on it. I discovered this neat service provided by IMified.com that lets you post to your FriendFeed account via an IM bot. All you do is add friendfeed@bot.im to your Gtalk/jabber account and then send it the message 'help' and it'll tell you what to do. Really I like FriendFeed better anyway, but Twitter seemed like the de facto standard.

If you don't have FriendFeed, I highly recommend it. It's like a blog+facebook+twitter all in one, with a nice interface and tons of nifty development going on around it. The basic idea is that it aggregates all your online activity (that you tell it about) into a feed, then all your friends can comment on each other's feeds. Right now I have mine linked up to this blog, my Disqus comments, and Twitter, so any time I post on one of those it shows up in my feed.

All the items posted by your friends show up in a composite feed, and you can go comment on them and have discussions. You can also post links/messages to your feed, so planning things like group activities is easy. Since all your friends see your message, they can hash out the details in the comments. Hook it up to your Flickr/Picassa account, and you have the equivalent of Facebook photos.

Speaking of Facebook, you can even integrate it with that.

So FriendFeed ftw. If you want to add me, my handle is xich. Or you can just check out my feed.

Saturday, June 21, 2008

On Fuel Efficiency

An interesting study came out showing that people are confused by the MPG rating on cars. Obviously people can correctly figure out that a higher MPG number is better than a lower one, but the issue came when selecting upgrade paths.

Say a family has two vehicles. One is a truck that gets 12mpg, and the other is a car that gets 25mpg. This family decides it wants a new vehicle and it wants to save as much money as it can on gas (and help the environment). Both the car and truck are driven roughly equally. Do they get a new truck that gets 17mpg (an increase of 5mpg over the current one), or spring for a Prius to replace their car (going from 25mpg to 45mpg, an increase of 20mpg)?

If you chose the Prius, you must hate the environment, because the new truck would be the much better choice.

Why? Because think of it in terms of the actual gas saved. A 12mpg truck driven 10,000 miles a year would use about 833 gallons. A 17mpg truck would use 588 gallons, or about 245 gallons less.

A 25mpg car driven the same distance would use 400 gallons, and that Prius would use 222, or 178 gallons less. Thus, (taking 245-178) buying the new truck would save 67 gallons more per year than buying the Prius.

The study showed that this could be solved by simply giving people a better set of numbers to think about. Instead of miles per gallon, give then gallons per mile. And, since gallons per mile is a tiny number and people seem to abhor tiny numbers (audio file), make it really easy by giving it to them in gallons per 10,000 miles.

If you do it this way, our previous example becomes immediately obvious.

The same family has a truck with a rating of 833 (gallons per 10k miles) and a car with a rating of 400. They are trying to choose between a new truck with a rating of 588 and a Prius with a rating of 222. If they buy the truck their combined ratings would be 988 (400+588). If they choose the Prius, their combined ratings would be 1055 (833+222). Obviously the new truck route would be more efficient (988 is less than 1055).

An interesting example of how numbers can be counter-intuitive at first glance. When stated in MPG, the 20mpg increase given by the new Prius seems far better than the measely 5mpg increase given by the new truck, but the reality is the opposite.

You can go take an online quiz made by the people who did the study if you want to test yourself. The overall lesson: think in gallons per mile instead of miles per gallon. It's even easy to do the conversion yourself. Just take 10,000 and divide by the MPG rating of the car. That will give you gallons per 10,000 miles.

For instance, my car gets about 34mpg. If I take 10,000 divided by 34, I get 294. Buying a new Prius (with a rating of 222), would save me about 72 gallons every 10,000 miles. At current prices, that is about $280. Obviously $280 isn't worth buying a whole new car for, and thinking about it this way makes it very apparent.

This should also make another point very clear. The easiest way to save a lot of gasoline is to focus on the biggest vehicles. If the average semi-truck gets 9mpg, and somehow we improved that to 11mpg (just a 2mpg improvement), it would save more gas than replacing a car with a Prius (moving from 25mpg to 45mpg, or a 20mpg improvement). Add to that the fact that semi-trucks drive many more miles on a yearly basis than any car owner does, and you have to wonder why people aren't clamoring for hybrid semis. Having a fleet of hybrid semis getting 14mpg would do way more for the environment than converting every car in America into a Prius.

Of course, I'm still holding out for plugin hybrids. Bring on the electric cars!

Saturday, June 14, 2008

Toadies

unit of h: make up your miiind
unit of h: decide to walk with me
unit of h: around the lake tonight
unit of h: aaaround the lake tonight
unit of h: bah mah side
unit of h: bah my side
unit of h: I'm not gonna liee
unit of h: I'll not be a gentleman
unit of h: behind teh boat house
unit of h: ah'll show you mah dark secret
unit of h: bundundununudnudndu udnu nud nudn (wananwananwannwa) waaaaaa
unit of h: I'm not gonnaaa liee!
unit of h: I want yooou for mine
unit of h: my blushing bride!
unit of h: my lover, BEE my lover
unit of h: yeaha!
unit of h: don't be afraid!
unit of h: I didn't mean to scare you
unit of h: so help me jeebus
unit of h: I can promise yoou
unit of h: you will stay as bootyful
unit of h: with dark haairrr
unit of h: and soft skiiinnnn
unit of h: fo-ev-errrr
unit of h: foo-ev-errrr
unit of h: make up yer mind
unit of h: make up yeeer mind!
unit of h: well I promise you
unit of h: ah will treat you well!
unit of h: mah sweet angel!
unit of h: so help me jeeeeebus
unit of h: aeaehayya
unit of h: give it up to me
unit of h: gibs it up too mee
unit of h: do yoo wanna be
unit of h: MAH ANGEL?
unit of h: gibs it up to me
unit of h: gibs it upp to meeeee
unit of h: do you wannna be?
unit of h: MAH ANGEL?
unit of h: GIVE IT UP TO ME!
unit of h: GIVE IT UPP TO MEE!
unit of h: DOOO YOO WANNA BE
unit of h: MAH ANGEL!?
unit of h: sooo help meeeeeeeeeeeeeeeeeeEEEEEEEE
unit of h: dun dun bam dun dun bam dun dun bamambamba dun dundund (wananana nan an aNAN NA NA NA)
unit of h: Beee mah angel
unit of h: beee mah angel
unit of h: be mah angel
unit of h: do you wanna die?
unit of h: do yoo wanna dieee?
unit of h: do you wanna DIE?
unit of h: do yoo wanna DIE?!
unit of h: DO YOO WANNA DIEEEE?!
unit of h: DO YOU WANNA DIIIEEEE?!
unit of h: DOOO YOU WANNA DIE?!
unit of h: DOOOOO YOO WANNA DIE?!
unit of h: well I promise YOU
unit of h: I will treat you well!
unit of h: mah sweet angel
unit of h: so help me jeeebuss
unit of h: jeeeeeeeebus
unit of h: jeeeeeebus
unit of h: jeeebussssSssSssss

Sorry harry, I'm taken.

Friday, June 13, 2008

HN Blacklist -> HN Toolkit

So thanks to nirmal's brilliant idea of browsing Hacker News in split view, I got the bug last night to add that functionality to the HN Blacklist. What I had originally thought would take about two hours ended up being about an eight hour ordeal, but it was worth it. I learned lots of neat things about the browser security model and GM evaluation, all because I couldn't get some event listeners to work.

The problem is now solved, and seeing as how my little blacklist does more than just that now, I went ahead and renamed it to HN Toolkit.

Obviously nirmal's bookmarklet works for a wider variety of browsers than my GM script, but my way means you don't have to hit his server to do it, which I figure is a good thing.

Sunday, June 08, 2008

Harvard Commencement Speech

So JK Rowling did Harvard's 2008 Commencement Speech. All I can say is... wow. If you want something to bump your optimism needle, this is it, and I'm not even really a fan of Rowling herself, although I do plan on eventually reading those things. This speech, however, was quite excellent.

Part 1:


Part 2:

Saturday, June 07, 2008

So, uh, Texas

I think I have completed major moving activities, so it's about time for an update to the old blog.

The move itself was rather more epic than I had planned. Due to the never-ending stormy weather we are getting this year, and the fact that I was planning on moving water sensitive things in the uncovered bed of a truck, the loading process took about five hours longer than the planned one hour. This was because we ended up gift-wrapping all our furniture in 3.5 mil plastic (the kind you put in flower beds). Several rolls of plastic and several rolls of duct tape later, we had everything ready, but seeing as it was about midnight, and our original plan was to leave at 2am, we ended up leaving later and breaking the drive into two days. With a stopover at my cousin Hillary's house for the night, it didn't end up costing us much.


Beaumont is amusing.

My only major accomplishments so far have been unpacking my stuff and reading a 700 page book by the pool. The pool here is quite excellent, and it's hot enough I don't even miss having a hot tub around.

Tonight I decided to get Firefox 3 RC2 up and running, just to try it out. It took quite a while to make portage happy. The initial emerge only took about 12 minutes, but some of the packages were requesting revdep-rebuilds that were curiously downgrading Firefox back to 2.0.0.14. After about an hour of investigating, I tracked it all down, and feel like documenting all my fixes here for fun.

Added the following to package.keywords:
=www-client/mozilla-firefox-3.0_rc2 ~amd64
>=dev-libs/nss-3.12_rc4 ~amd64
>=dev-libs/nspr-4.7.1 ~amd64
>=x11-libs/cairo-1.6.0 ~amd64
>=x11-libs/pixman-0.10.0 ~amd64
>=net-libs/xulrunner-1.9_rc2 ~amd64

Added this to package.unmask:
=www-client/mozilla-firefox-3.0_rc2
>=dev-libs/nss-3.12_rc4
>=dev-libs/nspr-4.7.1
>=net-libs/xulrunner-1.9_rc2

And to fix that reversion issue... added to package.use:
app-office/openoffice -firefox
dev-java/swt -firefox

Also changed my xorg.conf ButtonMapping Option to use buttons 8 and 9 instead of 6 and 7.

The first two sets of changes were needed to unmask everything Firefox 3 needed to compile. The changes to package.use were needed to fix the reversion issue. Apparently both these packages depend on Firefox 2 when that use flag is enabled, and aren't smart enough to use Firefox 3. I'm pretty sure I can live without whatever integration that use flag offers, at least until they are updated to use FF3.

As for the mouse button mapping, I guess older versions of Firefox incorrectly used buttons 6 and 7 as forward and back buttons, even though they are supposed to be the horizontal scroll buttons. Many laptop touchpads and fancy new mice have horizontal scroll spots/wheels, and firefox was executing back/forward operations whenever those users accidently bumped them. The side buttons on a mouse are apparently really supposed to be buttons 8 and 9, and substituting those for where I had 6 and 7 before did the trick nicely.

FF3 itself is great so far. The new Firebug has lots of nifty things, and since you can disable the performance sucking parts, it doesn't seem to bite page loads as hard. The zoom functionality is much better than before. (I use this a lot so I can read long articles while reclining several feet away from my monitor.) It actually zooms the entire page, images and all, much like the iPhone browser does. The old Firefox just made the text larger, which could lead to weird layout issues. The alt text on images actually shows in it's entirety when hovering, which makes xkcd comics much more fun. Browsing is moderately snappier, and the new javascript engine shines. Gmail loads up about twice as fast as before, and heavy javascript pages don't seem to clunk and stutter like before.

On that note, the new jQuery release apparently improved mouse handling and events a ton. Using the demos on the documentation site, I can definitely vouch that dragging and dropping seems much much faster/smoother, so definitely worth updating. I love jQuery.

I have a whole book in this excellent trilogy left to read, so probably nothing too exciting until I'm done with that. I'll be sure to rant about these books later. Kathy seems to be digging the new job duties, and it's kind of weird staying home all day, but it still feels like vacation, so I can't complain.


Plus I have this to play with all day!

Wednesday, May 21, 2008

Motivation

"Nobody should start to undertake a large project. You start with a small trivial project, and you should never expect it to get large. If you do, you'll just overdesign and generally think it is more important than it likely is at that stage. Or worse, you might be scared away by the sheer size of the work you envision. So start small, and think about the details. Don't think about some big picture and fancy design. If it doesn't solve some fairly immediate need, it's almost certainly over-designed. And don't expect people to jump in and help you. That's not how these things work. You need to get something half-way useful first, and then others will say "hey, that almost works for me", and they'll get involved in the project."

- Linus Torvalds
Really well said. I definitely suffer from over-planning-and-under-doing things. Once you build all these castles in the air regarding what it is you are going to do, it all starts to seem overwhelming and hard to achieve. If, instead, you just start doing something, then iterate, you end up achieving a lot without even noticing, and suddenly you have this big thing to show off.

Maybe I should just focus on something I can solve in a day, and then go from there.

Tuesday, May 20, 2008

Improvements

UPDATE (06/13/2008): Even more improvements here.

There were a couple links on Hacker News today that were to pdfs, and someone pointed out that the automatic scribd vacuuming of said links is kind of annoying. I agree, so I thought I'd add the option to my blacklist to disable that functionality. While I was at it, I added a search box for Search YC as well.

Oh and the UI got a facelift.



You can check it out and install from here.

Monday, May 19, 2008

Twinview

So after I got my monitor last week, I spent about four days fighting to get dual monitors to work correctly. I tried a litany of things before I solved it. Want to know how? Probably not, but going to tell you anyway. Get this: I unplugged the DVI cables and plugged them back in.

Crazy I tell you.

So after the creepiness of that voodoo wore off, I spent a few days just enjoying the warm glow of four feet of LCD screen. Watching movies on one screen while chatting on another is fun, and the brief bit I spent coding was great. I could have my code, the console, firefox and pidgin all visible at once... each of them big enough to be considered full screen on a lesser monitor.

Spent most of the weekend sleeping, cleaning, and reading. Got this awesome book called Revelation Space (by Alastair Reynolds). So far it's probably some of the best Sci-Fi I have ever read.

Before acquiring the book, move-related cleaning was in full swing. I've managed to organize and pack most of the office, with about two boxes to go. Most of the time was consumed by going through all my collected documents and piles of things and throwing away everything I could. Also finally rid myself of the magazines and extra clothes, which was liberating to say the least. It'd really be nice to get my personal possessions down to books, computer, and clothes. It's amusing how much more crap I have than Kathy. I think tonight I'm finally going to take an axe to the box full of papers from college.

For some reason, at the time, I thought keeping all my homeworks/notes/tests from all my classes would someday be useful for refreshing myself. Thing is, with the internet and wikipedia at my fingertips, there is probably zero chance I'll ever look at them again. I think I'll keep some stuff related to Spain and just recycle the rest.

Still coughing up a storm, but most of the sickness has passed. Hopefully that'll eventually go away too. I'd hate to end up with bronchitis.

Tuesday, May 13, 2008

Purge

Been sick since Saturday. It's pretty much no fun.

Due to the excessive sleeping involved in being ill, I am behind on just about everything. I did manage to go through my clothes before I got sick and pick out about two trashbags worth to give away. Upcoming move to Texas gives me an excuse to downsize my stuff a bit. I also have a stack of magazines about six feet tall ready for the recycling bin.

Usually when I go through my clothes, I end up keeping t-shirts with memories attached. I still have my shirt from Nerd Camp in 1999, as well as several high school related ones. I haven't actually worn them in years, so this time they got pitched. Something clicked and it just seemed silly to keep things I had no practical use for, even if they had memories attached. My next debate is whether to treat some of my other childhood knick-knacks the same way.

As for the magazines, I had been holding on to them because I had a complete series from 1995 to 2001. But honestly, nobody really wants to collect magazines. It's an interesting mental effect... having a 'complete set' of something makes it seem more valuable. Oh well, recycle bin here I come.

All the stuff going out is being replaced by more useful things. Got the new 8800GT last night, and it's working like a charm. Tonight I will hopefully come home to a new monitor and lots of new magic cards. Oh well, I already have a place for those things in the moving process.

Thursday, May 08, 2008

Bring Forth the Pixels

So my stimulus money came yesterday. I celebrated by buying another 24 inch monitor and a video card. Got the monitor on ebay (unopened box, three year warranty) for about $125 cheaper than normal price on Dell.com (although Dell had it on sale too, so only saved about $50 over that price). The video card also felt like a steal. Got an 8800GT which, despite all common sense logic, is both faster and cheaper than the 9600GT I had wanted. All told, the damage came to $778.99... but $600 of that is Uncle Sam's money, and the rest was Grandpa's (I haven't spent what he gives me for Christmas in several years now).

Added bonus is that I don't even have to actually pay for it until March of 2009. Yay 0% credit card offers!

I look forward to the doubling of screen real estate I am about to experience. I have dual (19") monitors at work, and my single 24" at home actually feels small in comparison. I have become much more adept at taking advantage of the multiple workspace feature in X, but it's just nice to have lots of stuff visible at once. Video card will mean I can finally compiz at home too.

Looking forward to pulling an all-nighter tonight. Want to get a lot done before Tyler comes out on Saturday, and don't have a lot of faith in being productive on a Friday night. Besides, all-nighters are fun.

Tuesday, May 06, 2008

Disqus and Friendfeed

So the steady march towards Web 2.0 in my life continues. Yep, I signed up for Disqus and Friendfeed today.

Frankly I dislike the comment system here on blogger. For one, it's not threaded. Also, Disqus throws in a lot of extra niceties, like the fact that your profile works any other site that uses Disqus. They even made it really easy to switch over to the new system on new posts and leave the old system on older posts.

Friendfeed seems like a really cool system that could basically replace Facebook for me. You create an account and then link it to all your various accounts elsewhere (Flickr, Twitter, Your Blog, Amazon, even Facebook itself). It just aggregates all your activity on those sites into a nice convenient feed. It also does this for all your friends, and then you can comment on each other's feeds. The whole philosophy is to follow what your real friends are doing and share stuff. So instead of pasting some funny video around on AIM, just put it in your friendfeed. All your friends will see it and can watch and comment.

You can see my feed here. Feel free to comment on what I'm doing. It sounds like it could be cool if I had a few friends on it to follow. Also let me know if you like the Disqus comment system here.

Monday, May 05, 2008

The Slip

So several really neat things happened today.

First I woke up to an email from nin.com about a ticket pre-sale for the fall tour. They must have kept my email address from when I bought Ghosts. It was just really nice to be informed about a pre-sale by the band itself, instead of having to depend on other outlets. The pre-sale itself is also sweet, because every ticket requires a real name (which will be printed on it) to match an ID the night of the show. This means no scalpers (and no Ticketmaster)!

When I went to register for the pre-sale, I was also pleasantly surprised that a new album was released this morning. It's a free full-length album, offered in mp3/aac/flac/wav, and for once the high quality downloads are torrent files. Finally, someone gets it! When he released Ghosts he partnered with Amazon because of load concerns, and even then he had scaling problems. Either the mass public hasn't caught on yet, or (more likely) the torrents mean no scaling issues, because my experience was flawless. I had the music downloaded and was listening to it in less than a minute.

It would be nice if other artists embraced this model. Music is such a pleasant experience when it is offered DRM-free in multiple formats, easy to get, at a modest price. Today's release happened to be free, but I have gladly paid $5 for both Ghosts and Niggy Tardust, and I'll probably continue to do so. Paying $15 in a store for an outdated format that wastes valuable physical space (a CD) just doesn't compare. Today's release doesn't have the same tiered model that Ghosts did, but I hope in the future they all do, because I think that was brilliant too. I mean, he made like a million dollars in one week on that... you can't tell me the labels pay that well.

Anyway, go check out The Slip.

Friday, May 02, 2008

Brain Hurts

So uh, what have I been up to lately?

I finally broke down and got a Twitter account. At first I thought I would never touch the thing, but then realize I could update via jabber, which means I'll probably just talk to Twitter all day. My name is xich if any of you want to follow me. I'm a total twitter nub, so don't expect greatness.

Also been working on a sweet bookmarklet idea. It's coming along quite nicely. Found an interesting way around the XSS security in browsers for certain AJAX requests. If you want your bookmarklet to send data back to your server while on another site, normally you'd have to do a real GET/POST (which takes the user away from the site they are on), because XSS security doesn't allow you to make XHR requests across domains. However, if what you want to send to your server is short enough (fits in query string of a GET request), you can simply create a new image and set the source to that querystring. This will make the browser fetch the image (which does a GET request to your server), even across domains. I suppose if you wanted data back you could encode it in the image response and then binary decode it in the client. I haven't tried that, but sounds like it could work, provided javascript has some binary capabilities.

I think I might work on a jQuery plugin to implement this type of request, and if I do, I'll try to describe it better then. I wish I could claim credit for the idea, but I totally stole it from Paul Buchheit's implementation of voting on Hacker News.

Storm last night involved loss of power for a couple hours and water to come through our closed windows. As a result I didn't get a ton of sleep, and complete lack of anything for breakfast means my head is hurting. Thankfully only like six more hours until I can go home and nap.

Friday, April 25, 2008

HN Blacklist Now With UI

05/20/2008 UPDATE: Check out the new version of this which is bigger, faster, stronger, and easier to configure.

So someone said something about having a user interface for my little Greasemonkey script that acts as a blacklist on Hacker News.

Done. With it installed, a 'blacklist' link will appear in the top bar next to the 'submit' link, which will allow you to edit the list of blocked domains.

// ==UserScript==
// @name HN Blacklist
// @namespace http://news.ycombinator.com
// @description Removes blacklisted links from Hacker News
// @include http://news.ycombinator.com/*
// ==/UserScript==

// Written by Xichekolas ... do whatever you want with it.
// http://news.ycombinator.com/user?id=Xichekolas

// Just assume the stuff below will work.
var blacklist = GM_getValue('hnblacklist', '')
if (blacklist.length > 0) {
blacklist = blacklist.split(' ');
var xpathnodes = document.evaluate("//a", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);

for (var n = 0; n < xpathnodes.snapshotLength; n++) {
var thisnode = xpathnodes.snapshotItem(n);
for (var i = 0; i < blacklist.length; i++) {
if ((blacklist[i].length > 0) && (thisnode.href.toLowerCase().indexOf(blacklist[i].toLowerCase()) > -1)) {
var grandpa = thisnode.parentNode.parentNode;
grandpa.style['display'] = 'none';
grandpa.nextSibling.style['display'] = 'none';
grandpa.nextSibling.nextSibling.style['display'] = 'none';
break;
}
}
}
}

// Add link to edit the blacklist.
var submitlink = document.evaluate("//a[@href='submit']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if (submitlink.snapshotLength > 0) {
var slparent = submitlink.snapshotItem(0).parentNode; // We only care about the first one.
var editlink = " | <a id=\"blacklist\" href=\"#\">blacklist</a>";
slparent.innerHTML = slparent.innerHTML + editlink;

var link = document.getElementById('blacklist');
link.addEventListener('click', function(ev) {
var newlist = prompt('Enter a space-delimited list of domains:', GM_getValue('hnblacklist', ''));
if (newlist != null) { GM_setValue('hnblacklist', newlist); window.location.reload(); }
}, true);
}

You can install it from here.

Thursday, April 24, 2008

SICP

My junior year at KU, I happened to take a little course called "Programming Language Paradigms" (EECS 662). Professor Brown has taught this course pretty much forever, and I think it's the only thing he teaches to undergrads (although he might pitch in on EECS 368, since that seems to round robin pretty quickly). Dr. Brown is an interesting character (very much the absent-minded professor), but the course was very eye-opening for me. I didn't realize it right away, but this was exactly what I had pictured my Computer Science education being. This specific class was it.

Later I found out why. The book on which Dr. Brown based the course is called Structure and Interpretation of Computer Programs, which happens to be the introductory programming text written and used by professors at MIT. You know, that school that invented Lisp, arguably the most powerful language in use to date.

I still have this book, and have seriously been considering giving it a run through for a couple of hours each morning this summer. Today I found out that there are video lectures available to go along with each chapter in the book. You can download them (torrents even) here: SICP Lectures.

If any of you feel like becoming a thoroughly adept programmer, this is the book that will do it. The book itself is quite entertaining (filled with jokes and written in a very conversational style), but now with video lectures, it is basically an entire class. (The online version of the book is free, and available at the same link as the video.) Save yourself $25k on a B.S. in Computer Science and just spend time on this instead. It's worth it.

Sunday, April 20, 2008

Startup School (from Kansas)

So I had the fortune to be invited to Startup School this year, and since I'm currently planning to quit my job and take advantage of a summer vacation, the timing couldn't have been better.

Kathy and I flew into San Jose on Friday morning and caught the Caltrain up to Palo Alto. After living in Europe, the Bay Area's public transit seems a bit disjointed, but it really was refreshing to at least have the option. It gets the job done for our three-day visit.

Walking from the train station to our hotel, we passed the Facebook headquarters. There were a bunch of people in suits in the lobby with cameras flashing, but I'm sure that happens every time Mark Zuckerberg enters and leaves the building. That was kind of the odd moment when I realized that this was Silicon Valley for real.

After a few hours and an excellent $9 turkey sandwich, I headed down to Mountain View for the YC pre-startup-school dinner/party. The invite said something to the effect of "investors, press, and some attendees" so I was kind of expecting some kind of sit-down dinner full of business card passing and glad-handing. I mean I know startup culture is supposed to be hip and cool, but he said 'investors' and 'press' ... how cool could it be?

The reality was a nice surprise. If any investors (besides YC) and press were there, they looked delightfully like normal people, and the rest of the crowd seemed to be founders or proto-founders. Free beer was there by the bucketful and tasty things appeared on big trays, so the food obligation was fulfilled without actually disrupting the social aspect.

There was, of course, lots of networking and pitching going on, but it didn't have that creepy used-car-salesman-turned-web-2.0-marketing-guy feeling that I feared. It was just a lot of people genuinely excited about what they were doing and excited to hear about what others were doing.

Of course, people asked what I was doing so I took the easy way out and just claimed Kansas, which usually got me two things: a welcome, and 'when are you moving here?'

I didn't totally cop out though, and gave as succinct a summary of our idea as it exists so far. Comments were both positive and less so, but I figure since we are targeting a niche, it's not going to seem as exciting to people outside the niche. I think what helps us is that we aren't targeting the same niche (namely: other people in the Valley) like a lot of web-2.0ish startups are doing.

It was kind of fun (for a kid from Kansas) to actually meet and talk to all these people I know only as online personas. I got to stand and chat in person with people like edw519, iamelgringo, kirubakaran, alaskamiller, cstejerean, and dcurtis from Hacker News, which was interesting, because I can now put faces with the words.

I even met and shook hands with PG, which for someone in my position is kind of like bumping into the Pope. (Not because he is in any way holy or superior, but just because you don't often meet one of your movement's lead evangelists in the flesh.) He seemed like a genuinely nice guy, and I'm pretty sure he ran a mile a minute the entire night ... the guy definitely has energy.

Part of my personal goals coming to this event was to see how 'startup people' really acted, and if Trevor Blackwell is any indication, the only way to describe it is 'Happy.' His two robots, Monty and Dexter, provided a nice distraction from all the meeting and greeting, and I'm pretty sure no one smiles as much as Trevor does. I can only hope to be that happy someday. Ask most people what they 'do' and you get the name of a position and the name of a company. Ask startup people what they do and they will more than likely try to show you, and failing the ability to do that they will rave for 10 minutes about how cool the product is. Notice the difference: product focus instead of position focus.

Other people I talked to included two guys doing sweet graduate research at MIT, Erik of fluther.com, a Canadian pitching his whydowork.com, two guys that apparently have a really awesome highlighter, and the guys behind Stream Focus. Sadly that wasn't even a tenth of the crowd.

I hit the sack early so I could actually be awake for Startup School itself. The auditorium was about a thirty-minute walk from my hotel room, which was improved by Ghosts and the Stanford campus itself. One thing that no one tells you is that Stanford is huge. It seriously takes over 45 minutes to walk from one side to the other, so everyone bikes accordingly. Not only does it cover a lot of ground, but the buildings themselves are monolithic. I think all the floors are intentionally 50% oversized, just to make the place seem more impressive. It works though, and I came away thinking that, sadly, KU's campus has nothing on Stanford.



The first speaker was David Lawee, who is in charge of acquisitions at Google. He gave an interesting talk about his startup Xfire, which basically boiled down to 'optimize for speed.' I think he was especially targeting the flipping crowd, but was pretty insightful about funding and how it affects your outcome. Big funding means you have to want to grow big, whereas if you just want to flip, smaller funding leaves you more nimble and able to liquidate.



Next up was Sam Altman, of Loopt fame. Sam mostly talked about details regarding getting VC and getting it on good terms. While the details were interesting, I won't regurgitate them here. The two things that really stood out were the following: "don't raise money if you can avoid it, or at least wait as long as possible" and "raise in parallel." He said he couldn't stress the latter enough. Like anything, the more competition there is (between VCs), the more likely you are to get funding fast (so you can get back to work), and the more likely it is to be on good terms.



After Sam came Jack Sheridan, Partner at Wilson Sonsini. While he was a good speaker and raised some valid points, it is hard to make law seem exciting at 10am on a Saturday. His basic aim was to list ways to shoot yourself in the foot legally, so that maybe less of us would do so.



Now Paul Graham takes the stage and asks us to stop using the Internet (for a few minutes anyway, so his slides could download). His talk centered on his theory that doing good things naturally increases your chances of being successful. It sounded like an essay prototype, so I imagine you will see it in full detail at a later date (edit: read it here). One slide that stood out (and garnered a mention in my notes) was that of a cockroach. A good motto for a startup right there.



After a short break, Greg McAdoo (Partner at Sequoia) came up and gave a really great presentation about what VCs were looking for in a startup. If nothing else, the whole talk was made by one slide that listed characteristics of failed investments, which included the phrase "Drunken Parade Leaders" ... which as far as I'm concerned has to be the funniest thing ever hidden on a PowerPoint given by someone in control of hundreds of millions of dollars. More seriously, he made the point that a good one line description of what you do is important, and that as a startup, you can't create a market, but you have to be able to capitalize on an upcoming one.



Right on the heels of Greg was David Heinemeier Hansson. To be honest, I had no idea what to expect from him beforehand, because he seems to be about as polarizing as Zed Shaw.

It turned out to be the best presentation of the day, if for no other reason than the timing. DHH, sticking to his principles, gave an excellent guide to making money online. The secret seems to be charging people money. Whodathunkit? Explaining the whole presentation in words would be difficult, so just watch the video. It was just a refreshing contrast to all the heady talk about VC and liquidity events up to that point, and the delivery was spectacular. It was like he grabbed our collective ankles and yanked us back down to earth.



Paul Buchheit rounded out the list before lunch. While at first he seemed kind of unprepared, I soon realized it was just that this guy has a really dry sense of humor. He is almost sly about his deadpans, and you get the idea he is just waiting for you to get it. His overarching advice (ironically) was to listen to what people really need, rather than what they think they want. Treat requests and advice as an encoded, often distracting, way to communicate an underlying need, and then fulfill that need. An enlightening anecdote was of Gmail, when people were requesting all these quick/batch reply features, which he finally realized were coming in because the site was just slow. He fixed the performance issue, and the feature requests evaporated. If anything, his presentation was a huge success because I made a note to both try out Friendfeed (his current product) and apply there if I like it as a customer.



Next up was probably the richest guy (briefly) in the room, Jeff Bezos, founder and CEO of Amazon. He mostly pitched AWS, which was probably redundant for anyone that has already drunken from the AWS Kool-Aid, but as a sipper myself, I still found a few enlightening things. One blockbuster graph he used showed how a small company doing online video editing was able to scale from 50 servers to 5000 in just four days using EC2. You simply can't fill out purchase orders that fast if you actually had to buy the hardware. A couple choice quotes included "that is way above my pay grade" (referring to US Immigration Policy) and "we try to be customer focused rather than competitor focused" which just seems like it belongs on everyone's wall in 192pt font.



After Bezos came Mike Arrington, of TechCrunch. He talked about getting press and the direction in which TechCrunch is moving. He also spent a few minutes talking about trolls, which was ironic because there was definitely a mic troll there all day. You know the kind of person I am talking about ... the guy who gets up to 'ask a question' and really just wastes a minute of everyone's time trying to show how smart he is. This same guy got up over and over, and by the end of the day it was obvious everyone was sick of him.



Speaking of the mic troll, next up was Marc Andreessen. This guy was the original startup guy, and keeps having success. On Friday he announced a huge funding deal for his new startup, Ning, so he was fresh off success. He talked about quite a few interesting things regarding the economy, but the highlight seemed to come when the mic troll tried to strike again. This time Jessica Livingston (who I swear has an elementary school teacher alter ego, she is that nice) was mic'd up herself, and politely but firmly crushed the troll's dreams in front of the whole crowd (to much applause). Thankfully that was the end of him.


See, that nice.




The last speaker of the day was Peter Norvig, head of Google research. His talk was slightly more technical than most, and really proved quite interesting. The overall idea was that more data was always better than better algorithms, and he illustrated that quite nicely talking about Google image search and tokenizing East Asian languages (which have no spaces between words). I wonder if this guy does video lectures, because if so, I need to watch some of them. I'll at least have to check out his books.

And that was the day. All of the speakers were quite entertaining, often surprisingly so. DHH was definitely the highlight for me, just because he tacked in a different direction and kind of grounded us a bit. The overall theme for the day, mentioned by almost all the speakers, including Bezos and McAdoo, was to look for a problem that bothers you, and build a product to fix it. All this other stuff is ancillary to having a great product you are passionate about.

Now it's time to go catch the plane back to Lawrence. I've got a fresh Economist in hand and some fun things to think about. Overall it was an excellent weekend, well worth the trip, and I look forward to next year.

(edit: Watch all the presentations, and added speaker photos, because Gary Tan took such good ones.)