blog

[ 08:10 AM on January 01, 2012 ]

orangefr.user.js is a userscript to bypass the log in screen for organge.fr wifi.

[ 08:43 AM on December 08, 2011 ]

ycombinator polls is a bookmarklet to add colored histograms to polls at news.ycombinator.org. So, you get

ycombinatorPoll-after.png

instead of just

ycombinatorPoll-before.png

[ 11:53 PM on December 07, 2011 ]

A simple way to show colored android logcat output on another display, if you've run out of graphics cards, like me:
machine1> nc -l 4343 | adb_colorize
machine2> adb logcat | nc machine1 4343

[ 08:54 AM on November 30, 2011 ]

gist.github.com/1409077 is a bookmarklet to monitor a Jenkins build page and alert you of success and failures in the build by playing:
  • The Golden Girls theme when the build fails
  • The Arrested Development theme when the build succeeds
Drag this link to your toolbar:
jenkins
It also shows a little box in the corner with status and lets you force a state, e.g.

jenkins_success.png

jenkins_fail.png

jenkins_non.png

[ 12:54 PM on November 22, 2011 ]

amazonbuy.user.js is a userscript that automates adding items from amazon.com to your cart. For example, when installed you see a little box in the bottom right corner of the screen when visiting the site:

amazonbuy1.png
To add ASINs to the list of items to add, paste them in the text box:

amazonbuy2.png
then click Add:

amazonbuy3.png
Then click Go and all the items in the list will be added to your cart -- you'll see a bunch of page reloads as this happens. And, remember, users use this at their own risk; I'm not responsible for anything done with this script. Keep in mind, unless cleared, all ASINs will be stored in localStorage. Also, other scripts could add to this list.

[ 10:55 PM on October 09, 2011 ]

foursquare map is a bookmarklet to open a foursquare location page in google maps. When you're on a foursquare venue, click this, it will take you to that location in google maps. The original is here.

[ 01:24 PM on October 02, 2011 ]

Apparently I've been busy since February 24th when rdio announced they had a roku app, but it doesn't seem to let you browser by artist -- but does let you see your playlists. So, this will create one playlist for every artist:
gist.github.com/1257664
It uses the latest rdio gem.

[ 01:26 PM on September 03, 2011 ]

plot is a bookmarklet to correlate arbitrary functions to data using google's trends correlate draw. It's catered towards trigonometric ones (since they make nice pretty curves) and translates the input so that a function -- such as Math.sin(y) -- has the origin in the middle-left of the actual graph and domain of .

To use, first you input a function:

gtd1.png

then, that function will be plotted on the canvas:

gtd2.png

then, you can correlate it to some data:

gtd3.png

This is the permalink for the sin-ish function before -- there's some strange behavior towards the end of the graph, so it's not really sin, but I don't think anyone really cares.

A gist of this code is here: gist.github.com/1191495.

This has been tested on sin(y) and cos(y).

[ 11:41 AM on August 29, 2011 ]

gmailtitle.user.js previously just displayed your unread message count in the front of the title, so when the tab titles were truncated one could at least see this count. Now, it allows you to achieve a fake zero inbox. That is, I want the unread message count in the title to show the number of messages I intend to read immediately, not those that are archived and want to remain unread. So, by setting a localStorage value on this page, you can delare a fudge factor of the number of messages that are unread and should not be included in the number in the title. For example, I have 1699 unread messages I want to ignore:



So, I do the following to ignore these messages:

gmailtitle-console.png

And now I have a fake zero inbox:

gmailtitle-zero.png

[ 09:17 PM on August 20, 2011 ]

ebay pages is bookmarklet to allow you to see the first item in every page for a given query on ebay. So, if you searched for ipad sorted by price, you can jump directly into the desired page, rather guessing what the price for a given page is. Here is what it would look like for that query:

ebaypages.js.png Since, I sorted by price, I could then skip into a section for a particular price rather than browsing until I found the section with the prices I want -- each item's link now points to the section page, not the item's page.

ebaypages.js-2.png

A more compelling example would be a query yielding 1000s of results sorted by time left with values ranging from seconds to days, but you were interested in a couple days left. Now, you could jump into this desired range without browing through pages and pages of results. The non-compressed code is here: https://gist.github.com/1159951.

[ 08:44 PM on August 08, 2011 ]

