Workshops‎ > ‎

Extreme Startup


Extreme Startup Ninja
Extreme startup is a practical workshop which simulates the excitement and insanity of working for a high pressure startup company, where every decision (or lack of) can make or loose you money. 

Think of it as an extreme version of a coding dojo, where you are constantly challenged with new requirements and have to make quick decisions on what you should develop.  An extreme startup server is used to steadily grown requirements by asking you what seems to be simple questions at an increasing rate and complexity.  As these questions grow and change, as a normal project would, you are continually urged to develop your code to meet these changes.

Scores are displayed for each time in real time, so you can see your progression in terms of your competition.  Teams can choose any language they wish to implement their product and there are a number of basic project templates to help you get started.

Like other dojos its best to run the extreme startup workshop with a number of pairs or very small teams, to get people coding.

The Set up for Clojure

Extreme Startup hub - facilitator
The facilitator of the workshop will setup an extreme startup hub server that will pump out questions and keep scores of all the answers.  Install Ruby 1.9.2 and get the code from Github.

When testing the setup of the extreme startup hub, run the project using:
WARMUP=1 ruby web_server.rb

When starting the extreme startup session, start up the server using:
ruby web_server.rb


Extreme Startup Company Server - 1 per team
For your Clojure product development you will need:
  • Java runtime environment or SDK - version 6 preferably
  • Leinigen - or some other Clojure tool
  • Emacs + Clojure-mode, Clojure-test, paredit - or some other development environment
  • A repl - using lein repl or lein swank + emacs

1) Download the basic server from Github to give you a head start - you will need it, trust me!

    git clone https://github.com/bodil/extreme_startup_servers.git extreme-startup

    cd extreme-startup/clojure

    lein deps

2) Navigate to the Clojure project

Have a look at the code, the rules.clj is the most important file at this point.  Hint: look at the dispatcher function and consider using the tests, you may need them for your sanity :-)

3) Load your code into the repl and fire up your browser *

    lein repl

Running lein repl in the top level of the project directory should load the project code into the repl.  If not, then run (load-file 'src/extremestartup/server.clj)

    (server/start 3000)

3000 is the port number to run your server on, you can use anything that is available on your machine
    
Open your browser at http://localhost:3000/ to see if it works
                    

4) Register your team as a player

The facilitator should provide you a URL to connect to.  Select the "I want to play!" link and register your team.

    Check your current IP address on your laptop and use that address for the URL.  To find your IP address, open a command line terminal and run ifconfig (Mac / Linux) or ipconfig (windows).  Make sure you use the port number you specified, if different from above.


5) Get coding

Load the rules.clj file and extend the dispatcher function to your heart's content. Use the testrule macro to quickly unit test your dispatcher.

Hint: you may want to have a look at the questions you are getting asked, so you can answer them!!



* You can use lein run to fire up Jetty with your code - the only downside is you have to kill and run Jetty each time you make a change.  Jetty will run on port 8080 by default, so you would use that port value as the end part of the URL when adding a player - i.e. http://192.168.1.2:8080