Hacker News new | past | comments | ask | show | jobs | submit login
Embarrassing Flaws That Made My ‘Weekend’ App Possible (yieldthought.com)
279 points by billswift on Oct 20, 2010 | hide | past | favorite | 66 comments



"While thinking about this on a plane to England, my mind makes the natural leap from my motley collection of python functions to turning down acquisition offers from Amazon and being invited to talk at Davos."

haha happens all the time, who else suffers from this?


[One of my favorite excerpts from Why's (Poignant) Guide to Ruby]

Today I was at this Italian restaraunt, Granado’s, and I was paying my bill. Happened to notice (under glass) a bottle of balsamic vinegar going for $150. Fairly small. I could conceal it in my palm. Aged twenty-two years. I’ve spent a lot of time thinking about that bottle. It is often an accessory in some of these obsessive fantasies. In one fantasy, I walk into the restaraunt, toss a stack of greenery on the counter and earnestly say to the cashier, “Quick! I have an important salad to make!”

In another, related fantasy, I am throwing away lettuce. Such roughage isn’t befitting of my new vinegar. No, I will have come to a point where the fame and the aristocracy will have corrupted me to my core. My new lettuce will be cash. Cold, hard cash, Mrs. Price.

Soon, I will be expending hundreds for a block of myzithra cheese. My imaginations have now gone beyond posessions, though. Certainly, I have thought through my acquisition of grecian urns, motorcades, airlines, pyramids, dinosaur bones. Occassionally I’ll see wind-tossed cities on the news and I’ll jot down on my shopping list: Hurricane.

But, now I’m seeing a larger goal. Simply put: what if I amassed such a fortune that the mints couldn’t print enough to keep up with my demand? So, everyone else would be forced to use Monopoly money as actual currency. And you would have to win in Monopoly to keep food on the table. These would be some seriously tense games. I mean you go to mortgage St. James Place and your kids start crying. In addition, I think you’ll begin to see the end of those who choose to use the Free Parking square as the underground coffers for city funds.

You’ve got to hand it to fun money, though. Fake money rules. You can get your hands on it so quickly. For a moment, it seems like you’re crazy rich. When I was a kid, I got with some of the neighborhood kids and we built this little Tijuana on our street. We made our own pesos and wore sombreros and everything!

One kid was selling hot tamales for two pesos each. Two pesos! Did this kid know that the money was fake? Was he out of his mind? Who invited this kid? Didn’t he know this wasn’t really Tijuana? Maybe he was really from Tijuana! Maybe these were real pesos! Let’s go make more real pesos! I think we even had a tavern where you could get totally hammered off Kool-Aid. There’s nothing like a bunch of kids stumbling around, mumbling incoherently with punchy red clown lips.


Delusions of grandeur, IMHO, are a key part of the drive entrepreneurs need to slug through the pain of building a new business.


Wouldn't those delusions also be a source of the emotional rollercoaster ride that pg talks about? It seems to me that an entrepreneur that can keep a level head and realistic expectations will not only have lower highs but higher lows.

I would expect that the delusions may help with building a large-scale business: in order to achieve the desired grandeur, a big exit will be necessary. VCs and wealthy entrepreneurs are better off expecting to change the world.

The first-time entrepreneur (and some angel investors), on the other hand, would probably be better served by having realistic projections and reasonable goals.


"It seems to me that an entrepreneur that can keep a level head and realistic expectations will not only have lower highs but higher lows."

http://sivers.org/horses


Came here to quote the same thing. I too suffer from this and it's unbearable after it happens. It's exactly what my stupid brain does. And then I get angry on my brain for doing it. I think it is a symptom of a deeper problem in the way I think about developing something.

While day dreaming, I have made a better search engine than Google, a better operating system than existing ones, a game played by millions and each of the projects having a "situation room" like the one in Bourne Ultimatum.

It's all fun and games while I am dreaming though.


Hah, I usually do that before I even write the first line of code! Actually I think Jeff Bezos might be ringing my doorbell right now, gotta go...


On the way to England I'm much more likely to think about Davros...


It's my one weakness ;)


In the very oldest version of digg to be found on the internet archive, if you view source there's an sql query inside an html comment. Embarrassment, trapped in amber forever.



Proof that The Internet does indeed hate you, and wants everyone to remember it forever, even if you don't.


digg could remove themselves from archive.org using robots.txt if they wanted to


"If I’d played around with every piece of technology I should be using whether I felt like it or not, I’d never have got anywhere."

I feel like this all the time. Sometimes it's better to do a less-great job in a language you know backwards and skip the learning curve of a new tech.

The site works really well btw: after entering a handful of my favs it took my a while to get through all the games I already like to find new ones - so it's doing something right :)

Thanks for the interesting read.


Great, I'm glad to hear it's proving useful! I'll do a follow up with how well my NoDB implementation stood up to the pounding it's getting at the moment later in the week...


"Take that, NoSQL guys! I’m NoEverything!"

I actually LOL'd when I read that. Which is kind of embarrassing since it's really quiet in the office today :-)

