Designing and Building Stockfighter, Our Programming Game
kalzumeus.com
kalzumeus.com
Worse, if this is something that's designed to showcase one's technical skills to potential employers, I don't imagine there's a way for the system to distinguish between "took a long time solving challenges because just not smart enough" vs. "took a long time solving challenges because have a day job and a life outside of work/tech".
Since this is designed, essentially, to showcase how smart someone is to potential employers, assuming solving time is a factor, it's almost better not to compete until you know you'll definitely have lots of time to devote to it, because otherwise there is the risk of taking too long and looking not-good.
I'll add it to the long list of "things I really, really wish I had time for" - or I'll assign it to clone #1023 once that becomes viable :-/
I don't think you have much to worry about in chapter 1, though.
Ultimately the mechanics of our matchmaking come down to "Starfighter spits a heck of a lot of signal about you at Thomas/Erin/Patrick; we try to decide if it makes sense to introduce to to clients and, if so, to which." All of us are working parents. We will certainly not penalize people for prioritizing piano lessons over being one of the first 5 people to crack a new level.
I won't commit to "I'll never look at time between a level is first opened and when it is solved" but, as somebody who has fed his family with code for as long as I've had a family, that strikes me as being among the least interesting things I could possibly learn about an engineer's ability.
From the second, it sounds like you guys will seek out the top performers and weed out the bozos. I like it! Are you looking at a traditional recruiter fee model or something else? Apologies if this is posted somewhere else.
What's the problem with just saying that? "I worked on this during my commute to work" or "I did this cool thing on my weekends" or "I tinkered with this in the evenings"
There is a lot more you can do with 1h per day than you think. If you're consistent.
Hell, I am currently making decent money on the side with book sales by working on writing and marketing for about an hour a day. My biggest problem has gone from "Fuck I have no time" to "Fuck, I've run out of ideas to try".
I’ll second that. This fact is a great opportunity e.g. for people who get bored on their train commute or similar.
Or, for some of us, there's a lot more you can do with 1h per day than you think, if you're willing to let that one hour consume your thoughts for the rest of the time you're awake. That's much more my concern than anything else --- when I'm at work, I need to think about work.
It's a huge deal for both parties. I think that if there is a way to spend money and/or time to solve it, both sides can come out on top with room to spare.
There's plenty of evidence that both sides are willing to invest a lot in it. For employers that's easily measurable in fees they pay for recruiting services (which usually suck), for referrals and such. For Applicants, it's harder to say. But, people do whole degrees and certifications in order to appeal to employees. Often that stuff is at a total tangent to acquiring useful skills or pursuing interest. It's basically time an money invested in being (more easily) hirable.
Basically, anything that can improve hiring meaningfully may be worth this kind of big investment for an employee as well as an employer. One way it could pay off is higher salary. A higher quality, de-risked hire is worth more.
I think one of the things that rely needs to happen though is that applicants need to be able to evaluate their chances. Spending 3 days interviewing may be no big deal in the context of a job that will last 3 years, but it is in the context of some unknowable probability of getting said job. A third party would probably be helpful here.
I believe that most engineers fail in interviews not because they are incapable, but because they underestimate the prep required. And prep is difficult for experienced engineers because the employers expect a lot of academic stuff which they have forgotten and need to refresh in a short time.
We hence designed a solid program, which takes you through interview important CS in less than two months. We are having fantastic results with that. Good Engineers who would normally not crack into stellar companies, are now cracking in.
This way, candidates don't need additional expensive degrees and employers waste less time hiring . At scale, this is one way to fix the hiring problem.
The designed operation of our trading levels is “Play them, lose horribly, write a program, reset the level, run the program, have it crash with a bug, fix and re-run, lose modestly, adjust your approach, re-start the level, run the program, win.” (Folks have asked whether we’ll hold this against you. No, no, of course not. We log everything under the sun, but losing/restarting levels is planned. That capability is an advantage of doing this in a rich simulation as opposed to real life — you can go Knight Capital as many times as you want and no one loses their job!)
This feels good. But earlier, this was said [1]:
We will track player behaviors and skill at incredible levels of granular detail, instrumenting them like they were built by the Orwellian MiniPeace... We can tell you exactly what happened when your candidates tried to implement a REST API. We can compare their performance against hundreds of other talented engineers (including your current employees) on the same task.
Can you please elaborate on what exactly is going to be tracked? Is any of this configurable by the player? Personally, I'm going to have a hard time enjoying and learning if I feel like every mistake I make, or every extra piece of time something takes is going to be judged and count against me later on.
[1] http://www.kalzumeus.com/2015/03/09/announcing-starfighter/
It is not in their best interests to count against you, quite the contrary they want to sell you to their clients.
Just knowing what stockfighter is puts them into some extremely small percentage of devs, which in the current market is a drop in the bucket for demand.
Edit: even if you present yourself as a recruiter, it doesn't make any real difference. The value you are adding and charging for is that you are handling part of the recruitment process so that your clients don't have to. Nobody wants a recruiter who doesn't hand them the best candidates.
They don't want "the best" candidates, they just want competent ones.
In particular: clients cannot pay us for a list of people who have exceeded some threshold in SF.
This isn't an accusation of wrongdoing, just a simple observation about reality. The incentive for a recruiter using a game like this really isn't for every candidate (err, I mean, player) to be seen as equally recommendable. Even if you were so suicidally idealistic that you saw it that way, clients wouldn't. But you aren't stupid, you know that.
quote66555 is right to think that there is an incentive for extensively recorded details to be used as a signal of his individual "quality" as a candidate. And if he is not in the top n% (where n < 100) then at best he will not be recommended. So it is possible that his little delays or minor fuckups will count against him, assuming he cares about being recommended. It's a reasonable thing for him to think. He isn't scare-mongering.
We promise: your data is private. Nobody sees anything you do unless you want them to. It doesn't matter what employer incentives are; revealing a log of how you've engaged with this CTF would involve us breaking a promise to you.
Meanwhile: what we're doing as a business is opt-in. If you don't think we're trustworthy, there is absolutely no reason to work with us to help find jobs. Just goof around with the game and ignore the fact that we do other stuff. We are no company's job interview.
>>>Most of the best performers on this CTF aren't going to get placed by us.<<<
It's frustrating talking about this, because we've had our hands absolutely full just getting a CTF that's better than Microcorruption done. We haven't had a spare moment to think about how to make money from it.
Catch me sometime when I'm not debugging a weird interaction between my emulated SPI bus and my emulated UART. :)
https://www.evernote.com/l/Aacj0YC7tCRIdbau2AgTrBORPc6kgX442...
The redactions are just to avoid spoiling levels. The "replay" link is a UI templating bug. (It isn't for showing a replay, it is a convenience method for replaying the level, and it's now supposed to show unless you're logged in and able to play the level yourself. Fixing this in the next 5 minutes.)
Now, if I (as a player) log into and view my own profile, I get a better sense of some stuff the system knows about me:
https://www.evernote.com/l/Aae3c5I6TdZA7ZtONMeM_z-ammvZA_3FD...
That is obviously not all the information the system has about me. If a sparrow yawned in a world simulation that I took part in, that fact is dumped onto an S3 bucket, somewhere. To be maximally explicit: every order I sent in. Every execution I got back. Snapshots of the GM's memory state as I passed through the levels. etc. We grab all that. That isn't an exhaustive list. Assume if it is amenable to being discovered by a computer that it will be discovered and persisted until the end of time.
This is not exposed publicly.
Here's the preferences UI. Verbose but it gets the point across, right. Defaults are "Anonymous" and "No Public Profile", respectively.
https://www.evernote.com/l/AadESN5EzgdCzpFAQnR0rIuxA5Ghb7pKX...
Now to a question which may be implied: "OK, I now understand that my info is locked up pretty tightly within Starfighter. But you want to tell people that eventually, right? That's how you justify your service to clients." At the point I'm on the phone with the CTO of $CLIENT I am a contigency recruiter. That means I only get paid if that CTO decides to interview you and ultimately hire you. You can bet that I will be doing my best Enterprise Sales work and showcasing your performance in its most positive truthful light. If I did not feel like that would be possible, that phone call never happens. If the CTO had previously mentioned to be "Be on the lookout, specifically, for people who are good at analyzing mountains of data. We need them for our fraud team.", and I had relevant signal on that question from level X, you can be reasonably assured that if you did really well on it I'd open the call with "The reason I'm recommending Foobar to you is because you told me you wanted folks who are really good at analyzing data. Let me walk you through the solution Foobar came up with -- it's a hoot."
(Worth re-iterating explicitly -- that that point, we've talked on the phone and you've explicitly given me the go-ahead on placing you.)
To the question: "OK, so I get that people outside the system don't get arbitrary read on my history, and I understand that you're essentially a firewall which is incentivized to only allow the egress of the best possible true packets: what about you? Aren't you going to be influenced by, you know, taking a look directly at my stream of HTTP requests and seeing that I fumble fingered a URL the first time I played the level?" To which I say: I don't care and don't have time for that nonsense -- I'd much rather concentrate on things which actually matter to an engineer.
account2: 'for-realzies'.
Succeeding by whatever metric because of this? Let the true games begin!
Also, do you know why evernote chooses to send "Content-Disposition: attachment; filename=skitch.png" forcing my browser to download instead of display the png inline?
My effort was started in Nov. 2014, and is similarly written in Go. Clocking in at ~1600 LoC, it is certainly nothing special. I have no background in finance and only a cursory understanding of the technical aspects of the exchanges. It's mostly working, but I've really stalled because I can find neither a real purpose to continue, nor any resources on building interesting models. All it does is make financial noise (random trades between similarly irrational parties)
All in all, I'm happy for the guys working on this for doing what I apparently couldn't.
If anyone's interested, I'd be happy to post it to Github.
I'm only a Go novice myself, but it doesn't look bad to me. Doesn't need to be perfect for me to learn something from it.
More seriously, to somewhat address the "8000 words?" folks, the runup to Starfighter reminds me a lot of StackOverflow. Both seem like projects that would have flopped if not for the creators' existing audience and great care in cultivating excitement by explaining in depth the need, the goals, and the philosophy of the project. It'd be interesting to revisit the early StackOverflow marketing and compare the two more closely.
Then again, I know very little about running a startup; patio11 has a track record. Maybe this works as a strategy.
I hadn't heard of this, or microcorruption, before the prior blog post regarding writing the emulator. Then I started microcorruption, and it clicked, and then I spent the next few days talking about both microcorruption and starfighter to anyone I thought might understand my eager rambling.
Let's just say I'm looking forward to reading this...
That's a number which is trivially calculable. I don't know what it will be yet, but if you asked me to pick the over/under, I'm in for 80 out of 16k people on our list at present. An unsubscribe is not "I hate you guys and wish you would die in a fire"; it's the email equivalent of a browser's back button. "Not for me, not right now." Many startups let each unsubscribe punch them in the gut. Don't do that. The only way to avoid unsubscribes is to avoid email. You profoundly don't want to avoid email.
We've sent ~2 emails since... March? If I were a consulting client of myself, I'd have written somewhere between one and two dozen.
Is this email going to produce business results for the company? Hard to say. Wild guess? I get a contact in the next hour from one of the companies who has a stalled LOI saying "Oh great you're shipping let's get that signed." Depending on which company that is, the economics are worth hundreds of thousands of dollars.
Many professional email marketers strongly disagree with writing long emails. I will chalk that up to a respectable professional disagreement. They work very well for me, by any trackable metric and by most of the intangibles. I've never felt like I created much value with the little 125-word-and-a-picture squibs that the industry blasts out by the hundred million; I know (because people tell me) that some people like my writing rather a lot and are disappointed that I don't hit them with 8k words every Friday. As it happens, a portion of Starfighter's list is folks who are in exactly that bucket.
Does that answer the question? Not trying to be very defensive about this, just trying to help other startups out. The modal startup sucks at email marketing. It is, far and away, the highest ROI channel you have and probably the easiest to use well. You should send more email. You should send better email.
Of course writing them is a pain so it's an investment. Considering I just gave a friend the "you must write long articles and build an audience" advice, it's amazing how badly I take my own advice...
He's on my very short list of 3 or so people who do email marketing particularly well.
One of the other people on that list, incidentally, writes 200-ish word emails every day. I read everything she writes too. There's not a single optimal solution here.
(I'm also very much looking forward to playing the game after reading that post. Given I'm not a professional programmer, I have very little desire to become one, I'm very happy in my current jobs, and I suspect Stockfighter is going to kick my ass until I can wear it like a hat, that's of dubious business value to Starfighter, but I guess I'll probably also recommend it to some folk who may be of more value...)
I may not be the target audience (novice coder) but I also feel the writing style would greatly benefit from greater focus.
A sentence that stands out in that regard is "Although my co-founders Thomas and Erin have done substantial work with securing real stock exchanges over their career, I have no particular background in finance." This sentence could be refined to "My co-founders Thomas and Erin have substantial experience securing real stock exchanges". This kind of editing would help the author avoid 8k word essays without a significant loss of content value.
My advice to Patrick would not be to change his style, which is clearly very effective, but to also throw some shorter update emails into the mix so people can keep tabs with less of a time investment if they so choose.
To improve the wording, I'd suggest something that doesn't imply intent on behalf of the author and solely reflects your own personal views. For example: "I wish the emails were shorter as I don't have time for long-form content". It gets your point across that you have limited time and would prefer concise emails, but doesn't infer anything regarding respect (or the lack thereof) towards you.
I do wish your original comment had been a little less snarky; I’d like to contribute more to HN but it’s not so easy when replies seem to assume entitlement/bad faith/etc.
I think the difference is that people give authors advice prior to writing an article which amounts to "be mindful that your readers will have to read this". And given that authors have a broad range of readers, it's perfectly fine for an author to consider this and still go ahead with something that's long form and detailed because there's a good chunk of their readership who actively appreciates it (and possibly expects it given patio11's typical article length).
Essentially, claiming the author shows you a lack of respect is disrespectful of the author for the work they put into it. Who has the greater onus to offer respect: someone who actively works to put out free in-depth articles that nobody is under any obligation to read, or those who passively consume those articles? Those who wish to read short announcements can simply say "Great post with lots of details, but is there a channel I can subscribe to which gives me short announcements?" That demonstrates respect.
While patio11 may not follow this particular suggestion for potentially valid reasons that he may or may not have, it was good feedback either way.
[1]-It mostly referred to his or her experience negatively, not the text itself. This seems superficial, but it does matter anyway.
[2]-The RSS point validates the experience, and makes it easier for the author to understand.
[3]-The tl;dr bit was a specific suggestion to improve his or her experience.
I think the long email is a great example of how it's better to have 1,000 people who love you rather than 100,000 people who like you.
I'd personally be fine with first finding out about Starfighter itself well after launch. I'll probably check it out, but it's not like I anticipate spending hours on it every week. On the other hand, your blog takes only a few minutes to read, and has great signal:noise.
I might venture an opinion that this is likely because they don't write as well or as interestingly as you do. By a long shot.
That's not universally true ;)
I signed up for a tech-heavy game-ish thing, so I expect (and welcome!) tech-heavy content.
I read everything Patrick (and Amy Hoy and Brennan Dunn and Ramit Sethi and a few others) emails me. All tend to be long form (typically x,000 words) essays and/or sales letters.
My ROI on time spent reading has been totally positive and I have no plans to stop.
At one point, it even says they will award people that write OSS for it. Doesn't that just further reduce the effort needed to pass levels?
Not to be negative. I'm very, very much looking forward to this.
Remember their business model, it isn't "get people to the end of the game following the rules", it's "identify people with talent to recruit". Your tool would just be evidence of the latter.
We like the idea of people publishing and sharing tools; they did for Microcorruption, too. We'll have more to say about this.
a) What's the worst thing that possibly happens? Someone scams a row out of our database? It has more rows. 10,000 someone scams a row out of our database? I will write a for loop which scams a million rows out of our database. What about the actual world or Starfighter's capability to positively impact our players, our customers, the industry, or our own situations just got worse as a result of that for loop?
2) I think you will find that a solution which beats level six also sails over the Turing Test, so if you have a tiny script which does so, I recommend not burning it on Starfighter, but would be honored if you decided to try.
3) At the end of the day, the model is not "Someone pays us for a PDF automatically spat out of our database", the trivialization of which PDF would be dangerous to the business model. It is "We become sufficiently enthusiastic about someone's performance that we successfully introduce them to a company which is not us and then that company hires them." Is the threat model "You use a script which trivializes our levels to win a free conversation with Patrick about your career?" Anyone can get that! At any time! Save yourself a git clone; just send me an email!
The more interesting question is then, given that you've learned absolutely nothing from Starfighter because you've git cloned your way to the finish line, whether you can (in thirty minutes with me, or Erin, or Thomas) convince us "Yes, this person is totally someone I should burn my stack of accumulated karma with the CTO of $CLIENT with to suggest they interview them."
Thanks for taking the time to respond.
So, how is this any different from $CODER burning their accumulated karma directly with CTO of respective $CLIENT ? Why should we expect them to behave any differently because it's you, Erin or Thomas?
Patrick is saying that if someone is incompetent gets through with scripts, they'll still have to pass a chat with Patrick before Patrick puts his reputation on the line with a CTO.
Random devs don't have karma either.
Now that Starfighter's portrayed as a recruiting system, it makes total sense.
Maybe, with companies like ours and TripleByte in the mix, that's what they'll start doing. Won't that be interesting?
We're a bootstrapped startup founded by 3 veteran consultants. Consultancies always compete for gigs; that's why we have to write proposals. This isn't a consultancy, but we've learned our lessons. We sincerely do not give a shit about what other incumbent recruiting companies do. Our approach will work or it won't, and if it works, we're going to grind on it and continuously improve on it, and if other people do the same thing, eventually we'll start having meetups and sharing beers with them.
To that end, it might be worthwhile starting a company to build something similar to Stockfighter that can easily be whitelabelled for recruitment companies.
However, whenever the topics of programming in finance come up in HN, I see a general tone of disdain somewhere along the lines of "why do you want to waste your life in finance when you could be starting a start-up in Silicon Valley?". Of course I am generalizing a bit here, but I have always felt that finance provides incredible challenge to technical people - especially those with a background in mathematics or physics and interested in programming.
If you can't code, your future there is bleak. If you can its not that much better. And this is where we are all heading.
Yes there are challenges - but it's not often technical but organisational, project, people and process challenges that are the main issues. Those interesting challenges for good STEM people will be in transport, farming and pharmacy too by 2020.
Wages might be lower :-)
Why should I "play" this and not blog about programming? I still have to go through the usual technical interview when applying for a job. What's my incentive? I'm trying to find a reason to spend time learning this, because it doesn't translate into marketable skills. I can't put "Level 65 player in StockFighter" (because this might turn out to be a niche product that no one outside HN will know about), but I will definitely include "XSS research on Java Spring".
Note: I'm not trolling or trying to put the project down. I'm interested in it but unsure.
Think of it as a game with "new job" as a piece of available loot. Play it because it seems fun (and you still might learn something that you can use later).
I suspect the right answer is to do both.
If this is the outcome, doing well at starfighter may not translate into much additional career success. For it to be clearly worth your time, they probably have to do reasonably well. But HN-famous might be enough for a tech recruiter.
Looks like the schedule has already slipped. The email said "2~3 weeks of today" but the blog post says "3 weeks of today"! :P
Since we're going to keep rolling out new level sets continuously, we should probably have been a lot more chatty. But I keep telling Erin and Patrick that I want to control expectations, at least until we know exactly what we're shipping in chapter 1.
Of course, now we know what chapter 1 is, so I've lost my excuses to keep them from writing!
Erin & I have an emulator post ("Everything Thomas Got Wrong About Emulators This Time That He Didn't Get Wrong In Microcorruption") brewing, too.
Couldn't you remove latency as a factor, at least in a game world? To play devil's advocate, it seems like you could build a game where time advances according to the player's control by API.
Imagine if each API call optionally took a parameter describing by how much time should have advanced since the last call, upon the arrival of the current call. If the parameter is omitted, the server advances the world by the corresponding amount of real clock time. The game simulates that time passing, and simulates receiving the call at the time specified. Perhaps an API to stop and start the flow of game time, or run the game for a certain time and stop.
Players can interact with the game naturally, and solve problems without controlling time, but if they run into latency issues they can orchestrate the advance of time on the server precisely. I understand this will not be simple to implement, especially if the game consists of multiple communicating agents, but it could allow you to remove the uncertainty of players interacting with the game over a network, and more easily set up complex race conditions or timing attacks. It will also more gracefully handle any slowness that occurs in the game or bot simulations, since while game calls might take longer real time to return, they will presumably not take more game time. Last but not least, it could allow you to design test cases that are deterministic in ways that involve time, i.e., this event occurs exactly 100ms after the game world begins, every time. Players can exactly reproduce situations that would otherwise occur nondeterministically, while you retain your ability to simulate interactions that you want to be nondeterministic.
(I'm just exploring the idea because it seemed interesting, not making the case that this is especially important in the scheme of things.)
Edit: this post got longer than planned - apologies - but this HFT / algo thing has been bugging at me for ages and this seems a likely thread for knowledgeable folks.
The references to Flash Boys worry me slightly - Lewis sold a false scenario there - it's pretty clear that no fool is going to see Bob buying a million Apple shares in London, then zip over their speed of light towers and front run Bob in Frankfurt for another million Apple shares. Who knows if Bob wants a million? Flash boys it seemed relied too much on a protected type of trader (market maker) getting roasted by the emergence of real competition - the "algo" traders.
It seems incontrovertible- equity market spreads have fallen by about 5/6ths in the past decade (no wonder Lewis' hero trader thought someone was stealing from him) but ... How and Why?
what algo traders actually do is a bit of a mystery to me.
The basics I kind of understand :
There are correlations between shares - spot those and you can make money. Let's say oil goes up, car manufacturers will go down by some amount. Short them and make money. The first time people did this they probably thought they had found a money printer. But then someone else starts playing the same algorithm - so you have to get your orders in taste than that guy - pretty soon you are worrying about the speed of light over glass.
But other correlations exist and get spotted and tried out and ... Well it seems a bit of a weak business model to me to live in P of .95.
So the business model of HFT is a bit weird, and the way their actions feed into reduced spread / liquidity is a bit unclear - but anyway, I look forward to totally screwing up my social life in a few weeks.
Anyone who can enlighten me, please shout.
However the microstructure book looks ... Deep - but I guess I need to decide if I am in or out :-)
How do the other viewpoints explain why the IEX exchange was created and designed specifically to stop HFT? That is the central narrative of the book, and in Lewis's telling it makes complete sense as a way to save the common man from the evil HFT traders. But if Lewis got it all wrong and HFT is perfectly fine, why would a completely new exchange be set up to stop it?
Believe it or not, that's not even the "cynical" answer.
There is a natural and good competition between HFT market makers who provide liquidity and big block traders who consume it. IEX is purpose built to advantage the big block traders at the expense of HFT market makers.
Note: neither side in this is good or evil, they are just natural opponents.
What I would say is dodgy is presenting yourself as "for the common man" when what you are doing is serving the common man up to hedge funds.
https://www.chrisstucchio.com/blog/2012/hft_apology.html https://www.chrisstucchio.com/blog/2012/hft_apology2.html
I strongly encourage anyone interested in real-world algorithmic trading to take a look at Quantopian.
https://www.quantopian.com/home
It's not HFT by any measure, but it manages to make algorithmic trading extremely accessible by providing a platform where users can develop their algorithms, backtest them against 13 years of market data, live trade them with paper money, or live trade with real money by linking a brokerage account.
They have also open-sourced the algorithmic trading engine used to run their platform:
I am incredibly excited to try my hand at Stockfighter. Hopefully some of the things I've learned over the last few years at Quantopian will be useful, but I expect I'll learn quite a few new things as well.
#dayslefttorelease
[1] http://www.slideshare.net/PeterLawrey/writing-and-testing-hi...
Maybe I don't get the full picture, but it sounds like you have to poll via REST API to query the book? Modern exchanges just give you a feed of updates (adds, deletes, trades), so you don't run into situations like this. You can just check the feed to see what happened.
Good luck, guys!
What happens if your process crashes? how do you rebuild the order book?
Great work btw guys, can't wait to get started!
After we can do that reliably, then I will strongly consider making an advanced mode level where a crash / market reset / rollback of trades is a planned feature of the level (they are absolutely a thing which happens in real life) and dealing with it from the player's perspective is the main task. (e.g. What would you do if you got a message from the stock exchange saying, basically, "We lost data. How much? Umm, not sure, the last orderId we have is X. Orders after X are no longer on our books but, um, I guess there exists the possibility that they will nonetheless settle successfully if they matched before we went down. ... Good luck to you!")
Ref: http://ookami86.github.io/event-sourcing-in-practice/#title....
Codehunt (from Microsoft Research), very addictive yet nice concise format, polished interface, allowing Java or C# a plus.
Minuses - Requires some unnatural code golf for maximum stars. Needs new problems and difficulty is too variable. I got in Top 5 but realized it was a completely worthless achievement as it just was not hard enough, somehow I hoped for a short note from MS saying GJ here is the next challenge level.
Bonus: Did not feel bad about playing this at work on breaks.
Codecombat - program in javascript, using classical MMORPG terminology, this should have been more addictive but something was off, maybe it was the latency or browser glitches.
My bot using simple strategy got in top, but I realized that I would rather go back to writing my scripts for real MMORPGs where my bots make actual money from RMT.
I still get Codecombat monthly e-mail reminders of new features but somehow the appeal of fake MMORPG is not there.
Also, felt very guilty about firing Codecombat up at work...
So you guys not going for the standard DnD type of setting might be a good idea.
Starfighter is the successor to Microcorruption, a microcontroller-based memory corruption CTF.
We wrote Microcorruption to provide hands-on learning for memory corruption exploits.
We used microcontrollers instead of full-featured CPUs so we could (a) lose most of the irrelevant details of operating systems and (b) fit the whole memories of thousands of emulated CPUs into a single server process. We also liked the idea of leveling the playing field, so that pros with large libraries of X86 tools didn't have too much of an advantage.
Microcorruption used MSP430. We picked MSP430 because it's the simplest, most elegant MCU instruction set for which GCC support was trivial.
Starfighter uses AVR because we didn't want to use MSP430 twice, and AVR is the most popular MCU instruction set among hobbyists. It turns out AVR does other interesting things for a security CTF, because unlike MSP430, it's a Harvard architecture.
The AVR levels are intertwined with the trading levels, so that the objectives for the AVR levels are more interesting than those of Microcorruption. You won Microcorruption mostly by figuring out how to exploit simple memory corruption bugs. My hope is that Starfighter requires a bit more in-sim programming.
Look at the leaderboard on Microcorruption.com and notice how few real names are there. That's what CTFs are like. If you want to have a profile page, we'll give you one, if you want to link up your Twitter account, you can do that, but if you want to be secretsquirrel1235813, you can do that too. From experience with CTFs: I think a slight majority of people will be anonymous.
There is nothing we will do with your data that won't be opt-in.
Decisions, decisions :)