HN user

AtticusTheGreat

117 karma

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

Posts3
Comments32
View on HN

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.

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

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.

Firefox 58 8 years ago

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.

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.

Building a NAS 9 years ago

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.

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 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.

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.

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?

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.

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.

Vue.js 2.1 Released 10 years ago

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).

Homebrew 1.1.0 10 years ago

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)