CanHeKickIt makes pretty charts based on historical data scraped from Kickstarter.
It is not affiliated with Kickstarter.
- The entire app is written in Clojure, with the exception of some less for css.
- It's built with some powerful ideas and technologies like MongoDB, HTML5 pushState, contract programming, logic programming, SVG, and Rich Hickey's ideas on state management.
- It uses a kd-tree to store the points in the graph. This lets me efficiently place the tooltip when someone hovers over the graph. This is less efficient that comparing on a single dimension or using taxicab geometry, but much cooler.
It is developed in Emacs on
Arch Linux FreeBSD and is deployed to a server hosted by ARP networks running FreeBSD.
A few of the most important libraries used:
- Creates SVG charts and converts Clojure datastructures into html elements.
- Clojure wrapper for the Java MongoDB driver.
- Clojure web framework. Provides useful abstractions over Ring.
- Clojure wrapper for RabbitMQ, a messaging system. Used to run scrapers in background.
- Clojure wrapper for the Java Quartz scheduling library. Used to schedule scrapers.
- Contracts programming for Clojure. Used to sanity check scraped data.
- clojure-mode for Emacs
- Provides excellent debugging and code-writing tools though swank-clojure.
- Used for remote debugging on Android (still working on that, sorry!). Conflicts with swank-clojure.
- Lein plugin that emits Clojure and ClojureScript code from a single metadata-annotated codebase.
- Websockets, mainly to automatically update the browser when a user adds a project.
- Graphs of aggregate data over all projects or a subset of projects.
- Give the user the ability to send database queries to find subsets of projects.
- Predict if a project will be funded.
- Expand the mini-graph instead of drawing a new graph.
- Add support for browsers without SVG support.
Built by Daniel Woelfel, a programmer based in the Bay Area.
Here's a picture of him holding a baby next to a train in Austin: