HNHacker News
TopNewBestAskShowJobs

bevan

399 karma · joined August 15, 2011

submissionscomments
bevan··on Bountify - Crowdsource small coding tasks
Actually, that's me (the founder), seeding the site with some bounties. I don't want the site to get a bad reputation as a cheating hub, so I'll be closing questions that are excessively homework-like. https://bountify.co/8 and similar bounties were inspired by Project Euler.
bevan··on Bountify - Crowdsource small coding tasks
I'm glad you got solutions so quickly!

I've also had a hard time selecting a winning solution when several correct ones are posted. I'd like to avoid duplication of effort by solution providers when possible, but finding a way to do that is tricky (I plan to at least implement a 'view count' to give would-be solution providers an idea of how many others have seen the problem).

Thanks for the feedback regarding the tip fees. I'm considering reducing them, as I want to encourage tipping as much as possible (especially considering that tips are often awarded to solutions which may be as good as the winning solution, and I want to encourage rewarding those efforts so that good solution providers stay around).

Cheers!

bevan··on Bountify - Crowdsource small coding tasks
Thanks for your thoughts. I see what you mean about the time limit- I imagine that use case (people needing solutions quickly) will be quite common, so I'll look for a way to address it. My concern with adding time limits was that a shorter one might not increase answering speed (but it does seem that it would in most cases).
bevan··on Bountify - Crowdsource small coding tasks
Landing page looks great! Let me know if you want to compare notes sometime over coffee (SF or NY). Looking forward to seeing the product. All the best!
bevan··on Bountify - Crowdsource small coding tasks
Thanks for posting a bounty!

Sorry about the latency, I'll work on that. I'll also address the Terms and Conditions issue (by most likely removing it entirely, since there is a redundant notice on signup). Please let me know if you have any other suggestions or feedback, I really appreciate it.

bevan··on Bountify - Crowdsource small coding tasks
Thanks for the explanation, no offense intended. My point was that there's a mechanism (imperfect though it may be) to help catch flawed solutions.

BTW, the winning solution doesn't appear to have the security flaw you pointed out.

bevan··on Bountify - Crowdsource small coding tasks
Thanks for the great feedback!

2. That feature is forthcoming 3. Thanks for pointing that out, I'll fix that. 4. It started that way, but then I realized the time limit wouldn't have much impact on when the bounty actually gets answered, because solution providers compete to answer as soon as possible. So in the interest of simplicity I decided to make it a week. I'll consider changing it back. In practice, most tasks have been solved well before the deadline.

bevan··on Bountify - Crowdsource small coding tasks
The lack of a guarantee of payment may dissuade some potential solution providers. However, I think most users provide solutions for fun. At least one repeat user can't even accept Paypal payments in his country. BTW, you can also send your winnings to charity if you wish.
bevan··on Bountify - Crowdsource small coding tasks
Thanks for the feedback. I agree that not all coding tasks are appropriate for Bountify, and that there'll always be potential pitfalls whenever you outsource bits of work. But I'm hopeful coders will recognize those pitfalls and learn to use the tool effectively. Let me know if you have any ideas on how to mitigate those risks you mentioned.

By the way, if there's a security hole in the accepted solution to https://bountify.co/B, you should post a better one or even just mention it- I might tip you for it! :)

bevan··on Bountify - Crowdsource small coding tasks
Thanks for the feedback. There isn't a way to see only the unsolved bounties (adding that soon), but there is only one and it's on the front page. There were a couple unanswered ones a long time ago but they have expired.
bevan··on Bountify - Crowdsource small coding tasks
@impostervt, I'm the creator of Bountify- thanks for pointing out the broken link, I'll fix it asap.

Yes, I think the money-to-charity policy will dissuade some users from posting higher bounty amounts at first. My goal is to show that certain kinds of tasks can consistently get quality solutions on Bountify. So far I've been pleased with the speed and quality of solutions and the tone that's been set by the first users.