Great post. I get analysis paralysis all the time when I think of new web apps. The idea that I won't have the perfectly scalable architecture (horizontally AND vertically) with all the cool infrastructure is enough to overwhelm.

That's because I also skip to the scenario of "What if my app gets real popular and then starts crashing all the time, and then everyone stops visiting while I try to learn how to set up nginx with memcached and ... ad nauseam."

Sometimes it gets me stuck and sometimes I remember to take baby steps like you wrote about.


Here's a feature suggestion for you from a fellow BGGer: Allow users to restrict the search to games from with specific amounts of players.


Yeah, #players and playingtime are both on my list of things to optionally filter. Just need to find a nice way to do it without complicating the initial user experience.


Very useful -- excellent post and looking forward to the followup!


I haven't looked at this data to know if this would fit, but SVD worked really well for the Netflix prize.

When I first heard its use in recommender systems I laughed and then thought... wow, that's kind of perfect.

Here's a good explanation if you're not familliar with it, and very accessible to those who haven't studied linear algebra (or haven't thought about it in a long time) http://journal.batard.info/post/2009/04/08/svd-fun-profit


+1 to this... I've had very good luck using SVD/LSA-ish approaches for building recommendation engines.

HOWEVER- the big catch with naïve (i.e., simple to implement and understand) approaches to LSA are that every time you add a new datum, you have to recompute the SVD of your data- which is time consuming, and raises some interesting logistical challenges when done in the context of a web app (i.e., how you persist your matrices, etc.). There are more sophisticated LSA approaches that get around some of these problems, but they're more complex to implement.

Nothing insurmountable, but kind of a pain nonetheless, and w.r.t. the system described in the parent post, I'm not sure how well they'd integrate with GAE- can you use NumPy/GSL/etc. on GAE? Or would you be stuck using some sort of Java numerical computing library?


I'd love any resources you could point to that were helpful to you when builder your recommendation engines (also, do you have links to the actual engines?). I've been going through a tutorial to understand how SVD works [1], but it would be nice to find something that will help me deal with implementation details. I thought I might just use Gensim [2] for now, but the authors of that tool themselves say that Gensim is more of a framework to learn about these things rather than a production-ready tool.

[1] http://www.miislita.com/information-retrieval-tutorial/svd-l... [2] http://nlp.fi.muni.cz/projekty/gensim/index.html


Sorry for the delay, I just now saw that somebody had replied. Regarding links to the systems- the only one that was ever publicly accessible was for a Facebook app that I wrote some years back that was let researchers post links to their publications on their profiles, and also featured a recommendation system to find other users of the app that had "similar" publications. It's unfortunately fallen into a pretty sorry state of disrepair, as I haven't had any time to devote to maintenance in more than two years and Facebook's APIs have changed quite a bit since then. I described the underlying system a little bit in a conference paper: http://view.ncbi.nlm.nih.gov/pubmed/18999247

The other systems I've used the approach for have all been along either bibliometric/bibliographic lines, or have been relating to content-based image retrieval. It's a pretty robust approach, but can take a little bit of tuning to get just right- coming up with a good evaluation strategy is important to getting the most out of it, I've found.

As far as references that were useful:

Ilya Grigorik has a very accessible getting-your-feet-wet tutorial on his site: http://www.igvita.com/2007/01/15/svd-recommendation-system-i...

It might be a little dated w.r.t. specific libraries or APIs, but the basic technique is there. For a more comprehensive look at the SVD-IR approach, take a look at:

Berry et al. Using Linear Algebra for Intelligent Information Retrieval. SIAM Review (1995) vol. 37 (4) pp. 573-595

The SVD approach falls in the same family as Latent Semantic Analysis, which is a whole black art unto itself- I'd actually suggest going back to the early papers by Landauer, Dumais, etc. if you're really interested- those guys did a great job writing up what was at the time really novel stuff.

My contact info should be in my profile, drop me an email if you have any more questions (or to let me know what you end up doing!).


heya binomial, don't let gensim's disclaimer deter you! it's been used by many people, both academically and commercially, and it's fairly mature.

having said that, i'm always happy to hear about success and failure stories from users. so if there's something you find broken/missing in gensim, just let me know.


NumPy is not available on the Google App Engine: http://code.google.com/p/googleappengine/issues/detail?id=19... Apparently they don't want to vet C libraries?

Some searches suggested: http://www.picloud.com/


Another great story on 30 days to an "overnight success". Launching a product, even a "weekend project" is just damned hard to get right, end-to-end. Harder than you think out of the gate. I love how this puts things into perspective.


Actually I think this just raises the bar - "Look, it only took 2 hours * 2 weeks to make something useful."

Now everyone who has been slaving away for >24 months to make their own end-to-end power monitoring solution feels slightly lame.

Look ma - power monitoring in only 1200 hours! (http://gridspy.co.nz)


I've used that same template before. Opened the article and was like "oh god, is this about one of my embarrassing weekend projects?"


"I remind myself that pride is another I Ain’t Gonna Need and get on with it." YAGNI applies liberally.


Anyone know which analytics tool is generating these graphs? http://media.tumblr.com/tumblr_lai5rgUrSd1qd3z7l.jpg



Ah, my other unreleased side project has come to light. Time to add some login screens, then :-)


Actually, forget the login screens, it can stay public. This is the first time I've ever launched a site in a 4th level comment, though.

Analytk's a pet real-time blog tracking site I wrote because I was thoroughly dissatisfied with the typical ones. It tracks each post individually, updating every minute to begin with (exponential backoff after 1 hour, not truncated). It also picks up HN and reddit ranks and scores, and tweets. It's only half-finished. Please be nice.


Whoops, didn't mean to out your pet project. I enjoyed your post and I too was curious which analytics script you were using so I checked the page source to see what was going on. I wondered about the lack of documentation on the homepage...looks cool though.


There was a time in my life where I really thought I needed to keep up with the latest and greatest technologies, libraries, et cetera. As the author discovered, you don't need to. I can now sleep easily knowing that I 'marked as read' the newest no-sql magix and do x y & z gems that I really didn't mind to read about. Great read.


moconnor: did you keep a journal while you were building this app?

I'm thinking to myself as I am reading this that there's no way you could have gotten from A-Z, then only after that started filling in the blanks accurately about what you did on day #X. (Heck, I can't remember what I ate yesterday!)

Motivational, good stuff, thanks for sharing.

Now I'm thinking of an app for HN'ers who just need a little help getting something like this off the ground: An app that lets you chronicle every day a short paragraph of what you did to move the ball forward.

Plus, there will be a nagging^H^H^H^H^H^H^Hpeer-accountability feature built-in. Your progress is public and other HN'ers can "tap" you on the shoulder if there's a lack of progress and say "what's up with this?"


I didn't keep a journal, but after a couple of weeks when I decided to write this post I jotted down what I'd done when. The filesystem helped with a lot of dates (creation, last modification and so on). Going to England in the middle was a good, specific memory aid too - it's easier to remember what I was doing and thinking in an unusual place.

I love your appjournal idea!


Personally, I keep a timesheet on when I started and finished working on something, for instance

Tue 19/10/2010 | 15:40:00 | 17:10:06 | 1:30:06 | Looking at admin interface for sensor daetails. Trying to fix None issue, seems to be related to subclassed models. Adding code to twisted for CT settings

Turns out that one of my Django models is breaking the Django admin interface, and also that I have to have calibration details for the Current Transformer sensors we use (http://gridspy.co.nz)

Another one

18/10/2010 | 8:50:00 | 9:56:36 | 1:06:36 | Server maintaince, removed orbited, checked memory usage. Killed backup scripts, installed python 2.7

Naturally it is all in an Excel spreadsheet. :)


Do you find that it helps? The closest thing I got that looks like what you got above there are my git log messages!


Seconded. Using distributed RCS, you commit often and therefore have a pretty good log of your daily activities.


I don't commit anything with

"Talked to client" "Wrote email" "Made blog entry" "Spent 60 minutes wasting time doing X"

Also, the gaps in the timeline are just as telling. I always feel that little bit guilty returning from HN and seeing a 1hr gap where I could have worked.


Great idea, please do this. It should also record the choices encountered at each step and tabulate the paths not taken, which would be very useful if something doesn't work and you need to backtrack.


