Tools for rapid prototyping: a webapp in 1 week

First things first.  My new webapp tuttivisti is live!

This post is about how it came to be. In just one week. One person team. Crazy working hours.

So I was there immediately after receiving the news that YC did not select my team for this round. I thought I would feel depressed. I thought that the put down would ruin my mood.

Well it didn’t! I actually felt a jolt of energy. For some reason I felt a bit as if I had been freed. Can’t really explain why but my motivation and excitement bounced back up.

So what did I do with all this creative energy? Well my partner for diffract.me (the other project I am preparing to launch) had to go for a few days back home and we hadn’t planned our next iteration yet. So I decided to dive into something new, short and sweet.

Yep, I started coding. Again. From scratch.

I sat on the shoulders of giants. For this 1 week challenge I picked some of the most productive tools I know (and these will be topic for a future post):

I’d love to communicate properly the productivity boost that the set of frameworks above can give a developer.

No more spending endless hours trying to create a decent CSS/HTML layout. Bluetrip (and by saying Bluetrip I mean also the great Blueprint and Tripoli from which Bluetrip has been created) makes it trivial to put the stuff exactly where you want it on the screen. Cross-browser. No hassle.

Pinax. Ah, the joy. No more coding for the nth time a registration module. No messing with authentication emails. No rewriting another openid library. No more. It’s all there. Ready to use. Greatly structured. Amazing stuff. This is a game changer in my opinion.

Jquery. Well it needs no introduction. Jquery is a work of genius. For me it changed coding in Javascript from a painful experience into a pleasurable one. I love Javascript again.

Now will tuttivisti fly? I sure hope so, but the truth is that it does not matter. What I am saying to myself is: If I can build something like this in 1 week the question is not “will I ever manage to build a webapp that gains some traction?” but “How many attempts will it take? Is 5 going to be enough? 10?”. Maybe. :D

I have a lot more to say but will cut it short. I am at the end of a very very long and demanding coding spree.

Update: The past weekend a new version of tuttivisti has gone live, my 2nd week of work on the project, which incorporated much of the feedback I received, but a lot of work is still needed. So feedback is welcome, and – yes I know – I need a graphic designer.