Feel free to share what types of tasks you'd consider posting. Thanks again for the feedback!

bevan··on Fasting & Programming
For those of you who feel clear-headed after fasting for a day or two: you might have a delayed food allergy (google "IgG food intolerance"). The most common such allergies are to gluten (not just coeliac sufferers are sensitive to gluten) and dairy products. I believe these delayed-onset allergies are fairly common in western societies, and are due to a "leaky gut", or permeable intestinal lining, that results in an immune system response when those foods get absorbed. Because IgG allergies can manifest themselves up to three days after you eat the offending food, some people may never figure out the cause of their fatigue or foggy-headedness. IgG allergies might be worth looking into if you have those symptoms.
bevan··on LeakedIn
A better solution:

www.wasmylinkedinpasswordleaked.com

bevan··on LeakedIn
haha, quite funny. I made it.
bevan··on Ask HN: Becoming an iPhone app Dev.
I explored iPhone dev at about the same time as you. I also had a hard time finding good resources. There's so much to learn that it was intimidating sitting down and just reading about it.

What worked for me was porting simple programs I'd written (in Java) to the iPhone. Java is actually pretty similar to Objective C, and some of it was literally just cut and paste. I imagine C++ is very similar too. At first the programs weren't even visual- they were essentially just command-line programs. That way I could focus on learning the basics of the language before learning all the high-level libraries.

Once you get "hello world" working it shouldn't be too hard to build simple programs off of that. Porting an existing program might provide useful structure to your learning if that's your style. Good luck!

bevan··on The Game Of Go: A Programmer's Perspective
Yeah that might have been an exaggeration. But as I recall, once you have the MT seeded and fired up, getting a new number requires little more than a bit shift. Anyway it was substantially faster than simple alternatives I tried (including other PRNGs). One early theory I had was that using a faster PRNG than MT could lead to a better result even if it wasn't as evenly distributed. I think MT proved to be the best solution though.
bevan··on The Game Of Go: A Programmer's Perspective
I went to Middlebury. There was an AI class, but the 3 semesters were research with my late professor Tim Huang.

The department at Middlebury was small, but I doubt that I could have received a better CS education elsewhere. The opportunity to do one-on-one interesting research so early in my college career was invaluable. All three semesters were Go-related, but I didn't focus on the same thing during each.

The first summer was spent scoping the lay of the land. Reading the papers, implementing naive "improvements", and a lot of testing. Our best result was achieved by implementing someone else's we'd read in a paper. It was a humbling experience.

The second semester started with finding ways to visualize the algorithm in action. Since the improvements were so nonintuitive I felt I had to find a better way to understand how it worked and what my changes were doing. Easier said than done.

The third semester was more varied. I did more testing and playing with parameters. I also ported a version to the iPhone (we wanted to be the first and best on there- this was before ios 2 was released). Then my professor and I started a company that was initially related to Go and iPhones but later pivoted substantially several times.

I'm very thankful for the opportunities I had at Middlebury and the chance to work with Tim Huang.

bevan··on The Game Of Go: A Programmer's Perspective
That's funny, I had that experience too. At first I tested my implementations against the plain UCT-player, and was puzzled why my "improvements" didn't do as well against GnuGo.
bevan··on The Game Of Go: A Programmer's Perspective
Correction: "most non-random tactics" wouldn't make it better, as someone else pointed out. Finding ones that do is a tough question, beyond just runtime; keep in mind that the MC player uses that strategy against itself over entire random games, which can lead to really un-humanlike games. Completely random games at least ensure that you're hitting all possibilities (and when that good move is found, that path is explored more).
bevan··on The Game Of Go: A Programmer's Perspective
The Monte Carlo simulator is a very simple and weak heuristic by itself. In UCT go players it's inseparable from the tree-traversal/expansion algorithm, which uses data propagated up the tree from the MC-tested leaf nodes to decide which move sequence to explore next.

