Protothreads are extremely lightweight stackless threads designed for severely memory constrained systems such as deeply embedded systems or sensor network nodes. Protothreads provides linear code execution for event-driven systems implemented in C. Protothreads can be used with or without an underlying operating system.

uIP (micro-IP) - now part of Contiki (see below)

uIP is the worlds smallest full TCP/IP stack. Intended for tiny microcontroller systems where code size and RAM are severly constrained, uIP only requires 4-5 kilobytes of code space and a few hundred bytes of RAM. uIP has been ported to a wide range of systems and has found its way into many commercial products.


Contiki is a tiny, highly portable, operating system for small devices. Includes full TCP/IP networking through uIP, a graphical (GUI) subsystem, VNC server, world's smallest web browser, etc. Ported to a large number of architectures.

lwIP (lightweight IP)

lwIP is a small TCP/IP implementation for embedded systems. lwIP is larger than uIP, but provides better throughput. lwIP was initially written by me but is now developed by a group of developers distributed world-wide. lwIP is used in many commercial products.

twIP - an IP Stack in a Tweet

twIP is a really, really tiny and bare-bones IP stack, written to fit in a Twitter message. In 128 bytes of source code, the stack does nothing more than answer to IPv4 pings.

uVNC (micro-VNC)

uVNC is a small (most probably the world's smallest) VNC server for 8-bit microcontrollers. uVNC is now part of Contiki.


Miniweb is a proof of concept that shows that it is possible to implement a TCP/IP stack and a web server using only around 30 bytes of RAM.


phpstack is the only TCP/IP stack and web server ever written in the PHP scripting language. It is a quick and dirty hack written in about 3 hours and is not intended for actual use.


A really tiny BASIC interpreter, written in a few hours for the fun of it.

Other stuff

The Final Ethernet

As a hobby project, Peter Eliasson and I built an Ethernet interface for the Commodore 64 which we called "The Final Ethernet". To demonstrate our hardware, I wrote a streaming audio server and web server running on the Commodore 64, on top of uIP. The streaming audio server was compatible with RealAudio and streamed 1-bit real-time samples from the Commodore 64 cassette player over the Internet, directly from the C64. After being slashdotted, the demo server served 170000 web pages to nearly 50000 visitors during its first week on-line.


I once made a really simple assembler for 6502, which was used together with my (unfinished and unreleased but working) 6502 C compiler and experimental 6502 operating system I wrote as a hobby project during my first year of undergraduate studies.