- air
- ajax
- algorithm
- apple
- bitbucket
- braintapper_exchange
- charts
- chumby
- codeigniter
- cognos
- complexity
- crashplan
- crosstab
- dash
- dashboard
- date
- dbvisualizer
- decisions
- dimension
- dogfood
- dona_wong
- dropbox
- edward_tufte
- extension
- feature_checklists
- feature_excellence
- filemaker
- firefox
- firewall
- flot
- flowing_data
- fogbugz
- football
- free
- freenas
- freshbooks
- git
- github
- gm
- google_charts
- iPad
- javascript
- jdbc
- jedox
- mac
- macbook
- maps
- marsedit
- mercurial
- metaweblog
- metrics
- microstrategy
- monowall
- moo
- nathan_yau
- news
- nosql
- open_source
- palo
- pentaho
- pfsense
- printing
- programmers_interfaces
- rapidweaver
- regex
- regexr
- rest
- safari
- smoothwall
- sony
- sqlpower
- stackoverflow
- statistics
- stephen_few
- svg
- tablet
- ticket_agent
- time_machine
- tip
- tm1
- transformer
- trick
- typographic grid
- usability
- visualization
- vmware
- w3c
- web
- wiki
- wikkawiki
- work_management
- wsj
So this little "spare time project" is progressing nicely. I've been posting regular updates to "the Githubs".
The Why
As I promised last week, I'll go into a bit more detail on the development of this extension (my first, by the way).
The trouble with Hacker News is that the site presents you with a link to submitted (internal and external) articles and has a separate internal comments link. If you use Hacker News a lot, you're jumping back and forth between the original article and then to the comments.
Unlike RSS, which at least gives you a preamble or full article text (depending on the source), you've only got a title to work with. I thought it would be nice to be able to see the comments and the linked article at the same time. I also thought it would be nice if you could "star" articles like you can in Google Reader. Another neat feature is that you cca "follow" stories submitted by your favorite users or from your favorite sites.
In addition, to keep the noise down, I also thought it would be useful to ignore users or sites. For example, if you already subscribe to TechCrunch's RSS feed, there's no need to see the same headlines again in the Hacker News stream. This is all definable by the user.
Hacker News is an invaluable resource. I get a lot of programming and usability information from the news stream. I thought all of the aforementioned features would help significantly reduce the amount of time spent on Hacker News. While the signal to noise ratio is already very good on Hacker News, there was already a lot of redundancy with respect to my Google Reader subscriptions.
I'm not a designer, but I also wanted the reading experience to be more attractive than the vanilla (and boy, do I mean vanilla) Hacker News reading experience. I do believe that the UI will differentiate this extension from the other extensions out there. Since this extension was designed to scratch my own itch, your mileage, of course, will vary, in terms of whether it fits your use case.
Vanilla Hacker News
My Mockup
Note: My mockup currently shows functionality that I may drop or am considering for a later release.
The How
So a little more detail on how it works. As the extension is Safari only, it made life easier, as I didn't need to target any code for cross-browser support.
Where I could, I took advantage of some newer CSS and HTML5 features. For example, it is using Safari's built in SQLite SQL database. Originally I used the Persistence.js library, and while the library is quite good, it wasn't what I needed, so I ended up writing my own database code. The one thing that takes getting used to is that database activity is asynchronous, which makes rendering things a little dicey at times.
Fortunately I used Sammy.js from the get-go. Sammy.js is a Javascript framework built on jQuery, and it's fantastic. Sammy.js supports event triggers, which makes managing the asynchronous database activity much easier to handle.
Having spent part of the weekend rewriting the database glue for the app, there's still a bit of work to do, but it's now moving quickly toward the cleanup stages.
To make it all work, my extension is actually scraping the HTML and re-rendering it (it's all rendered using tables without a lot of ID attributes.. ouch!). Of course, this approach breaks down if YCombinator changes the template, which I'm hoping they won't. Originally I was thinking about using XSLT, but XSLT can be sensitive to XML that isn't well formed. Instead, I simply used jQuery's iteration and parsing functionality to do the scraping. It's quick enough and it does the job.
The extension periodically reloads the front page of Hacker News and pulls in any diffs. I weighed the option of using RSS vs. scraping the front page, but went with scraping the front page, because my scraping code leaves me the option of paging into older headlines. I haven't figured out whether I want to do that yet, but if you only visit Hacker News every few weeks, it seems like it would be worthwhile to implement in a later release.
Now one thing in the first release that's going to disappoint people is that the extension won't handle login status and comment submission. The silver lining is that the extension only 'jacks' the main Hacker News URL (news.ycombinator.com) All other Hacker News URLs are untouched and left with the vanilla UI, so you can have your cake and eat it too, so to speak.
Anyways, that's enough info for now. I'll keep you posted on any major news related to this extension, but as always, you can grab the latest copy off the GitHubs if you want to mess with it yourself.
Ycombinator's Hacker News is probably the most popular news site for programmers and startup types. It's basically Digg before it jumped the shark, minus the good looks. The signal to noise ratio is incredibly high. The site, however, feels so 1990s. It's probably part of its appeal, but I felt like trying my hand at creating a Safari Extension for Hacker News in the vein of Google Reader, and I've made some headway.
I'm not normally one for preannouncing stuff, but it's mostly working and getting close to a finished state.

My project is open source and hosted at "the Githubs". I expect to have the bulk of the functionality completed by next week. If you can't wait, feel free to clone the repo and build a copy yourself.
Some highlights:
- You can "star" items to be read later
- You can use a mobilizer to clean up the appearance of the original link
- The extension remembers what you've read
Anyways, keep an eye out here for an announcement next week or so, where I'll be explaining what it does and how it works in greater detail.


