My semi-anonimized CV is available here. Please contact me for the "uncensored" one (and/or the html version or the source).
This page lists a few examples of my work I've been spending my free time on. The list focuses on larger projects, a lot of smallish tools and hardware modules are omitted from the list.
category | project |
---|---|
software | My favorite programming language is AWK. I maintain a
fork of mawk, called libmawk. It can be embedded in applications to
provide scripting facilities, similar to how python, tcl and other languages
are embedded.
project page |
software | The 3rd version of Plumb is a special shell that can run multiple
processes in parallel and connect them with pipes. It's the generalized version
of the usual shell pipeline, allowing the user to build a pipe network that
may contain loops. Plumb also features very low overhead filters that can
be inserted anywhere in the pipe network without running more processes. The
pipe network can be reconfigured on the fly, even by processes started from
within plumb. The project is built on top of libporty and is portable.
project page |
software | A group of smallish projects attempts to solve portability issues:
scconfig, libporty, libwharf. Scconfig is a ANSI C implementation
of ./configure that does not depend on M4 or other large-footprint external
tools. Libporty is a minimalistic portability lib (configured with
scconfig) that provides a common API to the file system, networking, date/time
and some other system-specific services. Libporty works the same way on Linux,
win32, and many BSD and proprietary UNIX variants. Libwharf is a higher level
API on top of libporty that deals with portability in an indirect manner: it
provides calls that are more convenient to use than lower level and/or less
portable standard ones. Scconfig can be used without libporty and libporty
can be used without libwharf.
scconfig libporty svn://repo.hu/libwharf/trunk |
software | Minetd is a minimalistic inetd implementation. It is very easy
to set it up, does not require root privileges and handles EOF and half-closed
sockets properly.
project page |
software | The repo.hu framework is an svn based automated build and release
system. It removes administration from the work-flow: developers can work
and commit without any extra actions for updating the web. If a commit
updates the web directory, the web page is updated transparently on the server;
if the commit changes the Debian changelog, the preconfigured build server(s)
will build and publish new binaries; if a new svn tag appears, a source release
is packed up automatically.
project summary |
programming contest | My favorite international programming contest is Challenge24.
After a few years of participating as a contestant (as a member of
team "puddingforce") we have been invited to joined the organizers. For 5
years between 2010 and 2014 we've spent most of our times between September and May with designing,
implementing, testing and documenting tasks for the problem set. I was also
participating in building the network, the server farm and random other
aspects of the event. My favorite fields were
designing and building the hardware tasks and the sound/image/signal processing
problems.
about the contest archives |
software, hardware related | full Linux support for mcp2200 (built on top of hidapi) - CLI tool
for configuring the device, controlling the GPIO and loading/dumping the
EEPROM. This project depends on avrfuse and works from a config file.
Mcp2200 is an rs232-usb gateway chip.
svn://repo.hu/projects/util/trunk/mcp2200hid |
firmware | It's tricky to find a good compromise between easy-to-reuse C code
and squeezing-out-the-last-bits-of-the-architecture hardcore assembly.
libctio attempts to achieve this by exploiting the optimizer in
gcc-avr, and a bit of macro wizardy. At the end, generic code is relocated
to specific GPIO pins and reconfigured for specific features in compile time,
without code generation. The result is usually as code-space-efficient as
a specific code designed for a given application, still reusable in
other setups. The lib currently features generic drivers for stepper motors,
seven segment displays, bitbanged rs232, AT/PS2 keyboard, CAS/RAS memory
addressing.
svn://repo.hu/projects/lib/trunk/libctio |
software, hardware related | Programming the fuse bits of AVR devices is not fun with hex numbers;
avrfuse is a small script that takes device specific fuse settings from
a text config file, calculates and programs the bits. It can also read the fuse
bits of a device and generate or update the config file.
svn://repo.hu/projects/util/trunk/avrfuse |
hardware, ch24 | Homemade laser cut CNC machine that operates on a ~350*350 mm area, positioning the 4 Watt IR semiconductor laser module at a ~0.05mm resolution. The key elements of the mechanism are extracted from old Epson dot matrix printers. The device features custom, modular electronics, multiple levels of safety features (since the beam is literally blinding). The dedicated firmware calibrates the device, gets commands over an RS232 line and calculates the timings to drive all the stepper motors and the output power of the beam. I most often cut paper with it, but it's possible to cut thin and dark plastic as well. I have a toolchain for Linux for designing the cutouts. |
hardware | cArVeR is an advanced version of the classic "bsd" programmer for AVR microcontrollers. It operates from the parallel port of a PC and allows switchless in-circuit programming even when the circuit uses the SPI pins. |
hardware | I debug my microcontroller projects with my stddbg device, which
is a two-wire "serial port" for any microcontroller. A special self-clocked
protocol that exploits a corner case of the usual bidirectional GPIO
implementation allows the device to use a single probe (gnd and line). The
device automatically detects the supply voltage level of the board being
debugged and converts the stream to RS232. The firmware of the debugged board
can use this facility to write logs/traces at low cost: losing only one
GPIO pin, a few 10 uS per character and about 50..100 bytes of code memory.
svn://repo.hu/openhw/projects/lab/stddbg |
open data | OpenStreetMap (or osm in short) is a collaborative effort to
build a world map that is free - map data reusable without the usual
commercial restrictions. Around crowded areas, osm is also more detailed
and more up to date than most commercial maps (including the "free" online
ones ran by large search engine companies). My contribution in the past few
years include:
statistics about my overall contribution |