Welcome to Serpe

Serpe (SERvice Prototyping Environment) is a designer-oriented way to prototype rapidly the back end of a (web) service.

serpe in Italian means "harmless snake".


There is a million tools on the market that let you rapidly make web pages, but there is very little that helps you make that page into an interactive experience.
Why is this useful or even interesting, particularly if compared to the usual way of prototyping through paper prototypes or even moderately interactive HTML mockups? After all, I am asking you to do some effort here, so you should be getting something back for it. There are two major areas where an interactive prototype is stronger than a paper prototype of a service:
  1. the user gets to choose a greater part of environment in which the service operates. You will be able to try out your idea on unexpected devices in unusual context. It is difficult to test a paper prototype on a user that is supposed to be accessing your service with an iPhone while riding a bike.
  2. multi-user experience. Many services make sense and reveal their true complexity only when multiple users engage with them on different time scales. This is extremely difficult to test on paper.
Serpe is freely inspired to Processing, in that it tries to make easier the initial phase of getting into programming. We aim at reducing the height of the initial big step. At the same time, programming is conceptually difficult, and no language has ever been able to change that: like the proverbial cat, complexity, chased out of the door, reenters triumphally through the window. But it is ok if this happens at a later stage when you are equipped for it.

What is Serpe?

Serpe is based on Python, which means that you can use all Python-related learning and reference material; technically speaking, Serpe is just a special way of running Python code inside the Google Application Engine (herafter GAE), Google's friendly way of hosting Python applications. What this means, non-technically, is that you write Python code, run it on your computer and then upload it to Google that proceeds to host it and run it on your behalf in the big server in the sky (or in Denver, as the case may be). The whole Internet may then access it and be dazzled by your brilliance. On this site, we will frequently say "Serpe does X"  while in fact we mean "Python does X"  or in some cases "Google Application Engine does X". Over time, the difference will become clear.


What do you need to run Serpe?

You need a computer to develop on. Strictly speaking, once your code is uploaded to GAE, you just need a computer that can access Google, which is something even a tiny netbook, a smartphone or a TUDelft public machine should be able to do.
You need a GAE account. To get that, you need to be registered with Gmail. If you already have a Gmail account, you are already halfway there...

What could be useful to learn Serpe?

  • knowledge of Python would be very useful, but it is not assumed
  • knowledge of some other imperative programming language, like JavaScript, Java, C or VisualBasic is useful, but it is not assumed
  • knowledge of other Web APIs and programming environments like PHP is useful - if potentially confusing
  • knowledge of HTML is useful, and you will kind of pick it up along the way if you don't have it - but we will use it at a very basic level
  • knowledge of CSS is marginally useful - the bits of CSS that appear in these pages can usually be ignored or copied as they are, like puzzling Latin inscriptions
  • more subtly, system design thinking, that's to say the ability to analyze and design systems along hierarchical architectures, to think in terms of modules, state, events, blackboxes, messages... all these concepts really help in the design and programming of service backends.

How do I learn Serpe?

By following the friendly tutorial:
  1. installing GAE: setup
  2. deciding where to run: practicalities
  3. static page: basic HTML generation, text formatting and images
  4. telling time: the time module
  5. hello user!: identity
  6. basic guestbook: persistence and forms, input elements, dictionaries
  7. manageable guestbook: more complex persistence and multiple URLs, sending email, doing something over and over
  8. cloning twitter: a larger application
  9. use case: serving surprises by mapping one fixed URL on a randomly chosen resource
  10. use case: serving up RSS 
  11. use case: a high scores service for public game installations, and some more rationale for Serpe.
  12. use case: controlling the large interactive lamp

Where do I go from here?

To learn more Python, go to the Python website, download and install the distribution for your platform and go through the excellent tutorial. When in doubt, dig through the reference manuals. There are some very good free Python books on line and you don't really need to buy a huge brick of poorly bound paper to learn it: take a look at A Byte of Python, How to Think Like a Computer Scientist (Python Edition) and Dive into Python, in order of assumed familiarity with computing. There is of course a comp.lang.python Google group.

Acknowledgments and thanks

Thanks go to the Python community, to Google for great and fun tools, to the authors of Processing, Wiring and Arduino for inspiration.
Serpe uses the EditArea JavaScript code editor by Cristophe Dolivet under the LGPL license.
Serpe uses the PyRSS2Gen by Dalke Scientific under the BSD license.
Serpe gets better only because of its brave testers: Claudia Muresan, Erdem Demir...