Craigslist Image Preview, which shows craiglist listing images under the posting, now filters out spam and 404 images. This is the current version: craigslist.user.js.

[ 10:50 AM on August 07, 2011 ]

I collected snapshots of the reddit homepage every 5 minutes over a period of about 10 hours starting at around 10pm Eastern on August 6th, and redditvotes shows how pages travel down as time passes. A bar at the nth position with number i indicates that, at the time shown, that url was displayed at position n and started out at position i. Bars of this color represent pages that weren't initially present on the homepage. It's shown below or see the full version.

[ 05:44 PM on August 03, 2011 ]

text links is a bookmarklet to show all the links in text of a page. For example, sometimes a forum page is the top hit to a google search, but that forum (e.g. macrumors) doesn't allow urls in links. So, instead of searching the page manually for these links, this will display them in a box at the top of the page, like this:

textlinks.png

The uninteresting, decompressed code is here.

[ 11:56 AM on August 03, 2011 ]

redditimagebox.user.js is a userscript to open reddit image links in a light box instead of opening another page. Clicking the titles of image links then shows the images like so:

redditimagebox.png

You can close the box with the CLose link or by clicking in the black. The image link still opens the actual link, i.e.

redditimagebox2.png

I find this more convenient than opening an entire new page.

[ 03:51 PM on August 01, 2011 ]

tabtab.user.js allows you to navigate to the main search input by holding down TAB and pressing another key. So, if you've searched for something and scrolled down the page and want to search for something else, you can just hold down TAB and start typing and focus will go to the search input. I first thought that doing this with TAB+1 would be useful, so, when seeing if it wasn't already implemented in a browser or web page I noticed google already did it for TAB + any key. So, I decided that was more useful. Testing includes yahoo, it works with that.

[ 01:26 AM on July 27, 2011 ]

In the same vein of identifying twitter users to follow by looking at who the folks you follow follow, I thought this would be useful for github. So, github following finds the intersection of the users that other users follow -- similar to the same for twitter here. Here's an example using two people I follow.

github-following.png

[ 04:41 PM on June 30, 2011 ]

Here's a little Arduino project to display your Office Communicator status in LEDs controlled over the web. It has two parts:
  1. A little http python server that will (a) server the main page & assets and (b) send status updates to the Arduino.
  2. Javascript on the page served by (1) that accesses the appropriate ActiveX object to receive status updates, and send those to the server.
To use you launch the http server on one machine and open that port (possibly the same, possibly not) to see a page similar to this:

a-ss.png

When working, you'll see that the status and LEDs stay in sink (here the board is plugged into the server machine, and the screen is on a remote machine):

a-green.png

a-yellow.png

a-red.png

The code is on github. I endorse neither it nor my ghetto electrical-enginnering skills displayed here. Oh yeah, this is 100%, totally insecure.

[ 01:09 PM on June 18, 2011 ]

A friend sent a link to this marvelous site that presents some lovely ladies and poses the question of whether each is an anchor woman or porn star...the only problem is that you have to go to another page to see the solution. So, pornstaroranchorwoman.user.js reveals the answer by simply mousing over the pictures, relieving you of the mind-melting suspense of not knowing the answer. Example here is a porn star:

pornstar.png
And, here is an anchor woman:

anchorwoman.png

[ 02:23 PM on June 13, 2011 ]

Java interview question #5:
If the next version of Java contained the keyword, fluffy, briefly describe what its purpose would be.

[ 10:30 AM on June 07, 2011 ]

rdioExplicitLinks.user.js is a userscript to make explicit what is the artist link and what is the album link for self-titled albums in the rdio player. When used, when you mouseover the links in the player you see explcitly what is the artist and what is the album:

radioLinksArtist.png
radioLinksAlbum.png
I'm done with being lost in this maze.

[ 10:44 PM on May 07, 2011 ]

Updated ruby rdio api to reflect these api changes:
  • optional isCompilation field on Album will indicate if the album is a compilation
  • optional isOnCompilation field on Track will indicate if the track is on a compilation
  • optional bigIcon field on Album, Track and Playlist
  • optional trackKeys on Playlist (sorry, that missing was just an oversight)
  • optional isTrial, isSubscriber & isUnlimited fields on the current User indicating the user's subscription state.

thongs in court

[ 01:46 PM on April 26, 2011 ]

thongs-iphone.png

I stand by you, as always, mighty iphone.

[ 10:14 AM on April 26, 2011 ]

