

My Weekend Project: Not A New Yorker (Feedback Requested) - symkat

My Weekend Project: http://www.notanewyorker.com/<p>Around 6PM last night I was watching How I Met Your Mother’s latest episode.  One of the premises surrounding this week’s episode was those things which make one a New Yorker.  I was instantly inspired with the idea of making a little website to capture those things.<p>Having spent some time around HN for the last few months one piece of advise that always pops up is, “Just Build It.”  This seemed like a good project to apply that to, so I grabbed a friend who does front-end stuff, sold him on the idea and began work on the backend.<p>10 hours and 4 minutes later it exists.<p>The time was spent pretty much like this:<p><pre><code>  -  6:15: Got idea from How I Met Your Mother
  -  6:18: Decied on domain name
  -  6:20: "I think I could build it in GAE really quickly"
  -  6:25: Asked a friend to write the front-end
  -  6:30: Started coding backend
  -  8:00: Finished coding backend
  -  8:10: Bought domain name
  -  8:22: simcop suggested adding a rater (backend now *un*done)
  -  9:16: Rating code for the backend finished and tested
  -  9:44: Added logic to determine the next page you view and tested
  - 10:13: Began merging frontend and backend
  - 11:10: Discover that neither Simcop nor myself know enough JS to write the front-end for the upvoter.
  - 11:20: Conned numerous people into helping us solve this (buu, jesus mostly)
  - 12:58: SimCop learned JS because buu and Jesus were sleepy.  Rating code finished and working on both front and backend
  -  1:40: Food while DNS stuff happens. 
  -  1:45: DNS Done
  -  2:33: GAE doesn't allow ordering by a value which is not in an inequlity... rating &#62;= -10 order by created = "FUUUU"
  -  3:00: Deployed!
  -  3:10: Deployed 4 or 5 more times
  -  3:35: Hackering SymPullCDN - Removed Revalidation (manual purge for update), Removed Cache-Control respect (same GAE and it’s Cache-Control: no-cache), forced Cache-Control: max-age=604800 (things can be so much faster when you break rules)
  -  4:19: Final Version Posted
</code></pre>
Without having spent a lot of time around HN this would not have been done this quickly by any stretch of the imagination.  Thank you guys =) 
So, now that’s it’s launched, what are the myriad of the things that could be done better?
======
HNer
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/newyorkerwhen/1.345563940169596428/main.py", line 88, in
post test = Quote.all().filter('quote =', message ).get() File
"/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py",
line 1797, in get results = self.fetch(1, rpc=rpc) File
"/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py",
line 1848, in fetch raw_query = self._get_query() File
"/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py",
line 2110, in _get_query namespace=self._namespace) File
"/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py",
line 950, in __init__ self.update(filters) File
"/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py",
line 1367, in update self.__setitem__(filter, value) File
"/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py",
line 1309, in __setitem__ datastore_types.ValidateProperty(' ', value,
read_only=True) File
"/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore_types.py",
line 1324, in ValidateProperty prop_validator(name, v) File
"/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore_types.py",
line 1215, in ValidatePropertyString ValidateStringLength(name, value,
max_len=_MAX_STRING_LENGTH) File
"/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore_types.py",
line 1205, in ValidateStringLength (name, len(value), max_len)) BadValueError:
Property is 867 bytes long; it must be 500 or less. Consider Text instead,
which can store strings of any length.

~~~
symkat

      $ curl --data "message=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" www.notanewyorker.com/post
      Thanks for playing the manual POST game.
    

Fixed. =) Thank you for testing it!

------
pcowans
I'm expecting to be able to sort the entries by score, but can't obviously see
how to do that. Do I need to post an entry before I get that option? I've
spent a total of around 12 hours in NY in my life, so don't really feel
qualified :-)

A few minor tweaks to the visual design would make a big difference, but I'm
sure you know that.

Longer term: maybe widgetise so people can put it on blogs etc.

~~~
symkat
There are lots and lots of little visual tweaks that will be done to this as
soon as I can con some more front-end time from simcop.

No ordering is yet implemented based on rating, everything is displayed based
on the created date. Any posts which reach -10 are deleted. I figured that
would be a good anti-spam method, and it seems like some spamming things are
hitting that.

Once there is more data some "Best of" and such sort links will most likely be
added =)

~~~
pcowans
Sounds good. It might be worth thinking about whether something closer to the
HN/Reddit/Digg model might make more sense, i.e. 'Best of' being the default
option, possibly with tweaks so that new posts get enough exposure to be
upvoted.

------
symkat
Clickable Link: <http://www.notanewyorker.com/>

------
akaalias
Love it, already posted one myself.

Why isn't the list ranked?

On refresh of the page, could you swap the background image? I like the one
you have, but since there are probably a thousand awesome, CC-licensed images
on Flickr, you could play around with that, too..

------
sirwitti
looks quite good to me. :) some suggestions: let the background image fade to
black at the edges left and right, add eg 100px left and right for the fade,
and center it. this way even very wide screens have a nice looking centered
background. (that´s always the problem when using big bg images)

you could make the background (of the content) transparent black or white.

i´d style the text and links a bit. different font family and color.

the links to your own sites should open in a new window. otherwise you will
lose every user to your sites.

i would center the headline.

but anyway, nice idea.

martin

~~~
symkat
Thank you, I'lll be passing these onto SimCop. =D I've got a page load of
suggestions from another friend on everything from text to images and fonts
that should be incorporated. Pretty web pages are apparently difficult.

------
og1
Just one suggestion for your timeline. I would suggest "decided on domain
name" and "bought a domain" appear one after the other. I just don't trust
sitting on domain ideas if they are available for hand registration.

------
lfx
I clicked "A Post A Not A New Yorker Until" without any text inside text box,
and got error "Error: Duplicate Message". I think you should add some
checkers, because I saw empty message ;)

~~~
symkat
I definitely agree with this. The post handler should raise an error inside of
the normal template, and automatically put your text back into the textarea.

~~~
symkat
And now it's implemented.

------
bombarolo
You guys are amazing!

> 6:30: Started coding backend > 8:00: Finished coding backend

Usually it takes me that much just to name my classes and variables.

------
symkat
Due to popular demand (and random assault) ranked view:
<http://www.notanewyorker.com/ranked/>

------
revorad
This looks similar to thathigh.com. You might want to talk to the guy who
built that (just search for thathigh on HN - he's posted about it a few
times).

------
andrewtbham
i like that u posted the time line. very cool.

maybe you could make a platform so anyone could make a site thing like this...
it's similar to FML or texts from last night... if there were a platform
anyone could make this type of site... hit me up on gmail. i might be
interested in helping.

~~~
djb_hackernews
There is a platform, it's called reddit!

Not to be snarky, I'm actually building something that similarly mimics
reddit, but I constantly ask myself why I'm reinventing the wheel when i could
just create a subreddit.

~~~
andrewtbham
aren't sub-reddits much broader than something like... you're not a new yorker
until?

------
sirwitti
another thing i just saw: when clicking on the fb icon open a new window for
it. the share on fb page look weird fullscreen, and many users won´t find the
way back to your site.

~~~
symkat
The links for my blog, simcop's blog, twitter/facebook sharing have now been
given target="_blank". =)

------
andrewtbham
the next page/previous page thing is confusing

~~~
symkat
I think it will become less confusing as more content becomes available.
Basically if the next page exists, show a link to it, otherwise give a link to
the homepage. The same goes for previous. / is the "lastest" page, with
/page/1 being the next latest page. This structure is the same as FML's as far
as I recall.

------
photon_off
The page looks very broken.

