You need to be logged in to mark episodes as watched. Log in or sign up.
Season 7
We build a small compiler out of the standard components: a tokenizer, a parser, and a code generator. By the end, we successfully compile some code in our language, producing JavaScript
.. show full overview
We build a small compiler out of the standard components: a tokenizer, a parser, and a code generator. By the end, we successfully compile some code in our language, producing JavaScript output that we can execute. Most compilers are highly optimized for speed, but ours will be optimized for easy readability and understanding.
We build a self-contained data compressor and decompressor from scratch. The compression scheme is based on Huffman coding, which is used in gzip, zip, and many other compression
.. show full overview
We build a self-contained data compressor and decompressor from scratch. The compression scheme is based on Huffman coding, which is used in gzip, zip, and many other compression formats. No prior knowledge of Huffman coding or data compression is necessary. The source code, including helper files not shown in the screencast, is available at https://github.com/garybernhardt/destroy-all-software-extras/tree/master/das-0102-data-compressor-from-scratch
We build a text editor from scratch. It includes basic text editing: moving the cursor, typing, backspacing, etc., as well as undo. However, we leave out some of the less-interesting bits, like saving edited text to files.
We build a text editor from scratch. It includes basic text editing: moving the cursor, typing, backspacing, etc., as well as undo. However, we leave out some of the less-interesting bits, like saving edited text to files.
We build a shell in the style of the Bourne shell, Bash, zsh, etc. It supports (1) running commands with arbitrarily many arguments, (2) quoting those arguments, and (3) combining the
.. show full overview
We build a shell in the style of the Bourne shell, Bash, zsh, etc. It supports (1) running commands with arbitrarily many arguments, (2) quoting those arguments, and (3) combining the commands into arbitrarily long pipelines where the output of one command becomes the input of the next. This requires writing a parser, which we do with Parslet, a PEG parser library.
We build an HTTP server that can serve static files from disk, as well as dynamic applications in the style of cgi-bin. The network server component is built using socket system calls
.. show full overview
We build an HTTP server that can serve static files from disk, as well as dynamic applications in the style of cgi-bin. The network server component is built using socket system calls (socket, setsockopt, bind, listen, and accept), rather than using the pre-made TCP servers available in the Ruby standard library.
We build the malloc() and free() functions from scratch, seeing how memory allocation actually works. This screencast is done entirely in C, but it's OK if you don't know C already;
.. show full overview
We build the malloc() and free() functions from scratch, seeing how memory allocation actually works. This screencast is done entirely in C, but it's OK if you don't know C already; we'll introduce the necessary ideas as we go.
(Nitpicky note: the comment in this screencast about pointers and arrays being "the same" will ruffle experienced C programmers' feathers. The C language does distinguish between arrays and pointers, so the comment is strictly wrong. However, thinking of arrays as being pointers will help new C programmers to understand what's actually happening: arrays are laid out directly in memory, with no extra metadata added, so the address of the array itself is also the address of the first element of the array. Simplifying this to "arrays are lies; they're really just pointers" is easier to grasp for someone who's new to C.)
If there are missing episodes or banners (and they exist on TheTVDB) you can request an automatic full show update:
Request show update
Update requested