Further progress on liwords
Saturday, May 30, 2020
Our site is looking prettier now. My friend Conrad is doing the design for the site; the above is a very early version of what he’s already designed, and we have a team working to bring it to life. I’m mostly in charge of the backend, but doing a little front end work on the API. We finally got a full game timer working; I based the code mostly on lichess’s. Why not use a fully functional thing for inspiration?
liwords
Saturday, May 30, 2020
A small team of us have been working very hard on a project that I internally call “liwords”. The inspiration is obviously lichess.org. Why not do for crossword board games what lichess did for chess?
This has been a dream of mine for a few years since I first saw that wonderful site. Although we are very far from being done, I hit a minor milestone recently on Twitch (I sometimes stream coding on Twitch).
Macondo Dev Blog - simming
Sunday, Mar 22, 2020
I’m going to log more of my progress on the apps that I wrote about in an earlier post, in an attempt to:
- make myself more likely to work on these apps
- write a log for me and others and drum up some excitement! ;)
Monte Carlo simulation is basically working on Macondo. I expect that since I just got it working, that I’ll discover some bugs and special cases, and there’s so much more I want to do with it, but for now I’m excited that I got it working. As a nod to Scrabble expert Ron Tiekert, who might have been the first person to invent Scrabble simulations back in the 1980s, I plugged in the rack that he used to explain this concept, AAADERW.
Ideas for improving the state of Scrabble
Monday, Feb 24, 2020
Moving my side project to Kubernetes, a year and a half later
Thursday, Jan 31, 2019
Around April of 2017 I wrote this article about moving my side project to a single-node Kubernetes cluster: https://hackernoon.com/lessons-learned-from-moving-my-side-project-to-kubernetes-c28161a16c69
As of today, the infrastructure is still running strong, although I’ve run into a few issues I will talk about later in this article. I initially set up my node as a $10/month node but it was barely not powerful enough. Since then, Digital Ocean seems to have roughly doubled the CPU/memory for each of its instances, so $10 might work out. The Kubernetes docs mention that your nodes should have at least 2 GB of RAM, which means a decent 3-node cluster would only run you about $30 a month. I am still on the $20/month node, but I’ve redeployed it a couple of times and resized it since the initial setup, for various reasons that I’ll go into here.
Building an emulator
Tuesday, Jul 31, 2018
I have been coding in one form or another since I was around 8 years old, on my brother’s calculator that had around 450 bytes of program memory, and I’ve been videogaming since I was 6 (my dad bringing an NES from the US back to my native Caracas was one of my happiest memories). But why not combine both those loves?
I’ve been wanting to make an emulator for ages but for some reason or another I’ve kept putting it off. I’m still always busy but I figure it’s time to start a cool new project. My target will be emulating the SNES, probably my favorite console of all time, to the extent that it can play FFVI, Yoshi’s Island, and Mario RPG as well as I can make them - the latter of those two use different coprocessor chips so those would be fun to emulate as well. As an electrical engineer by trade I do understand roughly what it would take to write a console emulator.
Lessons learned from moving my side project to Kubernetes
Monday, Apr 17, 2017
This title may already be ringing some faint alarm bells; why move a small side project to use Kubernetes? And was it worth it?
I run a small study site for tournament Scrabble players, available at https://www.aerolith.org. (Please excuse the lack of a nice landing page). It consists of a Django app, with PostgreSQL, and a small Go-based microservice that generates some complex word challenges on demand. The reason that service uses Go instead of Python had mainly to do with performance, but partially I was also experimenting with Go at the time. The site also uses SQLite to store the word databases, Gunicorn, Nginx, i.e. a standard Django setup. The site gets a couple hundred players a day, so it’s not that tiny. I have also used this platform to learn; the very first version of Aerolith for the web was completed in 2011 and written in ghastly Javascript. It is now a fairly modern app with React.js and ES6. So it’s a nice project because I get to tinker with technologies that I sometimes end up using at my day job (for example, I did some Redis/Sock.js stuff briefly in the past, as well as Django upgrades, etc).
notes
Sunday, Nov 27, 2016
docker run -it -p 8181:8000 -v /home/ubuntu/word_db:/db:ro --env-file webolith/config/config.env domino14/webolith:latest
(and 8180 instead of 8181)
on home machine
ab -kc 100 -n 1000
For haproxy stuff
apt-get install ruby
gem install haproxyctl
Need a haproxy.cfg file that exposes the socket. Need latest HAProxy:
https://haproxy.debian.net/#?distribution=Ubuntu&release=trusty&version=1.6
Take down a server cleanly
sudo haproxyctl set server servers/server2 state drain
Need to set up health checks, and figure out when a server is done draining