I never seem to check njtransit.com before leaving in the morning, so here is a script to set up as a cron job to send emails when there are problems with the trains.

[ 02:28 PM on April 24, 2011 ]

gmailtitle.user.js tries to make the gmail window title somewhat more useful by putting your inbox count in the front:

gmailtitle-after.png

instead of towards the back.

gmailtitle-before.png

[ 09:31 AM on April 15, 2011 ]

Here is a bookmarklet to inline the images you've viewed in your chrome history:
chrome history images
Clicking it will change your history from this

chrome-history-images-before.png

to this:

chrome-history-images-after.png

[ 02:34 PM on April 10, 2011 ]

following is a little twitter app to find the intersection of the users other users follow. The idea being this: If you follow two people because of a similar reason -- e.g. they've done something cool, not they both tell good dick jokes, it's likely you'll want to follow the people they both follow. That's what this does, granted it could and will probably do it better in the future. Here's a little shot showing two people (paulg and bramcohen) I follow and the people they both follow.

twitter-following.png

Due to rate-limiting, there's a good chance this make not work if you try it. That should probably be addressed.

[ 11:05 PM on April 05, 2011 ]

Lego spudtrooper.

spudtrooper-lego-small.png

[ 09:29 PM on March 19, 2011 ]

treerepl is an attempt to abstract github repl a bit and to find something useful with which to test ruby rdio API. There are two examples here now
The idea is to feed a Repl instance enough information to allow you to navigate a web API's data like a file system, which usually includes additional commands and a tree model.

[ 07:17 PM on March 12, 2011 ]

rdiorb is a work-in-progress ruby implementation of the rd.io API. As of right now, it passes the following test case:
  key = <RDIO_KEY>
  secret = <RDIO_SECRET>
  r = Rdio::Api.new key,secret
  user = r.findUserByEmail 'jeff@jeffpalm.com'
  'Jeffrey' == user.first_name
  'Palm' == user.last_name
In the future, it will pass more.

[ 12:15 AM on March 08, 2011 ]

githubrepl is a repl for exploring users and repositories on github. The idea is to allow you to traverse github like you do your file system. Take this as an example. I start using my account -- spudtrooper -- and then list the contents:

githubrepl1.png

Then, I could list the users I follow

githubrepl2.png

and chose someone I follow -- e.g. fberger -- and list his repositories.

githubrepl3.png

Finally, choosing one of his repositories -- e.g. ilist -- and clone it.

githubrepl4.png

You can see all the commands by typing help:

githubrepl5.png

[ 02:00 AM on February 28, 2011 ]

Jersey Commute

[ 12:48 PM on February 27, 2011 ]

Create aliases for all your mac applications without name clashes. e.g. 'preview' would open '/Applications/Preview.app'. To use, add this to your .bashrc.
gist.github.com/846362

[ 12:31 AM on February 20, 2011 ]

What would be the most thoughtless way of saying thank for someone's birthday wishes? Automating them...thank yous adds a "Thank you for the birthday wishes, name" to all your friends' birthday messages.

facebook-birthday.png

I'm, of course, deeply grateful for every message I received today, I just like automating things. It came from facebook-birthdays.js.

[ 11:04 PM on February 17, 2011 ]

When I run across a rd.io album that's not available for streaming I sometimes like to search for this album on a retail site. To make this easier, rdio-amazon.user.js is a user script to provide search links to a retailer for rd.io albums that aren't available for streaming. For example, one can stream the one on the left, not the one on the right:

rdio-amazon1.png

When installed, when you view this page a search link appears near the one on the right:

rdio-amazon2.png

It also appears on its main page:

rdio-amazon3.png

When you click one of these links, you get a certain retailers page for this album:

rdio-amazon4.png

Of course, this is in no way affiliated with either rd.io or this retailer.

[ 02:00 PM on February 13, 2011 ]

One gripe I have with 'clever' one liners we define at start up is that the documentation sucks. So, to turn down the suck dial, shdoc is a little utility to help document shell functions better. Namely, there's really one file -- shdoc.rb -- but there's a little more to allow bootstrapping a shdoc command. The idea is that you include inline documentation for shell functions that are created on login -- like rdoc, javadoc, ...

