Currently fleshing out my boggle-like empire. serpentinegame.com. I've got ELO rated rooms, a daily room, and a new infinite room. I've been doing this since 2008 but recently rewrote everything from scratch and seeing how far I can push the online multiplayer boggle niche.
HN user
AtticusTheGreat
I'm a software engineer that likes to do side projects. Here are a few.
Serpentine - https://serpentinegame.com Car Advisor - http://car.adamplumb.com/ RabbitVCS - http://rabbitvcs.org StatusBeacon - https://statusbeacon.io
I built on online multiplayer boggle game back in 2008 that somehow drew a lot of users, many of whom still play every day after 17 years. About a year ago I started a rewrite from scratch in more modern technologies but stalled out after getting to about 80% of the way there. A few months ago Claude enabled me to finish the remaining 20% and was able to relaunch mostly successfully! It's been tough though. I'm a dad with three kids and use Claude all day at my day job and my interest in working late isnt always there. But I'm eeking my way to something that hopefully can stay up for another 17 years.
https://SerpentineGame.com brings in close to that with advertisements and premium subscriptions. It is a clone of a game called Tangleword that is itself a clone of Boggle. I originally wrote it in 2008 and am currently re-writing it from scratch because the technology stack is so old and cumbersome to maintain.
Whenever this kind of disagreement happens with my team, we put it to a vote and then the winning convention is enforced across the codebase from then on. There are tons of things in programming that come down to opinion but the important thing for me is that the team has a set convention and sticks to it.
In the old days the user would submit the form, the validation would happen on the server, then return a result. If the result was a failure, you would render the errors on a new page load. If the result was a success, you could redirect the user to "confirmation" page or reload the same page but with a different output.
I did try Firefox 57 on my Android phone and found the scrolling to be unpleasant with lots of artifacts and stuttering. It's still a much better experience with the mobile version of Chrome.
It would be interesting to try to cobble together a Linux distribution with a rust userland, using coreutils (https://github.com/uutils/coreutils) and over time building more and more of the userland/interface in rust.
I only skimmed the article but I agree with the conclusion. I evaluated both HAProxy and Nginx for a high-volume/low-latency load balancer cluster (500k requests/s) and HAProxy simply beat the pants off of Nginx. It has an extensive and well documented set of configuration options, tooling, and reporting, and it performed flawlessly on production (after much toiling). I couldn't ever quite get Nginx to handle the same load without falling apart at the seams.
I've got two NUCs, which I use as HTPCs running Fedora. They're fantastic machines. Really tiny, quiet, and plenty powerful enough for HD movies and light gaming/emulation.
The thing is, all of these details are implemented in the git command line tool, not in a library. So it is pretty difficult to write a tool that works exactly the same way the command line tool does, or if you do manage to do it, it'll be fragile since the command line tool could change behavior at any time.
This is exactly my stance on the matter. Don't litter the code with unnecessary comments that will never get acted upon. Instead, make a story in your bug tracker and act upon it.
Getting 60TB of usable space in the cloud is pretty expensive. Honestly I have no idea why he needs so much space, but if he does need it all, he probably didn't make out too badly. One of the main benefits of the cloud, though, is that you only pay for what you use, and he has to over-provision from the beginning, so let's consider that.
So he's currently using about 10TB of 60TB of usable space. If he uses Amazon S3's standard storage, he would be paying about $230/mo. If he uses infrequent storage that is $125/mo. That goes up as his usage goes, so when he's using 30TB that will be $690/mo and $375/mo respectively. He also has the benefit of high speed ethernet with the home NAS, unless he has fiber 1Gig internet, in which case speed is probably a wash. I'm not sure if there are other significantly cheaper cloud storage solutions at that scale.
So I'd say he hasn't done too badly for himself, though he probably could have saved some on the hardware by getting cheaper parts.
Such as?
As someone who applauds this pivot, I never saw much value in the whole convergence idea. Why would I want my laptop and phone to be the same device? This seems to follow the misguided idea in software that if two ideas are similar, just make a single generic idea that solves both problems. But then you get into leaky abstractions and have to make lots of sacrifices to get it working well for both use cases.
I know you probably meant "gold standard" but I was amused thinking about what a golf standard might mean ;)
I don't have much ideology behind going with microservices vs. monolith, but what we've done on some recent projects is organize our code into modules that only communicate with each other through a narrow and well defined boundary layer. If we need to split a module out into a separate service, then it isn't nearly as much work to split it out later.
One of the practical issues we've had with microservices that need to interact with each other in real time is ensuring a consistent state across systems. For example, let's say I need to change the status of an object and afterwards, call a separate service to change state there as well. What happens if the call fails in some way? You can't just run all of this inside a single database transaction anymore. Now you have to design your code to deal with several potential failure points and edge cases, which adds complexity. The other consideration is all calls to a service should be idempotent if possible. It makes coding from the client side a lot easier if you can just fire off a call multiple times (in case of local or remote failure) and not have to worry about state.
Just some of my thoughts, since this stuff has been on my plate recently.
Yeah absolutely. I'd love a free online solution from the government as it would make my life easier. So far, I haven't been willing to pay out to Intuit or HRBlock for a slight time/convenience savings.
I file my taxes for free, easily, by printing out the forms at home and doing them by hand on paper. The only cost to me is for the envelopes and postage. I've done some pretty complex filings over the years, and have built up the knowledge I need to do it well. Also, if I make a mistake the government is usually pretty good about letting me know and I either cut them a check for the difference or they cut me a check. It's actually not that hard, as long as you go through it line by line and read the instructions.
The person responsible for this makes his money on craigslist, probably buying and selling old appliances. So he probably has a lot to gain by getting people to buy old "better" appliances off of craigslist than the "terrible" new appliances at a box store. Sure, maybe he's right, but it is worth considering when reading this article.
I was going to mention this as well. It is worth making it clear that the article is written by a SF staffing company (which the article does do).
I just put up a list here: https://statusbeacon.io/service-list
Hey, currently no I don't have that list in a public place. So far I have 43 services integrated, and most of those are fairly big ones like Amazon AWS, Google Cloud, etc. I was thinking about making the list available on the landing page though, so maybe I'll do that. Anything in particular you're looking for?
I just recently launched a statuspage aggregator at https://statusbeacon.io which has been pretty cool to work on.
I've also got an online multiplayer boggle game that has made me low 3 digits per month since about 2008, http://serpentinegame.com, mostly ad revenue but also paid memberships.
Hey all, just to give some context, this is a side project I've been working on for about a month and a half. I've gotten it to a pretty good place, it's past MVP stage but definitely still needs polishing. With over 40 status pages represented I feel like I've got good company coverage but I'm adding more each day. I'm happy to answer any questions to get whatever feedback you guys have.
Hmm this blog post says it is available but there seems to be no way to get to it and it is not showing up in the console.
As someone who has had to shop around and try out a bunch of continuous integration services (Travis, CircleCI, Snap, Solano, to name a few), this looks pretty interesting! We've stayed away from managing our own CI infrastructure but this could be a good (and cheaper) solution. It doesn't seem to actually be available yet, but it'll be worth a look.
I've been using Vue.js for a new project and it is a breath of fresh air after using React. It has all the benefits of Knockoutjs (which was my gateway into these types of frameworks), but much nicer in-code organization (I'm looking at you ko.observable).
There is definitely a lot to like about Homebrew (it's better than macports), but like others have said, when stuff goes wrong you can end up spending an entire day googling, only to end up going down a rabbit hole of archaic and often obsolete commands that may or may not work.
Once you get your environment set up it's fine, but try updating to the most recent Mac OS version with a ruby environment and you'll find pretty much all your gemsets broken in one way or another (if you have anything that needs native building).
I might just be bitter, though, as I spent most of a day working through this exact situation just last week.
As someone who works with a fairly large EC2 infrastructure, I find the move towards EBS-only instance types somewhat alarming. For me, the main draw of EBS is to ensure data is retained in the case of instance failure, but it comes with significantly lower performance than instance-store SSDs and is more expensive. I've resisted EBS for the most part, and all of my servers are treated as disposable, but AWS is obviously trying to get rid of it as an option. The only reason I can think of is the excessive amount of money they can charge for EBS instances (especially PIOPS)
The data is from the Edmunds Vehicle API.