Blockcode: A Visual Programming Toolkit. A well-done block language eliminates syntax errors, visually displays available components, and allows localization.
A Continuous Integration System. A dedicated system used to test new code.
Clustering by Consensus. A network protocol designed to support reliable distributed computation.
Contingent: A Fully Dynamic Build System. The problem of dynamic
cross-referencing, e.g., in text documents, is handled poorly by most build
system. Rehearse the classic solution and data structures used to solve the
make problem, and extend that solution dramatically to a far more demanding
domain.
A Web Crawler with asyncio Coroutines. An async event loop
with callbacks that is every efficient but not extensible. Demonstration that
Python coroutines are efficient and extensible. Using the fully-featured
coroutines from Python’s asyncio library and coordinating them using an async
queue.
Dagoba: An In-Memory Graph Database. A graph in the sense of a set of vertices and a set of edges. A database in the sense of putting data in it and getting data back out of it.
DBDB: Dog Bed Database. A Python library that implements a simple key/value database. Aims to preserve data in the face of computer crashes and error conditions. Avoids holding all data in RAM at once so you can store more data than you have RAM.
An Event-Driven Web Framework. Issues with using HTTP to build interactions, and then a web framework in Common Lisp that allows us to solve similar problems in the future.
A Flow Shop Scheduler. An optimization problem in which we must determine the processing time for various tasks in a job in order to schedule the tasks to minimize the total time it takes to complete the job. Implement a solver that uses the local search technique to find a solution that is “pretty good” when finding the best solution isn’t possible.
An Archaeology-Inspired Database. How a change in a common perspective affects the design and implementation of a database.
Making Your Own Image Filters. Details about Processing, color spaces, decomposing and image into pixels and manipulating them, and unit testing something that wasn’t designed with testing in mind.
Byterun: A Python Interpreter Written in Python. Understanding Byterun will help you understand interpreters in general and the CPython interpreter in particular.
A 3D Modeller. All Computer-Aided Design (CAD) tools need a data structure to represent the design, the ability to display it to the screen, and a method to interact with the design. Let’s do that in Python.
A Simple Object Model. The implementation of a series of idealized and simplified object models starting from classical ones like Smalltalk’s to modern ones like Python’s.
Optical Character Recognition. A working example of a simple OCR system that recognizes numerical digits using an Artificial Neural Network (ANN).
A Pedometer in the Real World. Build a basic pedometer that allows us to count steps. An example of a problem that looks straightforward but gets tangled very quickly in the real world.
The Same-Origin Policy. SOP controls when scripts running in a browser can communicate with one another. Why is SOP necessary? How is the behavior of a web application affected by the SOP? What are different mechanisms for bypassing SOP and their implications?
A Rejection Sampler. Sampling means generating random values from some probability distribution. A simple example of how to sample random items in a computer game.
Web Spreadsheet. How many features can a web application offer in 99 lines with AngularJS?
Static Analysis. Deciding what you want to check for. Deciding how exactly to check for it. Implementation details. Targets the Julia language.
A Template Engine. A template engine for generating HTML to be served to the web browser.
A Simple Web Server. How web servers work. How to create software systems that don’t need to be rewritten in order to add new features.