AppEngine is amazing. It's free web-hosting, that also happens to include everything you need to make webapps.

The man who never made a mistake never made anything


"Day 5 - Embarrassing Flaw #3: Making a stupid business plan, then ignore it anyway"

Awesome! (I lol'd) I love inventing. It's only recently that I've started to add business logic to my imagination, I'm no Jedi in this capacity, but the force was strong at startup school; and I want to train!


I just put a Flash game into the sponsorship process today. I made the initial game in 48 hours for Ludum Dare some months back. Then I returned to it and put in approximately another 72-96 hours(real-time, not work-time) of effort, spread out between Thursday, Monday, Tuesday, and this morning, to rework the theme, polish everything up, and bulk out the content.

Its obvious flaws are having no animation to speak of and minimal tutorialization, but in comparison to the bloated things I've worked on in the past, it was a breakthrough performance. A game in five-six days of work. I'm going to start on another one, now... hopefully I will finish around the 25th :)


Nice writeup. Did you consider using Google's Prediction API before rolling your own recommendation system?

http://code.google.com/apis/predict/


No. I thought about Directed Edge, but playing with recommendation algorithms was the raison d'etre of the project. I didn't want to make a web site and throw some amazon referral links at it, I wanted to play data miner!


That's great! http://techcrunch.com/2010/09/15/hunch-taste-graph-business-... is another alternative. Maybe you could try tweaking your algo continuously and comparing with how well hunch recommends stuff. The advantage of the hunch api is that it is able to use a lot more info about the visitor to make more awesome predictions. Just curious to see how far it goes!!! http://hunch.com/developers/v1/


Possibly ruled out because : Access to the Prediction API is currently by invitation only. To request access and learn about the access process, sign up on our waitlist.

http://code.google.com/apis/predict/docs/getting-started.htm...


A while ago I did a somewhat similar board game web app. I wanted to find a better ranking than what is on boardgamegeek.com Alas another weekend project that hasn't really gone anywhere.

http://icefox.net/picktheboardgame/

Based off of an older (more fun) app I wrote a long time ago: http://toybin.org/pickthetransformer/


This convinced me to use AppEngine for a tiny little project I've been thinking of this past week. It'd be useful to me, probably others, but knowing that I wouldn't have to worry about anything on the hosting side (be it bandwidth, uptime...) would be nice.

Actually, I'm looking forward to have some time soon to get started...


also www.heroku.com


Interesting, I didn't know they had a free plan. (never looked into it that much)

5MB of DB and 1 "dyno" would be plenty for what I have in mind (let's be honest: 1kB would be sufficient :)), so I'll definitely keep it in mind as well. But now the eternal question for me comes back again: Ruby or Python...

Thanks for pointing it out to me!


I really wish they'd show me what I can run on Koi (links to current sites). I know they make deployment a snap, but I worry that I'd be forced to add more and more resources to keep my site running as I'd hope.


The only difference between Blossom and Koi is the size of the database. The only way to improve performance is to increase the number of dynos or workers you use.


This is actually possible to do dynamically[1] so you can keep your costs down. I found this post last week and implemented it over the weekend, and it's pretty neat to watch it work. So far I've only implemented this for workers, but it's certainly possible[2] to implement it for dynos.

[1]: http://blog.darkhax.com/2010/07/30/auto-scale-your-resque-wo... [2]: http://github.com/ddollar/heroku-autoscale


get it done; make it right; make it fast


Munich? cool, I'm probably not so alone :)


Call in at http://combinat56.com sometime; there's always a couple of devs doing interesting stuff there.


I know about combinat56 but their website and their self presentation turned me a bit off.


Shame, it's a really nice place to work. Nice Sumo sacks, too. There's a couple of HNers work there; I'm around most afternoons.


Wow, great idea. I am envious.


So I take it from the comments that, "We'll be back shortly. Our servers are over capacity and certain pages may be temporarily unavailable. We're incredibly sorry for the inconvenience." is not the embarrassing flaw?


Why do these observations of a site being down get downvoted so harshly? The observation is accurate for him, and it could be for everyone...


Because they're trite. For example, it seems like whenever somebody posts an article about databases, there's a comment saying, "Whoops, looks like your database doesn't scale after all! Haha". Similar versions (such as this) for web hosting, etc.

If you're going to take the time to post a "hey is this down" comment, at least link to the site's google cache or something. Otherwise it's just noise.


Especially when the blog's hosted on tumblr and the app on GAE ;)




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: