The last heartbeat at Zed

This post is part of Series: Being a programmer again

Today was my last day at Zed Industries. I spent 5 months learning Rust and contributing to the Zed Editor.

I am grateful to Nathan, Max, and Antonio for letting me do this experiment. I am also grateful to the rest of the team for bearing with me 😅.

The original contract was for 6 months, but I decided to end it a month earlier to focus on what’s next. It was clear I wouldn’t be able to reach the experience needed to help the company within a 6 month period. We were hoping that wouldn’t be the case, but we all knew that was very likely to happen.

I came a long way since January, though. I have started understanding, writing, and—dare I say—liking Rust 😃.

I have opened 32 pull requests since January. Most were small contributions and bug fixes. Here are a few noteworthy highlights:

  • Add a newline above the current line and move cursor there
  • Add a terminal button to the status bar with a terminal count
  • Improve context menu position consistency when it pops up
  • Add a terminal icon to terminal tabs
  • Introduce Reveal in Finder
  • Remove contact from contract list
  • Create files passed as an argument to Zed CLI if they don’t exist

That’s not much, but remember I didn’t know anything about Rust and the codebase. I also had a 12 year gap from being a full time programmer. To make things even more difficult, I left programming at a higher level. Zed needs more low level stuff because of the nature of the product.

Although I would love to continue at Zed, I have to be pragmatic and move on.

Learnings and thoughts

  • Rust is difficult.
  • Zed has a lot of home built code that may change often and it’s not documented.
  • Home built code is Zed’s strength as it needs to be extremely fast.
  • Code that changes often and is not documented doesn’t go well with newbies.
  • Zed relies on pairing. It’s part of its DNA as a company.
  • Knowledge transfer happens during pairing.
  • Pairing is very cool for moving quickly.
  • Pairing is a great way to review pull requests.
  • I am in Europe. Most of the team is in the US.
  • Overlapping in order to pair meant I had to wait until later in my afternoons.
  • Ending often way into my evenings, with not much energy left during pairing.
  • The synchronous nature of pairing is not always compatible with how I work.
  • Context may get lost during pairing. Unless people write down summaries.
  • Having said that, I should have paired much, much, much more.
  • I consumed too many books, tutorials, and bootcamps.
  • Instead, I should have written more code as a way to learn.
  • Focusing on a small area of the editor might have been a better strategy.
  • It might have changed the outcome, although not guaranteed.
  • Rust is difficult. (duplicate on purpose)
  • Once you understand Rust and its intricacies, you love it.
  • Rust made me appreciate Elixir more.
  • Zed Industries is the 6th company I’ve worked with in my career.
  • All companies have more or less similar challenges and struggles.
  • Tooling is overrated. Behavior and teamwork matters more.
  • Tooling may only help if everyone is on the same page.
  • You always need a simpler tool, trust me.
  • You always need fewer tools.
  • I don’t regret the time I have spent at Zed Industries.
  • The team at Zed is very smart. Zed, the editor, has a bright future.
  • The founders at Zed are very cool folks, with a great vision for the editor.
  • I am leaving with the best memories, learnings, and impressions.
  • I love creating again, and I can’t wait to find my niche and show what I can do.
  • I am more excited than ever for the possibilities that lie ahead.

What’s next

I have started thinking about what I should focus on next. I love Elixir and I want to go back to where I left things. I also love the idea of building a game. I have to continue making a living, so, I need to figure out how that will happen. The idea of going solo attracts me, but I need to research things a bit.

Games

I want to build my first game as an indie programmer. I am going to use DragonRuby, and it’s going to be a 2D, possibly having retro influences.

I also want to build a multiplayer game using Elixir, as a proof of concept. I want to witness how it holds up as advertised of being capable of handling numerous concurrent connections without sweating.

I will continue blogging about my journey here, of course. I am also building in public on Twitter if you would like to follow me.


What are you up to Petros?

Working as a software writer during the day. Making games during the night. Streaming and vlogging. Building Calm.jobs on the far side. Check what I am doing now and talk to me.

Join 1,873 other subscribers

Responses

  1. iosif Avatar

    since you loved rust and love games can you combine them?

    1. Petros Avatar

      I could, but I also love Ruby and the simplicity of it. DragonRuby spits out optimize native executables, so I am not sure what I’d gain by using Rust in this case. Don’t get me wrong, I like Rust. But through my journey of creating something, I’d rather focus on the creative part rather than fighting the compiler if you know what I mean 😅.

Leave a Reply

Discover more from Petros Amoiridis

Subscribe now to keep reading and get access to the full archive.

Continue reading