Zombie Zen

Ross's Blog

Apollo Client Caching

Posted at by Ross Light

Since I’ve started working at Clutter, I’ve grown to enjoy the Apollo React Client library. However, I’ve noticed that the client’s caching behavior can be difficult to understand and cause surprising issues, so I’ve decided to collect my findings into one easily digestible post. This post assumes a basic understanding of GraphQL.

The major hidden component of Apollo Client is the cache, which sits between every query and the backend server.

The major hidden component of Apollo Client is the cache, which sits between every query and the backend server.

Read more…

Introducing: My GraphQL Go Server

Posted at by Ross Light
GraphQL logo

I’m excited to share my hobby project from the last few months: a GraphQL server library for Go. While it doesn’t implement the whole spec and might not be ready for production, I think it’s in a useful enough state to share more broadly. I’ve tested this library out with some toy projects and the results have been promising: I’m able to quickly publish a Go struct as a GraphQL endpoint.

Check it out now by reading the docs and adding it to your project with:

go get zombiezen.com/go/graphql-server/graphql

Read more…

How Structure Affects Git's UX

Posted at by Ross Light

It’s always interesting to me to compare different approaches to solving the same problem. Git and Mercurial are two version control systems that came out at similar times, trying to address very similar requirements. Git came from a very low-level systems perspective, whereas Mercurial spent a lot of effort on its user experience. Despite what you might think, their data models are remarkably similar. It’s from this observation I started my side project — gg. I found myself greatly missing the experience of Mercurial, but I’ve resigned myself to the fact that Git is here to stay.

I came across a rather interesting challenge today while working on gg. I am trying to replicate the behavior of hg pull, and even though I’ve worked on gg for over a year now, I still haven’t reached a behavior that I’m satisfied with. I’ve finally realized why, and it boils down to a very subtle difference in the data models of the two systems.

Read more…

Moving to Clutter

Posted at by Ross Light
Clutter logo

July 19, 2019 will be my last day at Google. I will have worked at Google for 6 years, 3 months, and 11 days (even longer since I was an intern). After a few weeks hiatus, I will be joining Clutter to work on their storage and logistics services.

Read more…

The Design of Everyday Go APIs

Posted at by Ross Light

Frequently when people discuss what is a “good” Go library, they usually use terms like “idiomatic” or “the Go way”. These terms are imprecise and make it difficult to discuss the merits of different API designs. I recently re-read Don Norman’s The Design of Everyday Things and realized that the same principles of design discussed in the book can be used to evaluate the design of APIs.

Read more…

Creating Things Is Tough

Posted at by Ross Light

When I was mentoring a FIRST robotics team, the fundamental revelation I had was seeing how the robot the team built became a part of our identities. When we won a match, it was validation. When we lost a match, it was a reflection of our failures. Being a mentor gave me a level of detachment, but the students working on the robot did not have that luxury. For many, this was their outlet they took pride in. And losing gave that wretched inner voice (the voice of the bullying they had endured) hold to beat them down.

When I started working in the software industry, I soon came to realize that we are not that different (myself included). Even the terminology — team — evokes tribalism. Pitching a design to your team and having it fall flat feels much the same as losing. But often in industry, you don’t have the safety net of a mentor. You either have your previous experiences or you don’t. And there’s the pressure of financial stability. Fundamentally, this adds stress and hampers creativity. (Also open office plans, but I digress.) To me, that’s why I prioritize supporting my team above all else. The easy thing is to be critical of others; the right thing is to find how you can help them succeed. Creating something worthwhile usually requires vulnerability. Don’t exploit that: see it for the gift it is.

(Originally from a Twitter thread.)

Tumblr Flags Too Much

Posted at by Ross Light
Screenshot of a flagged Tumblr post for the account zombieetc. The content of the post is a scene from Bravest Warriors featuring Catbug.

As I’m shutting down my Tumblr, I took one last look through all my fandom blog posts. Not even my most wholesome fandom posts are safe from Tumblr’s new content policy. Good riddance.

No More Tumblr

Posted at by Ross Light

This is my first post to this blog in a long time, and it is with a fully new engine! zombiezen.com is now entirely hosted by Firebase Hosting and generated by Hugo.

When I first joined Tumblr, it was a very different blogging service than what it has grown into. And especially now that I am working in open source and wanting to post more regularly about more in-depth technical content, I want to have a platform that I can post to and not worry about my content going away. As such, I’ve also copied my content on Medium into this blog.

How I Get Things Done

Posted at by Ross Light

In this blog post, I’m to do a deep dive into the specific steps and tools that I used to achieve this new mindfulness. If you haven’t read my first blog post about Getting Things Done, you should take a look. I’m not recommending the tools here in any capacity other than from my own personal viewpoint: I’m not getting paid to promote these. I still recommend reading Getting Things Done by David Allen to understand the theory and reasoning for why to use particular tools, and adapt for your own circumstances.

Read more…