What is SmashBomb?

  • Keyboard mashing as input.
  • Data collection.
  • Data reporting.
  • Responsive.
  • Fast!
  • Fun!
  • OpenSource.
  • Extensible.


  • Chaos.
    • Keyboard mashing as input.
  • Anonymity.
    • No authentication.
  • Transparency.
    • Report we know about you.
  • Order.
    • Report trends.


  • burn_rate: 50
  • fuse_selector: '#fuse'
  • keypress_time_diff: 200
  • keypresses_selector: '#keypresses'
  • smash_selector: '#smash'
  • smash_time: 1000


  • strings: UTF-8
  • timezone: UTC Timestamps


  1. Install node.js
    • Go to, click the download link and follow instructions for your platform.
  2. Install npm
  3. git clone git://; cd smashbomb/; npm install -d


  • node Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
  • npm npm is a package manager for node. You can use it to install and publish your node programs. It manages dependencies and does other cool stuff.
  • express High performance, high class web development for Node.js
  • node-jqtpl This is a port of jQuery's Template Engine to nodejs
  • bootstrap Simple and flexible HTML, CSS, and Javascript for popular user interface components and interactions.
  • jquery jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript.
  • underscore Underscore is a utility-belt library for JavaScript that provides a lot of the functional programming support that you would expect in Prototype.js (or Ruby), but without extending any of the built-in JavaScript objects. It's the tie to go along with jQuery's tux, and Backbone.js's suspenders.
  • backbone Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.


node app.js

Browser Report

A report on what the users browser is telling us about them:

  • IP Address
  • Headers: Language-Accept, etc.
  • Allows: Cookies, Javascript, etc.


  • Text input, no submit button.
  • You have 1 seconds to complete your smash.
    • Fuse on bomb indicates time remaining.
  • If you stop typing for more than 200 milliseconds, your smash is considered complete.


  • No pasted text.
  • Min 6 characters.
  • Limit of 2 consecutive repeats of a character.
  • Not a word.
    • Requires a dictionary for each supported language.



Live search after min characters? Or Once the use has started smashing listen for them to stop for 1 second and submit request.

  • Length of smash
  • Timestamp of each keystroke
  • Keyboard detection?
  • Typing speed
  • Related smashes by similar characters? Related content?
  • Link to subscribe to this smash's RSS feed.
  • Permalink for the smash.
  • SubString/SubSmash results.
    • recursive smash results for all smashes that are a substring of the current smash.
  • Anagrams

Reports & Statistics

Reports and statistics on aggregate data. Bot that reports to the PanicRoom. RSS Feed?

What is the PanicRoom?

Chatroom with anonymous user chats and bot reports of SmashBomb activity and reports.


  • Subscribe to changes


  • Excepts smashes as input.
  • Searches content of smashes for matches.
    • Allow for plugging-in other search engines too?
  • Returns search results.


Print as in fingerprint. For touchscreens. See:


Music/instrument interface for touchscreen. For touchscreens only?