Julius Zerwick

My blog on software engineering & CS. Currently a software engineer at DigitalOcean.

Read this first

Failover Conf - First Conference Talk

On April 21, 2020, I gave my first conference talk as a software engineer! It was at Failover Conf, a virtual conference on building reliable software systems. Failover Conf was created and produced by Gremlin, who wanted to provide a virtual conference for people to present their talks at given the wave of conference cancelations due to COVID-19.

My talk was titled Improving a Distributed System Post-Incident and detailed my experience as a first time responder to a long running incident that occurred at DigitalOcean and shared some lessons that I learned from the incident. The video for my talk can be found here:

Improving a Distributed System Post-Incident

Continue reading →


Improving Your Iteration Speed

I’ve been reading The Effective Engineer by Edmond Lau and finished a chapter which I found very interesting. The chapter is titled Invest in Iteration Speed and the crux of the content is that effective engineers take the time to reflect on their iteration speed and how to improve it while working on problems or projects.

By iteration speed, we can mean any process which exhibits a cyclical nature in our work and speed at which we complete each cycle. Some processes can contain many steps and can take up more time than we like for each iteration which slows down our progress. Other processes are very streamlined and complete very quickly which allows us to complete each cycle, improve, and repeat at a more rapid pace.

As an example, let’s say that you’re debugging an issue in your code where you receive a request, do some processing with the request’s data, and return a response. But...

Continue reading →


Starting with Open Source

For many developers, contributing to open source is one of the most impactful parts of being a developer or in tech. The ability to contribute to high-impact projects which help thousands, even millions, of people build software systems is an amazing thing to be a part of. They also tell me that they’ve grown by leaps and bounds in their skills by working on open source projects.

As a developer who is early in my career, I’ve always had an urge to jump on the open source train and start making contributions. But my main hangup has always been the time it requires. For me, working 8+ hours at my day job as a developer at DigitalOcean is pretty tiring and it’s been difficult to balance adding open source to my schedule while also making time to recharge and relax. Additionally, I’ve found myself floundering a bit in finding which project to contribute to given the huge number of projects...

Continue reading →


git cherry-pick

Over the past 10 months working at DigitalOcean, I’ve come to learn more about git and how it can save me from my mistakes. This past week, I used git cherry-pick for the first time and wanted to share how you can use it as well.

While working on a ticket in a separate branch of my team’s project, I had to pause and jump back onto my master branch to debug some errors we were seeing in production. I proceeded to commit my changes, hop onto master, and resolve our issue. My mistake occurred when I dove back into my ticket work and somehow accidentally didn’t checkout to my separate branch. Always run git branch before picking up where you left off!

I finished up my work and was about to commit my changes when I realized my mistake and that I was still on the master branch. Before getting frustrated about how I was going to transfer my work to the correct branch, I thought to myself...

Continue reading →


Social Contracts in Learning

Recently, I’ve been thinking about how I approach my learning of new topics in software engineering and a big theme has been the use of social contracts. When I say social contract, I don’t mean the philosophical theory or model but rather the idea of an agreement for mutual benefit between an individual or group and the community as a whole.

In the most basic sense, the forms of social contract I’m talking about is when I put myself in situations in which I teach others something I’ve learned like a tech talk, presentation, or article. By making a commitment to put together material and talking points to help others learn something, I in turn force myself to learn the topic at a deeper level and explain it in simple words.

The power of this approach is two fold: for one it requires a more rigorous attempt to understand a topic, and second it puts me on a timeline. I think the first...

Continue reading →


Leveraging the Command Line for Increased Productivity

As working developers growing their career, we should always be seeking ways to improve our productivity and effectiveness. Many of us are drawn to the dazzling array of extensions, plugins, and third-party tools that claim to “boost our productivity”, but there is actually one area full of fertile ground for improvement that we all use everyday: the command line.

Nestled within the command line are a host of features and commands that can drastically improve how effectively we work, and in this article I’d like to highlight several that I’ve found to boost my productivity. I’ll also show you how I use them on a day-to-day basis with examples. Whether you’re a beginner just starting their career or a working developer with some experience, this article is for you.

I/O Redirection

We’ll start with directing the standard input and output of your terminal, which I found essential in...

Continue reading →


How I navigated the job hunt and landed my dream job

This article is about how I went through my job hunt for a full time position as a software engineer in New York City and ended up with my dream job. I had spent two years building my skills and had aspirations to work at a top tech company with a high bar for engineering excellence.

I knew this goal would not be easy to achieve, especially without a CS degree, barely having any network in New York City, and having to compete against engineers from top schools. It would be a long shot, and I was prepared for the long haul.

9 weeks later…

I’m ecstatic to say that I’ve accepted an offer from DigitalOcean to work as a Software Engineer II from their NYC HQ!

This success came after countless study sessions, mock interviews, hours of practice, and facing numerous challenges & rejections. But I kept my spirits up and came out the other end happier than I imagined possible.

How did you go

...

Continue reading →


A practical guide to containers

Containers have taken over the software world by storm — and for good reason.

They’ve proven vital for DevOps and deployment, and have a multitude of uses for developers. And this goes not only for large companies, but for independent developers as well. In fact, containers played a vital role in the development and deployment of our project SpaceCraft.

In this article, we’re going to give an introduction to containers and explain their core features. We’ll then showcase their uses in software development and cover some important topics regarding security and resource management. Along the way, we’ll give a peek into how containers were utilized in SpaceCraft. Let’s dive in!

What Is A Container?

So what exactly is a container?

At its core, a container can be described as a single unit of encapsulated software. It’s essentially a box in which you can place all of your project...

Continue reading →


Elevate Your Learning

In this article, I wanted to write about the changes I’ve made in my own ability to learn new subjects and material through my journey at Launch School. I think that it’s crucial for anyone in a knowledge-driven field to analyze how they learn and improve these skills, and that goes double for software developers.

Software development demands a near constant learning of new technologies and areas in order to stay sharp, stand on the forefront of technology, and remain hirable in the future. And thus it is vital that we not only learn new subjects deeply, but also improve our ability to learn more effectively.

Over the past 1.5 years of studying at Launch School, I’ve continually improved my learning process and revamped the techniques I use on a daily basis. I’ve gone through the Learning How to Learn course on Coursera and read multiple books that have influenced how I learn, which...

Continue reading →


Why You Need an Interview Script

There are few things as anxiety-inducing as being interviewed for a job or as an assessment over coursework. It goes beyond merely stressful and creates a host of physical reactions: sweaty palms, shaky legs, labored breathing, a queasy stomach, and much more. All while your performance will ultimately determine your potential grades, salary, and career opportunities.

It’s no wonder that our ability to solve problems and answer technical questions degrades substantially under these conditions! And yet, many people brush off these concerns and hold onto an illusion of superior competence while under trial by fire. With so much depending on our ability to perform under stress, we should be smart about setting ourselves up for success and create a process to reduce this mental degradation while under pressure to perform.

That is why you need an interview script. Having a prepared script...

Continue reading →