Free Fridays: Experiments Into CockroachDB
Let's take a look at what one person is doing to build his own experiments into CockroachDB and what other projects he's working on during his "Free Fridays."
Illustration by Quentin Vijoux
Over the next few months, we plan to share with you what some of our Roachers are working on for their Free Friday projects. Our Fridays are given to employees as a day to self-manage, where they can decide to come into the office or WFH and to focus on work priorities or a side project. We hope this helps explain the bigger picture of one of our company values: Establish Balance.
Jordan Lewis, Engineering Manager
What is your role at Cockroach Labs?
I'm an engineering manager. I manage the SQL Execution team, which is concerned with the implementation of the engine that runs a SQL query plan by talking to CockroachDB's underlying kkey-valuestore API. I also find time to be an engineer, mostly working on improving our SQL execution performance and semantics.
What do you do day to day at Cockroach Labs?
My time is split about 50-50 between being a manager and being an engineer. That means I balance programming, doing code reviews, and communicating about technical topics with having one-on-ones with my team members, working on project planning, creating roadmaps with product managers, and trying my best to make sure my team is unblocked and productive. I usually get in sometime between 9am and 10am, and leave around 6pm. I like the flexibility that Cockroach Labs provides for working from home, and I take advantage of that from time to time, but I feel that I perform better in my role if I'm in the office most days.
What does Free Friday mean to you?
Free Friday is a great way to concentrate on working on engineering experiments or ideas that I've always wanted to add to CockroachDB, but don't quite fit into the roadmap. It's a time to stretch my wings and work on features or parts of the product that I don't normally get to, because of time constraints or product priorities. Finally, it's a time to focus: there are no meetings, and the office is generally very quiet and conducive to engineering productivity.
What is your current Free Friday project?
Last Friday, I worked on an experiment to add query memory monitoring to SHOW SESSIONS, which is a SQL command that's used to show the currently active connections to the database. Several users have been confused about which queries are using their memory up before, and we already have the infrastructure to track query memory, so I figured it might be an interesting idea to hook the two concepts up. I showed the idea to the team, who thought it was a good direction with a couple of changes. The work to finish this up is now represented in our upcoming milestone because it aligns well with some other initiatives to understand query performance.
This coming Friday, I'm planning to work on an experiment to add per-query-fingerprint latency graphs to our Web UI's time series data. This will likely be difficult to productionize, as it would take up a lot of space on disk to store latencies for all query fingerprints in an active database, but it's an interesting idea that a few people have been talking about so I'll make a quick prototype to see whether or not it's useful.
What else have you done on a Free Friday?
Mostly engineering experiments or random tasks that I felt like picking off. Once, I wrote a command-line code review tool that a few people use at the company called re: https://github.com/jordanlewis/re. I've worked on an experiment for a columnar execution engine for SQL queries, added some missing SQL builtin functions for Postgres compatibility, worked on performance issues, and fixed bugs. Recently, I started work on a component diagram of CockroachDB that uses D3 to render itself, but I haven't gotten very far with that yet.
Describe a typical Free Friday.
It's very common that I'll think of an idea during the week that might be a good one, but requires confirmation to move forward in that direction. Free Fridays are a perfect time to validate ideas like that. Sometimes these ideas end up being small, quick wins that I can knock out on Friday and get merged the next week, and sometimes they end up being more complex than what I can handle in a day. In that case, I'll show them to the team and see what they think we should do with the ideas.
I'm one of the rare few that actually likes to come into the office on Free Friday. I probably come in about 80% of the time. I enjoy the quiet and lack of meetings, and can use the time to really focus on engineering - something that I don't usually get to do in large chunks of contiguous time during the week, due to my role as a manager.
How does Free Friday support your long term goals?
Free Friday lets me keep some time reserved to focus on improving my engineering skills, learning about databases, and working on neglected corners of the product.