Spaced repetition and practice

How do we become fluent in skills quickly? How can we retain that knowledge with the minimum amount of effort?

What makes a good interface?

In this post we begin to tackle the question: What makes a good interface? We do this in the context of Netpowder and by using a specific example with before/after screenshots.

Netpowder, a mini-server in the browser

The last few weeks I have been working on a little project called Netpowder, a mini-server in the browser. In this post I will give some technical background and give a short demonstration of what it is.

Grok LOC?

This is the seventh post in my series on Grokking xv6. In this post we will look at how I tested one of my original hypothesis starting out: understanding every single line of code.

A short overview of the file system

This is the sixth post in my series on Grokking xv6. In this post we will give a brief overview of the xv6 file system, with special focus on the buffer cache layer.

Locks and concurrency

This is the fifth post in my series on Grokking xv6. We look at concurrent processes, what locks are and how they can used, and finally we look at how locks are implemented in xv6.

No Computer

I can’t remember the last time I spent more than a few days away from the computer. Last week I went on vacation and decided to take the opportunity to do an experiment in being offline.

Page tables and virtual memory

This is the fourth post in my series on Grokking xv6. We look at page tables, virtual memory and how lazy page allocation works.

What's on the stack?

This is the third post in my series on Grokking xv6. We will use GDB to understand how the stack works in detail. At the end of the post there’s a video where we trace a system call from user space to kernel space and back.

What is a shell and how does it work?

This post is part of my ongoing experiment in grokking xv6. In it I will teach you what a shell is and how it works.

Grokking xv6

This is my first post in a series on grokking xv6, a simple Unix-like teaching operating-system. To grok something means to understand it intuitively or empathetically.

Writing A Lisp Interpreter

I’ve always really liked Lisp as a programming language, but I’ve yet to write an interpreter for the language. This week I decided to change that.

Instadoc - quick access to documentation

If you program in multiple languages, you probably don’t know every language’s core functions and standard library by heart. Being able to look up documentation and source code quickly is vital for staying in the flow. Here’s a test: can you look up your language’s documentation in less than 10 seconds?

Nand to Tetris 2

This post is the second part of our Nand to Tetris mental model diffing series. This week we look at machine language, computer architecture, and assemblers.

Nand to Tetris 1, with Dan Luu

In the last few weeks I’ve been working my way through the excellent book Elements of Computing Systems - building a modern computer from first principles as part of the equally excellent Nand to Tetris MOOC.

How to Follow pmarca on Twitter

It started with a question: how do you follow @pmarca on Twitter? @pmarca is Marc Andreessen, investor and cofounder of Netscape. Averaging 100 tweets a day, he is hard to keep up with.

Law Of The Instrument

It’s tempting to solve the problem you already know how to solve, as opposed to the problem that matters. This is true even if you are aware of it.

The Watsi Experiment

Along with Wikipedia, Watsi is probably one of the best uses of the Internet I’ve seen.