Weekly Brain Dump #17
At a Glance
- Taylor's Five Year Anniversary It's been five whole years since I started Taylor
- Refactored Taylor's Config handling Noticed this area was really bad and cleaned it up
- Taylor Export Woes Found an issue with my exports
- Interesting Links Cool things I found this week
Taylor’s Five Year Anniversary
I wrote a whole blog post so go check it out!
I’m just so blown away at how far I’ve come with Taylor. It even lead to me getting my current job!
Refactored Taylor’s Config handling
An issue was raised because I have a discrepancy between the
documentation and the code. In the code taylor-config.json is the file used
for configuring all your Taylor needs. In the documentation I call it
taylor_config.json. An easy fix right? Just rename the documentation? Well
yes, that did fix it.
I looked closer at the code though because I briefly considered supporting both as a politeness. I did not end up doing that but I did not how awful the configuration handling is inside Taylor. So I took some time and completely refactored the configuration handling and created the [Taylor::Config][taylor-config] class to help out. This has reduced the amount of magic strings across the codebase and now lets developers easily use this configuration for themselves if they wanted.
[taylor-config:] https://github.com/HellRok/Taylor/blob/main/src/ruby/taylor/config.rb
Taylor Export Woes
The build for my previous config change broke on the web test suite. I thought this was really strange and was able to reproduce it locally. It just boots up, runs the C++ code portion of Taylor, then does nothing, and exits.
This took a decent chunk of debugging, lots of puts statements, and even going
back commits. But the strangest thing was the mrb state didn’t claim to have
an exception when running the mrb_load_irep method to load the test suite.
Interestingly going back to earlier commits didn’t fix this and it started
happening on my Linux builds too. This made me realise something important, the
actual cause. It was because I wasn’t locking the version of MRuby used in the
export Docker image but I was locking it to 3.4.0 when I compile libmruby.a.
So the most recent commits to MRuby seem to have changed how the bytecode is
generated. This meant the older 3.4.0 version of MRuby couldn’t load and run
it.
The fix isn’t that interesting, it’s mostly just me locking the MRuby version so this doesn’t happen again.
Interesting Links
Sailing The High Seas: An Interview with Chantey Dev K.C. Gortyn Code: This game seems really fun, I will have to buy a copy.
The Kirby Frame: A damn good way to actually stop misinformation and bad faith arguments.
JRuby 10.0.5.0 Released : Always good to see alternative Ruby implementations going well.
I’ve been thinking a lot lately about the art education: This frames AI content in a way I haven’t seen yet and is well worth the read.
Rethinking HTTP Benchmarking: Why I Built cryload with Crystal: A new web server benchmarking tool written in Crystal.
How Pizza Tycoon simulated traffic on a 25 MHz CPU: I love seeing how old games overcame limitations with clever code.
Making of words.zip: Very cool breakdown of how their infinite word search MMO game was made