Live data from Hacker News

Users of my iOS Game Teach Me a Lesson MIT Didn’t (2011)

blog.aaroniba.net

41–50 of 60 posts

Re: Users of my iOS Game Teach Me a Lesson MIT Didn’t (2011)

#41
post #39
post #38

Earlier quoted context omitted.

That's true if you are building something tangible. You can't simply start building something (like a bridge) and fix the mistakes you make while you are making them. But for programming ? You don't have those kind of costs.

> But for programming ? You don't have those kind of costs. Where did you get this strange idea from? You have customers, backwards compatibility, programmers time, and tons of other "cost" stuff.

> You have customers, backwards compatibility, programmers time, and tons of other "cost" stuff.

None of which matter. The idea being if you are working on a component for version 2.0, even with all these "costs", it's better to iterate quickly. The only thing that is close to mattering is programmers' time, but even that is addressed in the article. Simply that it's faster to fail fast and iterate until you get the correct solution than it is to spend all that time planning.

Re: Users of my iOS Game Teach Me a Lesson MIT Didn’t (2011)

#43
I hope this doesn't come across as snarky, but this is very apropos for me.

I'm currently taking 6.856 at MIT, Randomized Algorithms, and one of the core lessons from the class is that random guessing is frequently a superior strategy. You can have Las Vegas algorithms which find a correct solution and probably execute quickly, or Monte Carlo algorithms which execute quickly and probably find a correct solution. The users are employing a Las Vegas strategy here.

So, perhaps he just didn't take the right classes at MIT :-).

For a neat example, check out finding a min-cut of a graph in a randomized fashion: http://en.wikipedia.org/wiki/Karger%27s_algorithm

Re: Users of my iOS Game Teach Me a Lesson MIT Didn’t (2011)

#44
post #39

Earlier quoted context omitted.

> But for programming ? You don't have those kind of costs. Where did you get this strange idea from? You have customers, backwards compatibility, programmers time, and tons of other "cost" stuff.

> You have customers, backwards compatibility, programmers time, and tons of other "cost" stuff. None of which matter. The idea being if you are working on a component for version 2.0, even with all these "costs", it's better to iterate quickly. The only thing that is close to mattering is programmers' time, but even that is addressed in the article. Simply that it's faster to fail fast and iterate until you get the…

I think truth is somewhere in the middle. Even fast iterations must be planned and thought through. [1]

[1] http://www.infoq.com/interviews/agile-software-architecture-...

Re: Users of my iOS Game Teach Me a Lesson MIT Didn’t (2011)

#45
I think this illustrates one of the biggest reasons many of the most popular mobile games have variable solutions and some sort of "star" rating for the solution. A lot of these games work on the idea that people ripping through it achieve the 1 star solution and go to puzzle 2. It has a "secondary" or "advanced" mode built right in for the person who wants to get 3 stars on each.

Common things to grade with stars:

Speed

fewest 'widgets' to solve

total 'impact' (Think damage a la angry birds)

etc.

We can also combine these sorts of things in the rating system. There is a great game, "Cargo-Bot", that is essentially a programming game. The rating system there only takes into account the number of instructions used but it could do something where it takes into account the number of instructions used and the run time of the "program" produced.

I guess my point is, designing games with singular solutions is probably cheating the gamer out of some additional fun (go back and finish on hard) and cheating the designer out of exploring some interesting concepts around "scoring".

Re: Users of my iOS Game Teach Me a Lesson MIT Didn’t (2011)

#46
post #37

"No, they had discovered a superior strategy." I had a similar experience when I published an iOS game in 2011. I was still in high school, so publishing a game available on the App Store was quite a big deal to the other people at school. I became known by a bunch of people for making this game. One day, someone I'd never spoken to comes up to me and shows me 'a bug'. It turns out this guy had developed an optimal s…

"When I played my own game, I had the technical knowledge of how the game functioned" I have this same problem when I test my own software.

This is why I tend towards being a strong advocate of a "test group" for any software shop. This is basically a group of people running a combination of manual and automated tests against software as a black box.

Unit tests never catch everything. The problem with them is they can only test everything the coder thought to test. There is value in testing all of those things the coders never thought of.

Re: Users of my iOS Game Teach Me a Lesson MIT Didn’t (2011)

#47
I'm pretty sure MIT teaches some sort of AI 101.* CSP, local search (and genetic algorithms) is what you're looking for. Also make sure to check out the paper by Wolpert and Macready on "no free lunch in search and optimization" for a perspective on "best way"

*I also think it's a non-trivial connection to make that these types of problems are covered in AI or at least that's the feedback I get from students. "Oh didn't expect this search stuff thought it was about brainnnnnnz"

Pretty cool read though, thx for posting.

Re: Users of my iOS Game Teach Me a Lesson MIT Didn’t (2011)

#48

It's called "Throwaway Model". It's the second thing you learn about after the "Waterfall Model" in Software Engineering 101 http://en.wikipedia.org/wiki/Software_prototyping#Throwaway_... The game looks good though. I'll probably try it out.

We were supposed to learn about more than the waterfall model?

I don't think my version of that class was very useful, TBH.

Re: Users of my iOS Game Teach Me a Lesson MIT Didn’t (2011)

#49
This is something that I've noticed myself. I find that it's much easier to write a paper for school by just writing something, no matter how simple, and using it as a framework for the next iterations. It makes it much easier for me to think of the paper one piece at a time. I've started trying to apply this strategy more rigorously lately. For a four page paper I had to write yesterday, I started by just writing out the structure of the paper:

"Start with a relevant 'hook.' Now lay down your thesis statement. I got to my thesis by starting here. Then I went and saw this. That turned into the other, and here you have the thesis."

Then I took each bit and replaced it with what I actually wanted to say there and continued to iterate from there. In this case, my professor has a very specific structure that he looks for in our papers so putting that first iteration together didn't take much effort.

Similarly, when I'm working on a programming project, I find it's much easier to start with a working iteration, even by stretching the definition of "working," and improving it until I'm happy with it.

It is, of course, important to look at the paper (or other work) holistically to make sure that it all flows together once the pieces are in place.

Post reply on HN