Hello Friend! We’re looking for a systems engineer to help push CodePen’s editor capabilities forward. The applicant must be talented, dedicated and have a strong background in Docker and Ruby, with Golang as a plus. The candidate must be willing to work remotely (or on-site in Bend, Oregon) with a small team. Is that you?
CodePen offers a lot concerning team, product, flexibility, relaxed work environment, benefits, and interesting technical problems to solve.
We’re a small team with a big love for our community. The 7 of us support and push each other forward. We’re proud of the work we do, and we’re close-knit and happy. Politics are non-existent, and our team is diverse in experience and background.
We support 1.5m CodePen users who’ve created over 15m Pens. Our users are creative, excited, and supportive. No trolls here.
Relaxed Work Environment
While we take our role seriously, we’re not building banking software, so the pressure is pretty low. Our investors are proud that we’ve reached profitability, and we’re not pushed to raise another round, so 40-45 hours a week are the norm. As parents, we accommodate and understand family situations and are flexible to allow you to work in a way that supports your life. In other words, 60 hour weeks are not happening.
We all work remotely, and in the time zone we choose. Our team is in Australia, Oregon, Illinois, Florida, and Virginia. We build the organization around a “remote-first” culture and have worked this way for the last five years. We recently established a sweet office in Bend, Oregon if you’d like to work in a mountain town with great snowboarding! But, with only two of us here, this is not a power center or central office. Your location is your choice.
We have great insurance, unlimited vacation, and a gym benefit so you stay healthy. We’re in this for the experience of working on our own terms. As a member of the early team, you’ll get a significant amount of equity.
Interesting Tech Problems
This is where you, the systems engineer, would truly shine. We have tons of ideas for where you’d fit in.
The Pen Editor
The Pen Editor is the heart of what we do at CodePen. We have a dream of making it much better and could use your help. Right now, users write HTML/CSS/JS in the browser, and our back-end systems run preprocessors like Sass/Babel/Typescript/Markdown on Ruby/Node/Lambda. You would help us design a system that would allow CodePen to process back-end languages as well.
The Project Editor
The Project Editor is another area we’d love to improve vastly. Right now the editor fakes a file system in the browser, and on the back end, each user gets a Docker container which mounts an Amazon EFS volume inside of it. We write to EFS and run gulp/webpack over the files to produce static output, which we serve via nginx on different hosts also mounting EFS.
We’re hitting performance bottlenecks with EFS and we’d love to blue-sky another way to handle this because EFS is simply too slow. Your job would be to investigate other disk solutions like NFS, Gluster, or others to handle our current editor problems.
But that’s not all. Just like the Pen Editor, we also want to allow users to run a Node server alongside their front-end code. This comes with a set of challenges around running untrusted code that you’ll be prepared to secure.
A Local Editor
We have dreams of making an offline, Electron version of CodePen. It’d be amazing to allow our users to have trouble-free editing experience on their desktop with the option to push their web assets to the CodePen community. Can we embed a container solution inside a desktop app? We’d like you to investigate and find out.
Modernize our Current Stack
The CodePen stack runs about 80 nodes right now. All services are in Docker, but because CodePen has been around longer than orchestration frameworks, some services still start using traditional
docker run commands, some are on Docker Swarm Classic, and some on 17.05 new-style swarms. You would design the system from scratch, moving everything into Swarm or Kubernetes. Although our domain knowledge is in Swarm, we’re open to strong arguments for the best system, not the one we’re on because it was the front-runner we started. Maybe if we perfect this in our current AWS VPC, we could forklift the system to GCP?
We'd like to make it clear that while web development is a skill we'd expect you to be familiar with, this is a traditional DevOps role. There will be a day where we post more full-stack developer jobs, but at the moment we're seeking someone with strong container and operational skills. Don't apply unless you know your way around containers and the various orchestration frameworks, Linux, networking, AWS, etc.
Summary and How To Apply
We’re looking for someone who’s smart, fun, and capable to join our team. You’d have tons of autonomy and huge levers to pull. If you’re interested, please reach out to email@example.com.