For example, I include a file ~/.functions that is included when I log into a shell, and this file contains the following definition:
# Groups the output of wireshark packets into single blocks
# @example sniff "ip src facebook.com" | group_packets
function group_packets() {
    awk -F"   " '/^$/ {print} /^[0-9a-f]{4}/ {printf("%s",$2)}'
}
When I run shdoc.rb on this file, I can now use man to see what group_packets does. e.g.
% man group_package
I get the following:

shdoc-group_packets.png

This uses an example, but you can also add parameters for options, for example, consider this function:
# Run tshark on "en1"
# @param options shark options
function sniff() {
    tshark -i "en1" "$@"
}
then
% man sniff
gives me the following:

shdoc-sniff.png

This is a work in progress, and by default all the files are written to ~/man/man1, but say you have a file named .functions that is run on start up, then I would copy shdoc.rb to ~/bin and add the following to my start up script:
export MANPATH=$MANPATH:$HOME/man
if [ -f ~/.functions ]; then
    source ~/.functions;
    if [ ! -f ~/bin/shdoc.rb ]; then
      wget --no-check-certificate \
       https://github.com/spudtrooper/shdoc/blob/master/shdoc.rb \
       -o ~/bin/shdoc.rb;
    fi
    chmod +x ~/bin/shdoc.rb
    ruby ~/bin/shdoc.rb .functions;
fi

[ 09:20 PM on February 12, 2011 ]

After a lady on the subway today reading The Sriracha Cookbook, I was determined to get a copy. But then I thought of just turning every recipe into a rooster sauce recipe. So roosterpes.user.js is a user script to make any recipe of allrecipes.com a rooster sauce recipe.

So, whenever you visit a recipe on this site, you'll get an improved title:

roosterpe-title.png

improved ingredients:

roosterpe-ingredients.png

and improved directions:

roosterpe-directions.png

to make any recipe a rooster sauce recipe.

[ 03:00 PM on February 12, 2011 ]

I was looking for way to connect pandora.com and rd.io -- in particular, an easy way explore rd.io for artists I listen to and like in pandora. Manually searching in rd.io for an artist I hear in pandora is too cumbersome. There doesn't seem to be a nice way, but the following will print a list of the search links for every artist you listen to in pandora:
tshark -i "en1" -x -f "ip src pandora.com"  | \
 awk -F"   " '/^$/ {print} /^[0-9a-f]{4}/ {printf("%s",$2)}' |\
 perl -n -e 'm/<artistExplorer[^>]+name="([^"]+)"/ && ($n=$1) ||\
 ($n=~s/\s+/%20/g) && \
 print "http://www.rdio.com/#/search/$n/artists/\n"'
So, when you are listening to an artist in pandora for whom you'd like to search in rd.io, just click the more recent link in the terminal.

pandoradio.png

A few notes:
  • tshark should point to the tshark binary of Wireshark. If it's not pointed there, this won't work. If you don't have Wireshark installed, also, this won't work
  • I'm using en1 as my interface, you may want to change this

[ 12:50 PM on February 06, 2011 ]

Terminal spudtrooper:

spudtrooper-terminal-small.png

Created with this: bitmap_to_terminal.

[ 11:38 AM on January 31, 2011 ]

ls_tree does ls as a tree, e.g.
% ls_tree
[suess]
 lorax.txt
[websockets]
 [websockets/client]
  client.php
  socket.js
 readme.txt
 [websockets/server]
  socket.class.php
  socketWebSocket.class.php
  socketWebSocketTrigger.class.php
  startDaemon.php
That's it.

[ 09:22 AM on January 31, 2011 ]

Here's a trivial, but potentially useful, bookmarklet to pop out a stand-alone/resized rd.io window.
rdio
Like so.

rdio.png

It came from rdio.js.

[ 07:28 PM on January 23, 2011 ]

easytable is a ruby gem to help make dealing with tabular data less painful. In particular, the goal (ongoing) is to make formatting and updating the value of data in tables programmatically easier. For example, consider the following table describing a number of people's age and donut preference:
NameAgeFavorite Donut
Joe19Glazed
Suzy Q45Strawberry-filled
Bob25I hate donuts

We would construct this by the following:
  t = Table.from_array([[  'Name', 'Age',    'Favorite Donut'],
                        [   'Joe',    19,            'Glazed'],      
                        ['Suzy Q',    45, 'Strawberry-filled'],
                        [   'Bob',    25,     'I hate donuts']])
Printing this with puts t yields what you'd expect:

easytable1.png

