Projects ===== Feel free to link to your project, useful resources, or blog posts you've written about doing these ###OSS projects Recursers have contributed to: * [Mocha](http://visionmedia.github.com/mocha/) – JavaScript test framework running on node and the browser, making asynchronous testing simple and fun. * [Jade](http://jade-lang.com/) - Jade is a high performance template engine heavily influenced by Haml and implemented with JavaScript for node. * [Angular.js](http://angularjs.org/) - AngularJS lets you extend HTML vocabulary for your application. The resulting environment is extraordinarily expressive, readable, and quick to develop. * [BPython](http://bpython-interpreter.org/) - bpython is a fancy interface to the Python interpreter for Linux, BSD, OS X and Windows * [Brubeck](https://github.com/j2labs/brubeck#readme) - Brubeck is a coroutine oriented web framework featuring: Mongrel2, Gevent (or Eventlet), ZeroMQ and DictShield * [Lantern](https://github.com/getlantern/lantern) - Lantern is a free program that gives people access in places where access is denied. * [Requests](http://docs.python-requests.org/en/latest/) - Requests is an Apache2 Licensed HTTP library, written in Python, for human beings. * [Pry](https://github.com/pry/pry) - Pry is a powerful alternative to the standard IRB shell for Ruby. * [Python 3](http://www.python.org/download/releases/3.3.0/) * [Scala (standard libs)](https://github.com/scala/scala) * [Go (standard libs)](http://golang.org/project/) * [Julia (standard libs)](http://docs.julialang.org/en/latest/stdlib/) - * [Rust (standard libs)](http://static.rust-lang.org/doc/std/index.html) - The Rust standand library provides a number of useful features that are not required in or otherwise suitable for the core library. * [gevent](http://www.gevent.org/) - gevent is a coroutine-based Python networking library that uses greenlet to provide a high-level synchronous API on top of the libevent event loop. * [ClojureScript](https://github.com/clojure/clojurescript) - ClojureScript is a new compiler for Clojure that targets JavaScript. It is designed to emit JavaScript code which is compatible with the advanced compilation mode of the Google Closure optimizing compiler. * [clojure-py](https://github.com/halgari/clojure-py) - A implementation of Clojure in pure (dynamic) Python. * [Pandas](https://github.com/pydata/pandas) - Python data analysis library * [Openhatch](http://openhatch.org/) - An organization that helps match contributors with projects that need contributions. Also has "training missions" to help beginners get familiar with common opensource technologies and skills * [Ogre](http://ogre.clojurewerkz.org/) Clojure library for querying graphs. * [ownCloud](http://ownCloud.org) Open platform for file-syncing and sharing. * [Titanium](http://titanium.clojurewerkz.org/) Clojure library for interacting with Titan graphs. * [Archimedes](https://github.com/clojurewerkz/archimedes) Clojure library for interacting with blueprints graphs. * [The Glorious Glasgow Haskell Compiler](http://ghc.haskell.org/trac/ghc/) - The de facto [Haskell](http://www.haskell.org/haskellwiki/Haskell) compiler. A good place to start is the [GHC Newcomers wiki page](http://ghc.haskell.org/trac/ghc/wiki/Newcomers). * [Questhub.io](http://questhub.io/) - [github](https://github.com/berekuk/questhub) - Questhub is a public task tracker with social features and game points. * [Twisted](http://twistedmatrix.com) -Twisted is an event-driven, networking library in Python. * [Akka](http://akka.io) - Akka brings the actor model to the JVM * [GNOME](http://gnome.org) - A desktop environment for Gnu/Linux * [Hacker School iOS App](https://github.com/bladeofky/Hacker-School-App) - A native app for Hacker School * [Flask](https://github.com/mitsuhiko/flask/) - a micro web framework in Python ###Networking and Network protocols * HTTP client/server * Bittorrent client * http://wiki.theory.org/BitTorrentSpecification * http://www.kristenwidman.com/blog/how-to-write-a-bittorrent-client-part-1/ * http://www.bittorrent.org/beps/bep_0003.html * http://libswift.org/ * http://en.wikipedia.org/wiki/Kademlia * Visualize network traffic through a proxy * IRC client, server, bot * Networked tictactoe, or some variation on a central game server * a Rack / WSGI server * Web server with various concurrency models ###Tooling/general programming * Rewrite command line tools (grep -r, find, ls) in any language (tree traversal, etc. being the point) * https://github.com/technomancy/zossima * Could port similar ideas to different languages/editors * Command line tools to do things useful to you (HN reader, Stack Overflow reader) ###Compilers, parsers, and emulators * Compiler for an obscure language like DCPU * Calculator * Emulator for a classic computer or video game system (Apple II, GameBoy, Commodore, NES, Atari, etc.) Something that leverages your nostalgia ideally. * An emulator is a software implementation of a piece of hardware. * [Fun Project:](http://en.wikipedia.org/wiki/Elite_(video_game)) * [Zarch:](http://www.youtube.com/watch?v=tw94qXPfg6Y) * Transpiler (Scheme to JavaScript, for example)Compilers: Play with Python source, [example](http://eli.thegreenplace.net/2010/06/30/python-internals-adding-a-new-statement-to-python/) * Scheme interpreter, [example](http://www.michaelnielsen.org/ddi/lisp-as-the-maxwells-equations-of-software/) * Regular expression engine (program that takes regular expressions and searches strings for matches) ###Games and graphics * Ray tracer (requires some math) * toy example: https://github.com/rtunney/ray-tracer * Image / video processing without a framework * Write a library that does 2D vector drawings using a bitmap (array of pixels). * Write a library to draw a 3D scene using only 2D graphics primitaves * Tictactoe * Pong * Mandelbrot set generator * Maze game (with AI) * Tetris (with AI, networking, various frontend) * Hangman (networked, multiplayer) * Implement a computerized version of _why the lucky stiff's [Kaxxt](https://www.youtube.com/watch?v=I4U1vO-lMS0) card game. ###Natural Language Processing * Markov chain stuff * Generate (or identify) poetry patterns ###Web * Authentication library * URL shortener * Forum * Basic blog * Browser extension that does something interesting * https://github.com/lchi/freshy-server * http://www.daniellesucher.com/2011/11/jailbreak-the-patriarchy-my-first-chrome-extension/ * Ecommerce store with shopping cart ###Miscellanea * Static Site Generator * Scrabble solver web service * Combine something cute and something you want to learn about (I did dynamically generated manual-formatted pages (readable in 'man'!) that were retrieved from stack overflow in Ruby because I was trying to learn it. * One off game that allows you to use an algorithm or two that seem interesting * Board game * Patch webkit so that the computed styles view in the inspector updates every time the browser redraws * write C extensions to Ruby or Python * Build a database * Inspirations from [Martyr2's Mega Project List](https://github.com/karan/Projects) * Implement a Linux filesystem using [FUSE](https://github.com/libfuse/libfuse) * Projects from [this blog post](http://matt.might.net/articles/what-cs-majors-should-know/) by RC resident Matt Might. * I particularly enjoy "Directly route your microphone input over the network to another computer's speaker" ###Fun small problems * [Toy Recursion Problems](https://wiki.hackerschool.com/index.php/Toy_recursion_problems) * [Project Euler](https://projecteuler.net) * [Cryptopals](http://cryptopals.com) * [Hackerrank](https://www.hackerrank.com/) * [Exercism](http://www.exercism.io/)