28 Responses to “Tools for rapid prototyping: a webapp in 1 week”
  1. ben 9 November 2008 at 2:58 am #

    “Dude”, building a business is far different from building a website. Unfortunately, the web site is the easy part, but funnily enough, it always has been. Hell, I could code up a website like that in C in a few weeks, but certainly couldn’t turn it into a business in less than a year.

  2. nick 9 November 2008 at 3:11 am #

    Hi Ben,

    I agree and was not implying otherwise.

    My point is that the barrier of entry in any online niche is getting lower and lower. My excited remark was about the technology barrier coming down. Nothing more. Thanks for the feedback.

  3. eddie 9 November 2008 at 3:18 am #

    the django translation file in diffract.me is corrupted or something.

    MOD_PYTHON ERROR

    ProcessId: 1888
    Interpreter: ‘diffract.me’

    ServerName: ‘diffract.me’
    DocumentRoot: ‘/htdocs’

    URI: ‘/’
    Location: ‘/’
    Directory: None
    Filename: ‘/htdocs’
    PathInfo: ‘/’

    Phase: ‘PythonHandler’
    Handler: ‘django.core.handlers.modpython’

    Traceback (most recent call last):

    File “/usr/lib/python2.5/site-packages/mod_python/importer.py”, line 1537, in HandlerDispatch
    default=default_handler, arg=req, silent=hlist.silent)

    File “/usr/lib/python2.5/site-packages/mod_python/importer.py”, line 1229, in _process_target
    result = _execute_target(config, req, object, arg)

    File “/usr/lib/python2.5/site-packages/mod_python/importer.py”, line 1128, in _execute_target
    result = object(arg)

    File “/data/frameworks/django/django/core/handlers/modpython.py”, line 228, in handler
    return ModPythonHandler()(req)

    File “/data/frameworks/django/django/core/handlers/modpython.py”, line 201, in __call__
    response = self.get_response(request)

    File “/data/frameworks/django/django/core/handlers/base.py”, line 67, in get_response
    response = middleware_method(request)

    File “/data/diffract.me/live/diffractme/account/middleware.py”, line 24, in process_request
    translation.activate(self.get_language_for_user(request))

    File “/data/frameworks/django/django/utils/translation/__init__.py”, line 73, in activate
    return real_activate(language)

    File “/data/frameworks/django/django/utils/translation/trans_real.py”, line 209, in activate
    _active[currentThread()] = translation(language)

    File “/data/frameworks/django/django/utils/translation/trans_real.py”, line 199, in translation
    current_translation = _fetch(language, fallback=default_translation)

    File “/data/frameworks/django/django/utils/translation/trans_real.py”, line 176, in _fetch
    res = _merge(projectpath)

    File “/data/frameworks/django/django/utils/translation/trans_real.py”, line 163, in _merge
    t = _translation(path)

    File “/data/frameworks/django/django/utils/translation/trans_real.py”, line 145, in _translation
    t = gettext_module.translation(‘django’, path, [loc], klass)

    File “/usr/lib/python2.5/gettext.py”, line 493, in translation
    t = _translations.setdefault(key, class_(open(mofile, ‘rb’)))

    File “/data/frameworks/django/django/utils/translation/trans_real.py”, line 62, in __init__
    gettext_module.GNUTranslations.__init__(self, *args, **kw)

    File “/usr/lib/python2.5/gettext.py”, line 180, in __init__
    self._parse(fp)

    File “/usr/lib/python2.5/gettext.py”, line 337, in _parse
    tmsg = unicode(tmsg, self._charset)

    File “/usr/lib/python2.5/encodings/utf_8.py”, line 16, in decode
    return codecs.utf_8_decode(input, errors, True)

    UnicodeDecodeError: ‘utf8′ codec can’t decode byte 0xc3 in position 18: unexpected end of data

  4. nick 9 November 2008 at 3:21 am #

    Oops, thanks will have a look!

  5. Denis 9 November 2008 at 3:41 am #

    You need to add links to Amazon and iTunes from the movies, that way you will have monetization right away.

  6. sovande 9 November 2008 at 3:46 am #

    Well done! I think the web app itself is very good and it is impressive what you did in one week.

  7. nick 9 November 2008 at 3:48 am #

    Hi Denis,
    Yes!! That is the very reason why I came up with this tiny site in the first place. I was looking for something easy to monetize. Or at least if not easy, something where the path to profitability was crystal clear.

    So what you suggest is definitely at the top of my to do list. Thanks!

  8. nick 9 November 2008 at 3:50 am #

    @sovande: you’re very kind, thanks!

  9. michael 9 November 2008 at 5:17 am #

    I think tuttivisti needs some serious padding ;)

  10. nick 9 November 2008 at 9:25 am #

    @michael: I so agree :D

  11. orip 9 November 2008 at 11:00 am #

    Nice list, thanks!
    I wasn’t aware of Bluetrip.

  12. voldmar 9 November 2008 at 12:15 pm #

    Why not to use SRE in OpenID registration? Your site can fetch (or prepopulate) nickname and/or e-mail from OpenID provider.

  13. nick 9 November 2008 at 12:19 pm #

    @voldmar: good suggestion, have to look SRE up, thanks.

  14. Nico 9 November 2008 at 1:41 pm #

    For mockups you have this one : http://www.balsamiq.com/

  15. Bart 9 November 2008 at 2:28 pm #

    Serious bug when you click on a picture in the record for a movie, it links to http://tuttivisti.com/movies/movie/ which produces an error page: “ValueError at /movies/movie/”: “invalid literal for int() with base 10: ””

    Probably that link is wrong.

  16. nick 9 November 2008 at 2:33 pm #

    Hi Bart,
    well spotted. I’ll fix that shortly.

  17. Praveen 9 November 2008 at 4:43 pm #

    Great work Nicola, What you need is to team up with a buisness dude and work on an app that is needed in the market. I would like to work with you to come up with a business plan. Do ping me if your interested.

  18. Sri 9 November 2008 at 6:32 pm #

    @ben: a website in C? How can that be possible?

  19. pbb 9 November 2008 at 7:18 pm #

    You can’t seem to add a film that isn’t in your database.

    Also you can’t seem to delete a film once it’s been added twice.

    Also, you can’t tag films as seen or to be seen.

    It would be nice to be able to alter the default of ‘This Week’ for when a film was viewed

  20. nick 9 November 2008 at 7:33 pm #

    @pbb,

    Thanks for your notes. Indeed all the things you mention are missing and make the site less usable. I will pick them up.

    As to my my source of data I have a surprise. Anybody can help add the missing movies! All the data comes from http://freebase.com.
    Nick

  21. Kare Winters 10 November 2008 at 2:26 am #

    I’ve been looking for some good materials for church to use in our Adult Information Classes and I think I’ve found just exactly what I’ve been looking for. Thanks so much for your services.

  22. James Tauber 10 November 2008 at 7:15 am #

    Great work! I’m proud to see Pinax used. Some of the extra stuff you had to build is actually planned for inclusion in future releases which hopefully will make future efforts like yours even quicker.

  23. James Tauber 10 November 2008 at 7:23 am #

    btw, can I quote you on the pinaxproject.com home page?

  24. nick 10 November 2008 at 9:34 am #

    @james, thanks! I really appreciate your comment! And I am absolutely delighted that you want to quote my tiny project on the pinax homepage. Please go right ahead!

  25. Jonathan 10 November 2008 at 5:17 pm #

    Hey Nick,

    The sites looks great. Thanks for letting us know how you created it… will have a look at some of the tools you have used.

    I did have a little problem adding Quantum Solace. When I type in the title I nicely get a picture displayed of the movie – but when I add it there is no picture. Hmm – must be a bug.

    J.

  26. nick 10 November 2008 at 5:32 pm #

    @jonathan, yes Quantum of Solace for some weird reason can’t be read properly – though the poster is available on freebase. have to dig into that. definitely a bug.

    The tools I mention as you’ll see are pretty far from the normal corporate Java standard that you are familiar with. :) But I am convinced that’s the future!

    So I very much would like to know your opinion on those when you had a look.

    ciao, Nick

  27. Aaron (aka Ralph The Magician) 11 November 2008 at 5:22 am #

    Hey man! I got your DM the other day. Just wanted to say hi. Cool beans, man.

    I love using Blueprint too. Do you work on a Mac? If so, check out CSSEdit as well. CSSEdit + Blueprint = Freaking ridiculous CSS, freaking fast.

Trackbacks/Pingbacks

  1. a webapp in 1 week (part 2): the source of data — be present now - 18 November 2008

    [...] spoken about a set of technologies that can speed up the time to market quite a bit. Read about it here if you missed [...]