To update the value of a cell -- say, to change Suzy Q's age to 125234 -- we would do the following:
  t[2][1].value = 125234
But, to make this easier, by assigning mnemonics to the rows and columns, we can udpate the table more readably:
  # Assign mnemonics
  t.col_mnemonics = [:name,:age,:donut]
  t.row_mnemonics = [:head,:joe,:suzy_q,:bob]
  
  # Updating values
  t[2][1].value = 125234
  t[:joe][:donut].value = 'Chocolate'
  t.joe.age.value = 123
Now, printing t yields:

easytable2.png

Finally, this provides ways to format the cells (on a VT100 terminal), e.g.:
  t.head.color = Color::RED
  t.joe.background = Color::BLUE
  t.bob.donut.bold = true
  t.bob.donut.underline = true
  t.bob.donut.color = Color::YELLOW
  t.bob.donut.background = Color::GREEN
yielding:

easytable3.png

[ 12:30 PM on January 22, 2011 ]

I just started using feedly, and I love it, but my only complaint is that you can't easily scroll through posts of a page. So, feedly-nextprev.user.js is a user script to allow you to scroll-through and highlight posts by pressing the right and left arrow keys. One problem now is that the posts are being created dynamically, so it doesn't work perfectly at the moment, but close enough for now.

[ 12:40 PM on January 16, 2011 ]

