xv6 docker

November 15, 2017

A container system integrated into MIT’s OS xv6. The application allows users to create containers running on virtual consoles, framing environments for various applications

Aside from the descriptive messages, this was one of my first projects reading a large code base and adding a core functionality. Here are some of my thoughts on the project:

1) Multiple design changes had to be made to support file isolation. Each feature prior to the changes triggered more red flags than my ex-girlfriend.

2) Passing kernel entries became more of a hassle than initially thought, and creating user/kernel separation proved to be a recurring theme this project.

3) Reading code is way more difficult than writing. I’ve read that the single worse mistake any sofware company can make is rewriting their code from scratch. I definitely have thought about that many times… Especially during this project.

Second off, I never realized the importance of not jumping into code before thinking ahead before. It’s too didactic, so I won’t bore you with details. But one thing was for certain though: I did not plan well for this project at all. It always comes with a general idea with a couple inspirations sprinkled here and there only to realize the brilliant idea is a huge design flaw, blocking the real issue underneath. By jumping in, I set back the project by a few important days and also caused me to rip my hair out trying to make the inspiration work.

Fast forward and it gets to another road block. And another. And another… Repeat and repeat and you realize you’ve been banging your head against the wall for hours of debugging to find out your ego has gotten in the way of the truth: your design sucks.

Frustrating project, but a rewarding one with a valuable lesson.

Take a look at the project if you want: xv6-docker


discord

github

PGP

coffee

Sup

Software engineer @ LitePoint.