Friend of a Friend
Foe of a Friend
Hacker Smacker helps you identify quality authors and filter out obnoxious commenters on Hacker News. Three little orbs appear next to every author's name and you can choose to either friend or foe them.
If you friend people, and they also use Hacker Smacker, you'll see all of your friend's friends and foes. This helps you identify commenters that you want to read as you quickly scan a comment thread.
I've found that this reduces the time I spent on Hacker News, as I can glance at long comment threads and just find the good stuff.
Hacker Smacker is directly inspired by Slashdot's friend/foe system.
A friend or foe has not yet been made. The standard orb:
Choosing a friend or foe. Animation provides a nice slide out:
A blend of friends and foes illustrating the transformative experience of Hacker Smacker:
From the Web Store: Install from Chrome Web Store
Load unpacked (development):
- Go to
chrome://extensions - Enable "Developer mode" (top right)
- Click "Load unpacked" and select the
client/chrome/directory
From Add-ons: Install from Firefox Add-ons
Load temporarily (development):
- Go to
about:debugging#/runtime/this-firefox - Click "Load Temporary Add-on"
- Select
client/firefox/manifest.json
From the App Store: Install from Mac App Store
Build from source (development):
- Open
client/safari/Hacker Smacker/Hacker Smacker.xcodeprojin Xcode - Build and run (Cmd+R)
- Enable the extension in Safari > Settings > Extensions
- news.ycombinator.com/item?id=3871674
- news.ycombinator.com/item?id=3543440
- news.ycombinator.com/item?id=3576217
- news.ycombinator.com/item?id=3679698
- news.ycombinator.com/item?id=3702513
- news.ycombinator.com/item?id=7755927
- news.ycombinator.com/item?id=8082029
- news.ycombinator.com/item?id=19775789
Hacker Smacker was built to learn how FoaF (Friend of a Friend) works. The idea is that not only do you want to surface content from your friends, but if you chose your friends well, they can help you surface more great content by highlighting comments from their friends.
The impetus for building a small system where the primary goal is simply to quickly show relationships was that I wanted to build the same system for NewsBlur, a visual RSS feed reader with intelligence. The backend is built using Redis sets and CoffeeScript/Node.js. NewsBlur's social layer, which was built immediately after this project, uses a very similar backend.
Learning how to build this project was the main reason, as I am now able to bring this technique to other projects.
Hacker Smacker is divided into two parts:
- Client: the extension that gets injected into Hacker News and reports back with friends and foes.
- Server: the Node.js/Express.js/Redis system that keeps track of all friends/foes and friend of a friend and foe of a friend relationships.
You don't need to install the server unless you want to run your own private version of Hacker Smacker. If you do decide to install your own server, you're on your own.
-
Mihai Parparita mihaip@chromium.org — Help with fixing the issue around browsers not allowing a JSONP AJAX request to modify the page, as it is sandboxed and cannot alter the page using arbitrary JavaScript (the JSONP) not included with the extension itself.
-
Greg Brockman greg@gregbrockman.com — Helped design the authentication system, working through the security model to ensure that friend/foe relationships could be stored and verified without exposing user credentials.
None of the data stored by Hacker Smacker is sold or used in any way except for determining friend/foe and friend/foe of a friend relationships between authors.
Some people express their enthusiasm for colleagues by friending them. Others, famously, express it by hurling furniture across the room. The chair is a nod to one such enthusiast who shall remain nameless, but who once demonstrated that the pen is mightier than the sword, and the chair is mightier than both. Besides, a launched laptop makes everyone reconsider.
MIT License
- Samuel Clay: samuel@ofbrooklyn.com
- On the web: samuelclay.com
- X: @samuelclay



