Stockfighter is live
stockfighter.io
stockfighter.io
[1] http://www.kalzumeus.com/2015/08/20/designing-and-building-s...
(Yeah, I've had outage because of this too.)
Edit: Here's a FF discussion on it: https://bugzilla.mozilla.org/show_bug.cgi?id=264354 -
{
ok: false,
error: "strconv.ParseInt: parsing "NaN": invalid syntax"
}Site is down now... (at least in Europe)
Weeks from now when this is all a funny anecdote of course...
I want to say that it's bizarre, but I think it's mainly that he writes very well.
... except that you have to spin up more boxes.
I think you have a different definition of "admirably" than most of us :-)
Follow Twitter's lead and switch to a JVM-based solution when you get a chance, you'll be shocked.
Even if I didn't need multiple machines for throughput I'd probably still want them for redundancy (redundancy of machine hardware as well as redundancy across availability zones). (Note: didn't vote on your post)
These aren't a JVM language (or Golang, for that matter) out of expediency: I had to write the economic simulation and the trading algorithms and get it done in about ~2 weeks, so I wrote them in my best language, Ruby.
Stick to deep breathes and think it through :)
Startup culture says Launch Days Are Really Important. This is not our first rodeo. We know 0.01% of the people who are going to play this game are even aware it exists at the moment. We're pleased as punch that y'all are playing and some of you are progressing in it, but long-term, a few teething problems on launch day is a no-op.
edit: this is the message im getting trying to play first steps, if it helps, dashboard says "Trades.Exec() (Status: playable!)" (3:08 UTC)
> We couldn't start the level: This level has been locked by a different server. (Sorry if this happened accidentally as a result of a server crash -- it will clear up in an hour.) Refresh page to check if server is down?
Briefly: you get round-robined to a (healthy, importantly) GM machine the first time you try to start a level and that association needs to be fairly sticky. Once you've started the level, a piece of that box's memory is all your own until the level ends. To prevent a single player from getting memory on all the boxes we "lock" a level to a particular box. While the level is running, no other box will open the same level for the same player.
The problem is when the GM with your box becomes unhealthy. Nginx will put you in touch with a different GM, which could possibly mean your level is still running on a box you can't contact. At that point, you have to wait for either that box to hurry up and finish dying, for me to do a redeploy, or for one of the other GMs to figure "OK, that level appears locked but it's a very old lock so it's unlikely it is legit. I'll unlock it for you and grab the lock."
Levels generally die ~40 minutes after starting (but who knows with a failing GM). The lock ages open after ~1 hour.
Also, maybe a new error, is getting mixed in, response from /gm/levels {"ok":false,"error":"exit status 1"}
You could use container migration to move people off dying nodes, or to redistribute the cluster.
Ultimately though, it's probably a pretty lean startup and there is only so much experience and effort you can apply to each area.
I wrote a one-click deploy (via cloudformation) self-healing zookeeper cluster on AWS (wrapping netflix exhibitor for the pretty GUI and config reloads) that has been running since the beginning of 2014 on ~$100/mo in production without issue. It's roughly 200-300 lines of ops config, because exhibitor makes everything easy.
Consider biting the bullet! If you want to discuss further, my email is in my HN profile.
Good luck!
Just for anyone interested:
We're pushing a "trainer" tomorrow, which is essentially "one level" of the CTF, so that people who have never looked at low-level embedded systems code can get the hang of it, and so we can, you know, not blow up when the actual CTF runs.
The trainer can do some things that the real CTF UI won't be able to do (because they would make levels too easy to clear), so I'm just fine with that. It's fun in a different way from the CTF.
The full CTF we'll post in a week or two. Ironically: it was pruning all the real CTF levels out that screwed me this week. You go into thinking "all we're doing is removing functionality, this will be easy", and by the end of the week you're setting your computer on fire.
["handleListAllowedLevels", Object] blotter-bundle-dd01d8c9.js:1549 No level specified in URL. blotter-bundle-dd01d8c9.js:1605 ["enterLevel does not think it can reenter level: ", "first_steps", NaN, Object] blotter-bundle-dd01d8c9.js:2602 ["handleEnterLevel -> startLevel", Object] blotter-bundle-dd01d8c9.js:2556 ["Error starting level:", Object]
I'm getting this error when trying to play the first level: "We couldn't start the level: couldn't connect to the GM server to start the level. Refresh page to check if server is down?".
I assume it's just too many people hitting the server at the same time, but fyi.
Edit: Fixed for me now.
With that. Congrats to all three of you. It's an exciting day
edit: Woot. Fixed.
I temporarily turned off bust-cache-on-deploy and the rapidly rising number of validated emails suggests things are working now. Now back to more DevOps craziness.
After creating an account, I was redirected to the front page with no notification about whether it succeeded or failed. No emails have arrived. When I try to create it again, I get "username already taken" and "email already taken", so something worked. But when I try to log in, I'm redirected to the front page with no notifications. In other words, login is failing.
To clarify, this isn't a complaint. Congratulations on launching, and apologies if you're already aware of these issues.
Edit: This is similar to https://news.ycombinator.com/item?id=10724699 but I'm unable to log in after clearing cookies. I get "Couldn't sign in. Check username/password" for a correct password.
We couldn't start the level: This level has been locked by a different server. (Sorry if this happened accidentally as a result of a server crash -- it will clear up in an hour.) Refresh page to check if server is down?
Also, usernames are injected into their code. Therefore they must be valid identifiers. Don't name yourself exit() or ret, or you'll crash their servers. Naming yourself nop will give you a distinct advantage relative to other players, however.
I don't know.
I seem to have hit some kind of bug signing up:
1. Filled out signup form, hit enter.
> Page reloaded, sign-up form empty. No other feedback.
2. Filled out signup form again, hit enter. > Told username and email address taken.
3. Check email. > no new email.
4. Filled out login form using info entered in step 1. > Page reloaded, not logged in.I'm assuming this is not part of the game.
--
It looks like email invites went out about the same time as the HN post, but it seems to be good now.
Love this.
"Couldn't resume the level because Couldn't connect to the GM server to resume the level."
It looks like the GM server is down at the moment, so I have yet to start the first level, but I'm more than happy to mash the F5 key till it works.
"This first release is Chapter 1. We intend to release a new chapter approximately every 6 to 8 weeks."
[1]https://discuss.starfighters.io/t/welcome-to-stockfighter/14...
"We decided to found a company to do nothing other than create and operate the best programming challenges in the world."
"You can play whenever you want, at any pace which works for you. Some players will race to complete these. Some will play leisurely. Either is perfectly fine."
https://discuss.starfighters.io/t/welcome-to-stockfighter/14...
So come on over when you have time and enjoy yourself!
Seriously. There's nothing worse than preparing for scale and then discovering you don't need it because there's not enough interest. Wheras I'm sure you'll get these initial load problems sorted soon enough!
https://discuss.starfighters.io/t/state-of-the-game-last-upd...
tldr: It took ~3000 game instances from < 5000 sign-ups (and therefore I assume << 5000 concurrent players) to bring the game down.
Were many revisions done on it, or was it pretty clear to write?
If you're looking to dive into the problems more immediately, there's a wealth of API clients and other resources available in the forums: https://discuss.starfighters.io/t/helpful-external-tools/136
Don't be afraid to try the game if you don't have much programming experience. It's seriously a great way to pick up some valuable skills.
I'll try to compile some constructive feedback in a bit.
1. You play stockfighter and get the highest score this year.
2. patio11 emails you and says "hey, you're awesome. are you looking for a job?"
3. You say "yes!"
4. patio11 emails pc (CEO of Stripe) and says "hey 2oi4j3 is awesome, here is proof (i.e. your stockfighter score)"
5. pc emails you and says "hey let's talk about what job you would like at Stripe, and let's bypass most or all of that technical interview crap because we already know you're awesome"
6. you and pc decide that you would be best on the X team, you start next week.
However, I would want them to walk me through their code. And I would want to probe into why they made certain decisions. And I'd like to give them at least one challenge and witness their problem solving process. So #5 would most certainly not be skipped.
But if the expectation of this service is there's absolutely no technical vetting process outside of this game then I guess it wouldn't be a service I'd ever use to hire someone. I don't believe that's the case though.
They differentiate themselves in that they claim their game will generate better leads than email spam, trolling LinkedIn & scuzzy phone sales.
I believe them, but I'd still interview anyone they sent me.
Will be jamming it in the morning. Hope you guys get some sleep at least.
FWIW, I'm also hitting the rate limit exceeded error when trying to access the "first_steps" level.
"The change you wanted was rejected.
Maybe you tried to change something you didn't have access to."
How is that possible? As I understand, undefined behaviour is either there when you compile, or it isn't (it is a function of the source code). So if the undefined behaviour is a function of traffic intensity, I assume you compile different C code base when you have high load. I never heard about something like this before.
However, a more critical factor is whether the architects designed their systems and software to scale effectively when the number of EC2 instances is adjusted. If there is a bottleneck that is not properly addressed by adding EC2 instances, then adding EC2 instances will be pointless.
Seriously, good luck. Success hurts sometimes.
I'd be interested in either, but for the moment rather not add yet another thing for me to learn