Last week, 05/29/2016
Inspired by Bonnie Eismann (who is smart and you should read) I’ve decided to start writing up things I do and read in the past week. It will be a mix of tech and personal stuff, because what I do is a mix of tech and personal stuff.
What I did
I bought a new (to me) motorcycle! It’s a 2001 BMW R1100S and it is approximately twice as nice and also twice as fast (😬) as my old bike. I’ve been riding a motorcycle to work for a few years now. Initially I got in to it because it was waaaaaaaaaaay cheaper than a car and was also super fun, but I didn’t really identify as “liking motorcycles”. It was just transportation. I think I’m now officially “a motorcycle person”. I ride for fun and to relax.
After being scared by YouTube videos of both motorcyclists and cars doing dumb things and blaming the resulting wrecks on each other I also bought a helmet cam which means I can take inane videos of me running to the grocery store and set them to dramatic music.
Dave and I recorded another episode of Soft Skills Engineering, our podcast about all of the non-technical stuff that goes in to being a software developer. We talked with @anyharder about making friends at work and being managed vs managing. She is great, and I think the episode turned out pretty well. I learned things about how our brains work, and also learned how to bleep out curse words in Auadacity in order to maintain our sweet innocent clean rating on iTunes.
We announced the React Rally speaker lineup! It turns out that selecting talks is incredibly hard, and we had to say no to many amazing proposals. I am very happy with where we ended up though. I’m genuinely excited for every talk at the conference. Tickets are on sale now. I’d love to see you there.
What I read
I usually avoid things with click-baity titles but this came up at work and
I thought it was interesting for a few reasons: Scaling to 100M: MySQL is a Better NoSQL.
It talks about a company that was having trouble scaling their normalized
SQL dataset and ended up basically using MySQL as a key-value store with
data denormalized in to a text field on a row. I don’t have much experience
using SQL databases at scale, so I thought it was fascinating to see how they
gradually stripped out all the features of SQL that people love to arrive at
something that looks a lot like how Mongo, Riak, etc encourage you to store
your data. No joins, no foreign keys, no normalization, no
no transactions, etc.
The post got a few reactions both at work and on the internet. Some people reacted to their data sets and query loads - they have 200 GB of data, which can easily fit in to RAM on a physical server. They are doing about 3.3k reads per second, which also doesn’t seem outrageous to me. Again, I have no experience scaling SQL, but it was interesting to me that they couldn’t make this work with a traditional architecture. I thought that NoSQL shined for performance reasons at much higher scales than this.
I also read My time with Rails is up. I’ve spent my career in node.js, which has a very different philosophy around abstraction and convenience than Rails. There is much less magic, but this often means you are doing lots more work yourself because there are fewer magical nice abstractions built in to the platform.
Because I usually work in environments without lots of built-in abstraction I have this ideal Platonic Rails in my head where everything is amazing and you can do anything in one line of code but it isn’t the bad kind of magic. I follow Rails news with interest because I like hearing about how things are on the other end of the spectrum.
What would you like to complain about?— Phil Webb (@phillip_webb) March 5, 2016
[ ] Too much magic
[ ] Too much boilerplate
I ran this by a few of my friends who are experienced Rails devs and they agreed with the technical concerns. I was fascinated by the reaction on Twitter from the Rails community. It seemed like people felt betrayed that someone would write negatively about Rails and were circling the wagons in reaction. People don’t like it when you criticize something they identify with so deeply, and people identify very deeply with Rails. I don’t love this attitude. Rails is a tool, like Node or React or any other tech. I use it because it helps me, and I want to learn where it falls down so I can avoid mistakes.