I want to be able type something like this:
download all imgur.com/*.js
curl can do patterns -- e.g. curl http://reddit.com/[1..10].js -- and wget can do outright recursion -- e.g. wget -r http://reddit.com, but neither of these (I think) can allow you to download via patterns. This will:
download_all
This takes urls and regular expressions as arguments (or combinations) and downloads the links from these urls that match the patterns. For example (slightly edited to conform to my shitty blog design):
% download_all imgur.com/*.js
[1/1] http://imgur.com/
[ 1/12] /ajax/libs/jquery/1.4.1/jquery.min.js -> jquery.min.js
[ 2/12] jquery.progressbar.pack.js -> jquery.progressbar.pack.js
[ 3/12] jquery.colorbox-min.js?111910 -> jquery.colorbox-min.js
[ 4/12] jquery.multifile.pack.js?081710 -> jquery.multifile.pack.js
...
The above example is the same as
download_all imgur.com *.js
download_all imgur.com /*.js/
download_all http://imgur.com /*.js/
This example will download all the js files from imgur.com, html files from spudtrooper.org and all jpg files:
download_all imgur.com/*.js spudtrooper.org/*.html *.jpg
Coicidentally, after just opening a certain browser to enter this post, it became clear that the universe has its own agenda on how I should go about downloading in bulk:

firefox-install-updates.png

[ 09:12 AM on January 16, 2011 ]

I updated the user script redditcolor, which colorizes the scores of reddit articles, so it does so now automatically in Chrome when you scroll to the bottom and page expands. For example, when you reach the end of the page:

redditcolor2-1.png


the entire page is updated as the page expands:

redditcolor2-2.png


Here is the new version:
redditcolor.user.js

[ 04:11 PM on January 13, 2011 ]

A very typical sequence of steps for me in a browser is:
  1. Search for something
  2. Click on one of the result links in the same tab
  3. Decide I want to keep that result open, but explore some of the rest
To accomplish this, I have to:
  1. Go back
  2. Find the link I clicked the first time
  3. Open it in a new tab
So open/back is a bookmarklet catering to my brutal laziness to open what you're currently at in a new tab and go back to the search results in one click.

[ 12:04 PM on January 09, 2011 ]

I don't do simple math enough, and here's a testament to that. As another way of calculating tips, last night I thought I'd try to do this for a tip of 15%:
  1. Convert the total to base 15
  2. Move the "point" over to the left
  3. Convert that back to decimal
After a minute and feeling like a moron, it's clear this doesn't work. For example, suppose your bill is $160 (mine was not, it was $2.08), I would first convert $160 to base 15:

eqtip1.png

then move the "point" over one place and convert it back to decimal:

eqtip2.png

$10.60 is not the right answer, $24 is...I was thinking moving the "point" over on a base 15 would take 15% of that number; it obviously does not, it takes 1/15 of that number. So, clearly, instead of converting to base 15, we need to convert a base so that when divide by this base we have the effect of multiplying by .15 -- so try base 100/15:

eqtip3.png

move the "point" over and then convert back to decimal.

eqtip4.png

[ 02:04 PM on January 07, 2011 ]

copy_with_progress lets you copy one or more (probably large file(s)) showing progress of each copy. For example, when copying a to directory t, the output updates inplace like this:
a.bin -> t/a.bin [ 12.02% ] 93.26 MB / 775.92 MB
I couldn't find anything that did this for individual files, though I didn't look very hard.

[ 01:08 PM on January 05, 2011 ]

readertoc.user.js is a userscript to keep a table of contents pinned to top/right of a google reader window, so you can quickly navigate the articles. It updates as you scrooll and looks like this when installed:

readertoc1.png

It looks like this when installed and you move your face closer to the screen.

readertoc2.png

[ 10:16 AM on January 04, 2011 ]

In hopes of ousting someone as foursquare mayor of Audible while being as lazy as possible, 4sq is a script to allow you to conveniently check in from where ever you are by putting the following variables in your environment:
export FOURSQUARE_KEY=<your foursquare oauth key>
export FOURSQUARE_SECRET=<your foursquare oauth secret>
export FOURSQUARE_VID=<your foursquare venue id>
export FOURSQUARE_VENUE=<your foursquare venue>
export FOURSQUARE_GEOLAT=<your foursquare geolat>
export FOURSQUARE_GEOLONG=<your foursquare geolong>
signing up for oauth, installing the Ruby foursquare gem, then running the script -- with a possible message as arguments. When prompted for the access code, accept your apps access in a browser and paste that access code into your shell and hit enter.

[ 03:37 PM on January 02, 2011 ]

Sometimes they just nail it...

foursquare-me.png

[ 01:20 PM on December 29, 2010 ]

A little afternoon irony on the nyc android list.
android-nyc-mail.png
Coincidence? No, irony? Coincidence.

[ 03:02 PM on December 27, 2010 ]

In keeping with the theme of December being the month of giving, domainsearch.user.js is a helpful user script to save you a little time when you accidentally type a domain name into the search bar or search input, e.g.

domainsearch1.png

So, whenever you make this oopsy, you're given a friendly reminder that you probably meant to type this into the address bar:

domainsearch2.png

And, then you're magically swept away to your desired location.

[ 03:59 PM on December 26, 2010 ]

Here a couple things to help search amazon more effectively. Viewing the results as rows of 3 is a bit annoying:

amazon-table1.png.png

So, the first stab was with amazon_table, and to create a CSV file from a search result URL (e.g. amazon_table_eg.csv), then one could view an appropriate program or google docs. To use, just pass in the URL and it dumps the CSV to stdout.

But, a more seamless way is with this bookmarklet
amazon table
created from amazon-table.js that will create a table in place and continue to update it as new result pages are crawled:

amazon-table2.png.png

[ 11:24 PM on December 20, 2010 ]

I was sent the link to a facebook album today, and I realized that browsing these albums sucks...The thumbnails were too small to really peruse, and browsing through individual images was a horrific pain in the ass.

So, fbphotoalbum.user.js is a user script to replace the thumbnails of a facebook album with the full images. For example, take this anonymized album, where a link appears to the right of the title on an album page showing thumbnails, like so:

fbphotoalbum1.png

When clicked, we start to replace the thumbnails with the full images. And, since each image requires another request, the whole thing could take on the order of seconds -- or on the order of hours if you are one of the lucky customers of Time Warner. So, the View all link becomes just text showing the current progress.

fbphotoalbum2.png

The resulting full-sized images will be (possibly) out of order, but to get the idea, you can see that the first thumbnail (first screen shot) appears as the second full-sized image (second screen shot).

[ 12:25 PM on December 16, 2010 ]

bitlymail.user.js is a user script to add a mail link to the bitly links you create. So, when using it, instead of seeing this list of bitly links:

bitlymail1.png
The names are shortened and a new mail link, M, is added:

bitlymail2.png
And, this link will launch your mail client to mail the created link:

bitlymail3.png

[ 10:42 PM on December 13, 2010 ]

Hulu may need to reevaluate its definition of a performer?

performers.png

[ 09:55 AM on December 06, 2010 ]

ycombinatorcolor.user.js is a user script to colorize y combinator news according to points, similar to reddit color. Here's what it looks like:

ycombinator.user.js.png

[ 11:00 AM on November 29, 2010 ]

Unfortunate line breaks by microsoft:

check-your-junk.png