Sizer Screenshot

Sizer – A Simple, Useful Chrome Extension

Windows 7 debuted one of my favorite mainstream OS features of all time – Aero snap.  With just a drag one could resize a window to be full or half screen without annoying clicking and dragging.  Recently there have been a wave of OS X apps replicating (and even expanding upon) this functionality such as SizeUp, Spectacle (my personal choice), and Cinch.  However I have now become so dependent on this functionality I find it almost unbearable to use a computer without it.  My workflow has completely adjusted to the side-by-side window style and I can’t go back to dragging my windows to that size manually 5+ times an hour. Continue reading


My Ultimate Mobile Setup

I do 90% of my work on my Macbook Pro. It’s the 2011 model with the 15″ 1680×1050 antiglare screen, Core i7 processor, and 8GB of RAM. It’s an amazing machine and I wouldn’t want to use anything else at home. However, I also spend 4-6 hours a day in class and another 2+ just generally “out”, and it became a bit cumbersome to always carry a 6+lb laptop that gets <4hrs of battery life (this figure used to be higher). So I decided I would get some better mobile gear. The obvious choice would be a MacBook Pro (or any ultrabook) however I didn’t want to spend all that money. I made a list of what I want in a mobile device:

  1. Lightweight
  2. All day or multi-day battery
  3. Relatively cheap (<$600)
  4. Effortless sync with my other devices
  5. Ability to take notes, browse the internet, and code

This is not an easy task. At first, it seemed like such a device would have to wait a few years. But over the last few months, I figured out a setup that works for me.

Continue reading

The Hacker News Toolbar

After making Hacker News Inline Reply I wanted to make a more complicated Chrome Extension.   I have always liked the Reddit Toolbar, so I decided to replicate the experience for Hacker News.  

Hacker News Toolbar

Clicking the link above will get you the Chrome Extension for the HN Toolbar!  The HN Toolbar is a combination of a Chrome Extension and a Sinatra app running on Heroku.   The Chrome Extension redirects external links on the HN home page to the HN Toolbar website.  The website then loads and styles the comments alongside an iframe of the content page.    To get around iframing restrictions, the Sinatra app actually proxies all linked content on the framed page, which was most of the challenge in building this.

You can see all of the code for the toolbar and the extension on my Github under the hntoolbar repo. 

samstern — bash — 270×70-1

SHPM – Simple Haskell Project Manager

Over the weekend I was playing with Haskell (by reading through Learn You a Haskell for Great Good!) and I got to the chapter on IO.  I saw that the author made a todo list manager similar to the famous “todo.txt” with just a single, short Haskell script.  I wanted to extend the example but make something with simpler code, more features, and something I would actually use.  The result?

Simple Haskell Product Manager (shpm)

It’s my first ever Haskell program more than a few lines long, and I am using it every day.  I am really loving Haskell as a language.   SHPM is mostly IO based so it’s not a great example of Haskell’s functional awesomeness, but it still shows how powerful the language is and how little boilerplate it has compared to my other favorite (Java).

SHPM manages a file called shpm.txt and keeps your todo list up to date with just a few simple commands:

shpm list -> list all tasks by project (in color)
shpm list -nc -> list all tasks by project (no color)
shpm add "Some Task" -> add "Some Task" to project "Other"
shpm add "Some Project" "Some Task" -> add "Some Task" to the project "Some Project", creating the project if necessary
shpm remove -> list all tasks and choose one to remove
shpm remove n -> remove task #n from the list

And here are some action shots:

HackNY 2012

I am a HackNY 2012 Fellow!

For a list of all the fellows:

I’m working at SecondMarket, which is really awesome.  If I make any projects I can post about publicly, I’ll list them on this page.



Here is one of my projects from SecondMarket.  It’s one of three things I made there but the only one I got to make Open Source:

Barack Obama

We Built a Search Engine – Presenting OutOfMemoryError

Cast: Vamsee Krishna, Nirtyanath Jaganathan, Leo Thumma, and Sam Stern

Our final project for CIS 455 (Internet and Web Systems) was to build a search engine.  Not a search algorithm, not a frontend for a search engine, but an entire search engine from start to finish.  That included a crawler, and indexer, a PageRank-er, and a web frontend.  All of these components had to be distributed over a 10-machine, 50-core Amazon EC2 computing network.  We also threw in some extra features like intelligent spellchecking, DuckDuckGo contextual integration, and EBay results to make it more fun.

Most of the distribution organization was performed using FreePastry to distribute work based on a partition of the URL namespace.

The name of our product?  OutOfMemoryError.  The product was named for the error that plagued our development from day one.  Eventually, to eradicate the error, we removed every single data structure from memory and replaced it with our own combination of transactional Berkeley databases, S3 storage, and other persistent data stores.   The result was an intensely robust system that could recover seamlessly from any fault (you could even pull the plug on the computer and lose nothing).

This is the coolest thing I ever coded, below are some pictures of the final product.  I’ll also include a link to our documentation paper where you can get a better understanding of the program architecture.

Continue reading