top | item 1836271

Reworder – A tale of learning Python and launching an app in five days.

54 points| sahillavingia | 15 years ago |sahillavingia.com | reply

35 comments

order
[+] Luyt|15 years ago|reply
make sure you use tabs to format all of your Python code

I disagree. Idiomatic Python uses 4 spaces per indent.

Either solely use tabs or solely use spaces, they don’t work well together, at least in my experience

Mixing tabs and spaces is indeed very unwise. You can run Python with the -tt option to make sure you're consistent.

Read Style Guide for Python Code for more advice on this front

I agree ;-) The author probably refers to PEP8, http://www.python.org/dev/peps/pep-0008/

[+] bwooceli|15 years ago|reply
Could not agree more!!!! If you're a vimmy, be sure to add this friendly helper into your .vimrc

:set tabstop=4

:set shiftwidth=4

:set expandtab

[+] shortlived|15 years ago|reply
I was fixing a makefile the other day with a coworker and it ended up being an indentation issue. And then we asked out loud why anyone would repeat this hell again...

Now, I am not a python programmer, but I am interested to learn more about how the structure via indentation how worked out for the language.

[+] gurraman|15 years ago|reply

  Traceback (most recent call last):
    File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 513, in __call__
      handler.post(*groups)
    File "/base/data/home/apps/reworder/1.345779356045891791/reworder.py", line 122, in post
      headers={'Content-Type': 'application/x-www-form-urlencoded'}).content)
    File "/base/python_runtime/python_lib/versions/third_party/django-0.96/django/utils/simplejson/__init__.py", line 232, in loads
      return cls(encoding=encoding, **kw).decode(s)
    File "/base/python_runtime/python_lib/versions/third_party/django-0.96/django/utils/simplejson/decoder.py", line 251, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    File "/base/python_runtime/python_lib/versions/third_party/django-0.96/django/utils/simplejson/decoder.py", line 270, in raw_decode
      raise ValueError("No JSON object could be decoded")
  ValueError: No JSON object could be decoded
Entered text "this is a test." and hit submit.
[+] sahillavingia|15 years ago|reply
Figured out the bug: hit the API request limit. Argh!
[+] colbyolson|15 years ago|reply

    Traceback (most recent call last):
      File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 513, in __call__
        handler.post(*groups)
      File "/base/data/home/apps/reworder/1.345779356045891791/reworder.py", line 140, in post
        synonym = synonym_for_word(stripped_word, tag)
      File "/base/data/home/apps/reworder/1.345779356045891791/reworder.py", line 201, in synonym_for_word
        return result.get(word_type)['syn'][0]
    KeyError: 'syn'
[+] itsnotvalid|15 years ago|reply
"I was already pretty dead set on learning a functional language (either Python or Ruby)"

Did I see something strange here?

[+] rimantas|15 years ago|reply
He meant javscript. A common typo.
[+] josephcooney|15 years ago|reply
He said he wanted to learn a functional language, and then listed Python and Ruby. Weird.
[+] moconnor|15 years ago|reply
It's an easy mistake to make - when you come from a Java or C# background one of the most striking things about Python and Ruby code is the use of first-class functions.

Not everybody knows that there's more to a functional language than first-class functions.

[+] sahillavingia|15 years ago|reply
There's a joke here I don't get. Care to explain? :D
[+] torme|15 years ago|reply
Completely unrelated to your write up but theres a bug. In FF if I back up and resubmit it doesn't update to the new text. I still see my first submission.
[+] sahillavingia|15 years ago|reply
Ah yes, I randomly generate a permalink on load of the page, so it uses the old permalink, hence why it loads the first submission. Any ideas on how to change this?
[+] smoody|15 years ago|reply
"App engine is fast and awesome, right now. However, if your site gets really popular, you may consider moving off of it."

Perhaps you can explain why you believe this to be true? I thought that the strength of App Engine is that you can stay on it no matter how popular your app gets.

[+] sahillavingia|15 years ago|reply
App engine doesn't allow certain features, like subdomains for each user, and non-www. URLs. Some other things too, that I probably don't even know about yet.
[+] jscore|15 years ago|reply
Traceback (most recent call last): File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 513, in __call__ handler.post(*groups) File "/base/data/home/apps/reworder/1.345779356045891791/reworder.py", line 140, in post synonym = synonym_for_word(stripped_word, tag) File "/base/data/home/apps/reworder/1.345779356045891791/reworder.py", line 201, in synonym_for_word return result.get(word_type)['syn'][0] KeyError: 'syn'
[+] StanDarsh|15 years ago|reply
Awesome story. Thank you very much for the Stanford links.
[+] jacquesm|15 years ago|reply
Hey, weren't you supposed to be a designer :) That's pretty quick to go from 0 to launch in 5 days in an unknown language.

Congratulations!

[+] sahillavingia|15 years ago|reply
Designer, developer, coder, sleep-deprived. I'm a dude of many properties! :)
[+] paulbaumgart|15 years ago|reply
Any input containing a forward slash results in a ValueError.
[+] davidj|15 years ago|reply
if anyone cares, rephrasing engines are used to create splogs for SEO