Code as Instructional Technology

I’ve had the chance to share my database expertise in a variety of venues: speaking at meetups and conferences, leading hands-on workshops, mentoring new technologists, and of course writing.

I had been brewing a new idea for sharing content when a great opportunity landed in my lap.

The idea was: share what I know about managing a specific database product in code. Instead of creating a runbook for how to set up replication, I would write code that sets up replication. The key part is that it would have to be well-organized, commented, and documented to be useful to learners. Making it interactive would help users understand the options and parameters as they chose the commands and added flags. Even the error statements would give them insight into how it all works.

A previous iteration of this was Docker containers that a user could spin up with populated data, and then run scripted scenarios against. This was a useful tool, but I had something in mind that would provide more guardrails for the user… something that would be more technically opinionated in its implementation.

One of my YugabyteDB teammates had started a project to automate wrappers around the REST APIs, but he was being pulled off into another project and didn’t have the bandwidth. I knew this was the perfect opportunity to implement my idea. I forked his file and went to work setting up a structure for the program, adding configuration files, tests, modularity, a command-line interface, docs, grouping the APIs together to achieve common tasks… everything that would make it useful for people new to the database.

After quite a bit of work, I was happy with the structure, and shared it to github. I’m able to add new features quickly, and find myself refactoring less frequently. It’s still a work in progress, because there’s so much for users to know about any particular database product. There’s still a lot to get out of my head into the bits!

The roadmap is well-populated with immediate next steps. Feel free to file an issue or ask a question on the repo, and I’ll update the roadmap accordingly.

Check out yb_day2ops (maybe I will hold a naming contest) here: https://github.com/dataindataout/yb_day2ops.