When it's expanding the search tree, every node expansion is arrived at "intelligently". It starts at the root node, and at each branching, asking itself: which following move is the best mixture of good (based on MC games I've played on the leaf nodes of its children) and unknown (ie I haven't explored that branch very much yet). It does that at every node until the leaf, where it expands a node with the MC-simulator (and then propagates the result up the tree). So unlike some other tree-search algorithms, it isn't cobbled by having to expand all paths to a certain depth before exploring a particular sequence deeper. The result literally looks like a tree: some branches are really tall, maybe 18 moves deep, while others are really short. Even though the "heuristic" is MC, I don't like calling it brute force, because it uses the results of those MC games so well.

bevan··on The Game Of Go: A Programmer's Perspective
To further illustrate the point, I think I may have actually tried a no-capture heuristic at one point. I wouldn't be too surprised if it also worked better than random.
bevan··on The Game Of Go: A Programmer's Perspective
Real-life tactics unfortunately don't make for good heuristics in the Monte Carlo simulator.

Our goal was to improve overall gameplay by making the Monte Carlo simulator play slightly more realistically than random. Keep in mind that when the Monte Carlo simulator plays completely random games, it still does pretty good. I believe it's on par with GnuGo, a good pre-UCT go player, on a 9x9 board on a modern quad-core.

Whether a heuristic applied within the MC-simulator generates sample games that better assess the strength of a move is a tricky question to ponder. But it seems reasonable that most non-random tactics, however simple, would accomplish that (such as proximity- or capture-based tactics).

The reason that good real-life tactics do not correlate with improved gameplay when implemented in MC-simulators is because the logic required for even simple tactics can reduce the number of semi-random games the computer can play by several orders of magnitude. Picking a random move is extremely quick (choosing a number with a Mersenne Twister is faster than adding two numbers- compare that to the operations required to determine how many pieces surround a given position). That's partly why very simple heuristics like capture-if-possible are only effective if they're applied on a few (2, in our case) open board positions per move in a MC-simulated game. So its just slightly non-random.

Anyway I hope that made sense. It's a weird problem to think about at first, but it's actually really fun to play around with. I recommend checking out Drake's implementation.

bevan··on The Game Of Go: A Programmer's Perspective
I worked on UCT-based (one-arm bandit algorithm) go players for 3 semesters. It was truly a great, if often frustrating, experience.

It's a tough problem to get your head around. Sure, the premise makes sense- that the Monte Carlo heuristic plus the UCT tree-exploration algorithm balances promising nodes with uncertain ones to intelligently expand the tree. But tweaking that algorithm usually hurt performance more than helped, and the tweaks that did improve gameplay were non-intuitive.

One semester our goal was to improve the random-playout generator to play slightly more human-like games. It turns out that almost any play enhancements made in the Monte Carlo simulator crippled performance (for instance: instead of playing randomly, search the board for an opportunity to capture the opponent). The best result we had was achieved by applying the capture-if-possible heuristic on only two positions per random move (ex: at the beginning of the MC-simulator's move, pick two positions randomly- if moving in either one captures the opponent, do it). Applying that heuristic on any more than 2 positions per move made the random games play out more slowly than it was worth. Needless to say, a lot of time was spent testing our tweaks (which itself was quite time consuming).

It was frustrating to see our initial seemingly sensible tweaks cripple performance, and it definitely took some time to calibrate ourselves to the problem at hand. But I probably learned more about programming while working on Go than in any other 3-semester span.

Peter Drake's Orego player is a great starting point for exploring the UCT algorithm (Peter Drake wrote a popular Java textbook you may have used in undergrad). I highly encourage people interested in AI to check it out:

https://sites.google.com/site/drpeterdrake/research/orego

bevan··on Beautiful surf forecast charts
That's really nice. Would be great if Stinson beach or others near San Francisco were on there!
bevan··on Ask HN: What did you build in March?
Launched IndieClean.com- a marketplace for independent housekeeping services in NYC!

https://indieclean.com

← PreviousPage 4 of 4