Hardware and software corner
I strongly believe in open-source, hence all my private projects are released as a source code. As I use
GNU/Linux as my main operating system, most of these programs are designed to run on Linux or are portable
between variety of UNIX systems. My projects revolve around electronics and programming, often combining
both of these worlds. Most of them are written in C or C++.
news.chmurka.net: My NNTP server (2004)
A site about my NNTP server, providing free Usenet access for Polish users since 2004. Site is in Polish.
Below you can find list of exported repositories on git.chmurka.net Git server.
These repositories contain my (Adam Wysocki)
various programs and other work, with approximate date in parenthesis. To clone a repository,
install Git and use:
git clone git://git.chmurka.net/<repository name>. Note that web access
to repositories is not supported. Hyperlinks below will direct you to the git:// server that speaks
Git protocol, not http.
For licensing, please contact me directly. If you find these programs
useful, you can consider sending donation to my DogeCoin address:
ekg: Experimental Gadu-Gadu Client (2001)
Open Gadu-Gadu client for UNIX systems. Open-source project started on 25 August 2001 by Wojtek Kaniewski that contains
many contributions from many different people. I am contributing to the project since 17 November 2004. On 5 April 2006 I became the lead developer. More information
(in Polish) can be found on project webpage: http://ekg.chmurka.net/.
owx: Open Wouxun (2010)
A free, portable, open-source, command-line utility designed to program Wouxun dual-banders under Linux and other modern UNIX operating systems. Project website: http://owx.chmurka.net.
mdb: MD5 Database (2015)
Creates and maintains database of MD5 sums of files in given directory and subdirectories and automatically prints all duplicates. Updates database when file sizes change or files get deleted or moved.
voxrec: Vox Recorder (2010)
Linux sound recording utility, activated by the signal amplitude (VOX function). When signal is recognized, it writes last six seconds (before recognizing the signal) and starts recording.
When signal amplitude falls below threshold and is below threshold for the next twelve seconds, it stops recording. Threshold is set to 10%, but all constants can be changed in config.h file.
See README before using.
theremin: Theremin emulator (2010)
Theremin instrument emulator for X11. Theremin is a musical instrument that can be played by simply moving hands. This emulator
displays a window in which mouse movement will control volume and pitch of the sine wave played - horizontal movements alter pitch and vertical movements alter volume. It needs g++, libX11, libpthread and
alsa to compile.
tinystumbler: Wi-Fi stumbler for NetBSD (2006)
Tiny wireless network stumbler for NetBSD, developed for NetBSD/hpcsh (Jornada 680/690) platform, but should run on other platforms as well, and after include file
adjustment probably also under Linux. It logs found wifi networks to a hardcoded file /home/gophi/tinystumbler.log (change in log.h). It also contains a tiny ANSI
terminal handling class, which might be useful alone. Written in C++.
hpcbeep: Jornada beeper (2007)
A tiny NetBSD program that can be used to make sounds using Jornada 680 and 690 speaker. It was written as a testing program before developing a sound driver in NetBSD kernel, but it has been abandoned.
softmirror: Raytracer with mirror support (2008)
Simple 3D renderer with mirror support. Example scene, rendered by it: softmirror.jpg. It is so small that it should be in misc repository, but as
it contains big (300kB) tile files, it has been put in its own repository.
dos: Programs running under MS-DOS
Various programs running under MS-DOS, should probably run under DOSEMU too.
fpu/ (2004) - a 3D engine, running in text-mode and written in assembly language to demonstrate arithmetic coprocessor capabilities.
Uses simplified version of ray tracing algorithm. Compiled using Netwide Assembler. Executable version: fpu.zip.
diskplay.asm (2003) - utility to play melodies on a floppy disk drive, using seek motor as a speaker. After inserting a diskette into drive it plays
Alphaville - Big In Japan melody by issuing appropriate seek commands through BIOS. Compiled using Netwide Assembler. Executable version: diskplay.zip.
editpal/ (2004) - 256-color palette editor. Runs in 13h video mode (320x200) and allows edit operations on a video palette. It also has a copy-paste
capabilities, undo function and a function to create smooth transitions between different colors, spanning multiple palette registers. Written in assembly language,
compiled using Netwide Assembler. Executable version: editpal.zip.
mlotki/ (2005) - an unfinished game that renders all objects and animations algorithmically. Watcom C. Executable version: mlotki.zip.
fdrw/ (2003) - utilities for reading and writing raw diskette image. Netwide Assembler. Executable version: fdrw.zip.
rgbsym32/ (2005) - RGB snooping simulator. Watcom C, needs DOS4GW. Executable version: rgbsym32.zip.
patches: Various patches
Patches for various programs.
safestrap/ (2014) - patches for Android safestrap, allowing it to mount system as loop, but /data and /cache as physical partitions in order to be able to
trim /data and /cache filesystems and speed up Android. See http://wp.chmurka.net/?p=479 for details.
vold-discard.patch (2014) - patch for vold (Android volume daemon), allowing it to mount memory cards with discard flag in order to speed up Android.
See http://wp.chmurka.net/?p=491 for details and vold-discard.zip for binary package.
bash-4.1-hist-syslog.patch (2011) - patch for bash allowing logging of every command entered by user into syslog. Idea and first version by
wordpress-2.5-comment-nospam.patch (2008) - a simple patch that catches and eliminates almost all spam comments from a WordPress blog. Idea by
WaLLacE. Of course wp-comments-post.php should be edited by substituting
your e-mail address instead of mine.
ircd-hybrid-7.2.2-gophi.patch (2006) - patch for Hybrid IRCd making user automatically join configured channel after connecting and disabling other
channels. This patch also allows to automatically op users connecting from specified IP addresses after they join.
ircd-hybrid-7.1.0-gophi.patch (2006) - as above, but for earlier Hybrid IRCd version. It also transcodes polish characters from Windows-1250 to ISO-8859-2.
ph.patch (2006) - patch for picohttpd by wojtekka - a tiny http server written in assembly
language. This patch adds forking to the background to this server.
irssi-0.8.10-ctcp-version-nick.patch (2006) - patch for irssi enabling adding ctcp originator nick to /set ctcp_version_reply string. Originator nick
should be denoted as a percent sign.
linux-2.6.14-arcanix.patch (2005) - patch for Linux kernel used in Arcanix diagnostic system, developed for Arcabit. Adds dev.genhd.genhd_show_sys_ind
sysctl to show partition type in /proc/partitions, which eased writing an userland resource configurator. Arcanix is a closed-source system, but GPL requires providing
linux-2.4.31-gophi.patch (2005) - patch for Linux kernel used by me on one server. Fixes kernel image linking on older gcc, enlarges entropy pool in
pseudorandom number generator, increases lowest process number after system runs out of PIDs from 300 to 1000, blocks users from seeing processes that do not belong
to them, adds /bin/bash to the list of supported inits, adds some information to the stuff printed during kernel panic and blocks Ethernet transmit timeout message
from being displayed on the console.
friends-2.4.9.patch (2004) - patch for friends script by shasta, adding revenge_mode 4 (deop and kick-ban user without setting +D flag).
misc: Miscellaneous programs
Programs that are too small to be put in their own repository. They consist of:
progress.c (2007) - simple stdin/stdout filter that displays data transfer progress (how much and how fast has been transferred so far). Needs pthreads.
fpstat.c (2008) - a Linux tool that displays file processing progress. Useful when a program reads data from a large file and progress is not known. It needs access to /proc filesystem and Linux kernel 2.6.25 or newer.
pal.c (2006) - a Linux tool for x86 and VGA cards that can be used to grab and update text-mode palette registers and redefine 16 standard colors. Needs root access (or CAP_SYS_RAWIO capability). Probably unusable in the modern framebuffer / X11 world.
sortlog.cpp (2012) - utility for sorting Apache combined log. Loads the logfile and prints each resource access from the oldest access to the newest. Can be used to delete resources that are no longer being accessed.
turbo.c (2007) - Linux process booster. Can launch another process using a SCHED_FIFO scheduler, with maximum priority and with swapping disabled.
rev.c (2007) - utility that can reverse bytes in the file, so last byte becomes first etc. Can be used, for example, to create a reverse speech file. Cannot be used with streams, as both files (input and output) are mapped in memory (mmap).
follow.c (2007) - utility that follows the file that is being updated and if file size increases, sends difference to another program. It can be used for example to stream a file that is being downloaded into media player. Something like tail -f, but for binary data.
soundanl.c (2008) - console sound analyzer. Displays maximum signal peak power, overdrive factor (how many samples are in clipping range) and average DC bias of signal. Example usage: rec -t raw -r 44100 -c 2 -s w -f s - 2>/dev/null | tee sound.raw | soundanl.
guardrun.cpp (2011) - utility that can run another program and display its exit status (if exited normally, exit signal etc).
bintoc.c (2004) - utility to convert binary files into C/C++ array format. First arguments sets indentation tab count. Binary data is fed into stdin and array is output on stdout.
socks.c (2007) - tunnel through anonymous (non-authenticated) SOCKS 5 proxy that allows many simultaneous connections.
socksfwd.c (2007) - simple, anonymous (non-authenticated) SOCKS 5 proxy. Something similar to ssh -D.
hist2irc.cpp (2013) - utility that converts EKG history file (in CSV format) to IRC or Tumblr format. Before compiling see macrodefinitions.
screenaction.c (2004) - utility to run various commands after attaching and detaching screen session. Can be used for example to set away or back status in EKG, but is highly flexible.
randcat.c (2006) - something like cat, but concatenation order is randomized. Files to concatenate can be given on command line on fed to stdin. When killed with SIGHUP, will move to next file. There is also option for recursive directory traversal and continuous concatenation. It was originally used to stream mp3 files over ssh.
mem.c (2006) - utility to manipulate physical memory on Unix systems. It was used to test and debug sound support for NetBSD/hpcsh, as SH3 architecture has registers mapped in physical memory space.
phoniter.cpp (2016) - program to iterate through all possible texts from a given sequence of digits on a phone keypad.
mkpls.c (2006) - utility to create playlists for Winamp and xmms, created so it is easy to stream mp3 files over http. Example: find . -iname '*.mp3' | mkpls http://example.net/directory > playlist.pls.
ws.c (2005) - utility to create statistics of words used in a given file. Can work as a filter (stdin/stdout), handles six different sorting methods, can limit displayed word count, can align output to the longest displayed word, allows editing word separator set, properly handles input with CR and CRLF line endings, handles extended regular expressions and separators in awk -F style, handles output append mode and can be case insensitive.
ipcalc4.c (2004) - IPv4 calculator. Allows conversion of dotted-quad (127.0.0.1), decimal (2130706433) and hexadecimal (7F000001) formats.
quotefix.c (2004) - utility to convert quotation broken by different newsreaders into unified, correct format. Can be used as a filter.
randmux.c (2004) - simple and not cryptographically-secure entrophy multiplier. Can be used to speed up operations that rely on a slow entropy source (slow /dev/urandom, for example 150 kB/s on Pentium 150 can be boosted to 4.5 MB/s). DO NOT USE for cryptography!
reaper.c (2008) - utility that searches for different headers in a stream. Was written to extract unfragmented .jpg and .cr2 (Canon RAW) files from a formatted CompactFlash card, but can be altered to support different file headers.
dumper.c (2008) - companion utility for reaper.c. Can be used to copy data starting at given byte offset. Something like dd bs=1 skip=n, but copies data using blocks, not bytes.
loggit.c (2008) - utility that can show contents of the file added since last utility invocation (for example to send logs from cron).
fdstat.c (2004) - small utility that lists processes with files open on a given file system, in a given directory etc. Do not use, I wrote it only because I forgot lsof utility name.
rot.c (2006) - utility to transcode text by shifting letters by given offset. Offset can be also incremented or decremented on a per-character basis.
unrot.c (2008) - utility to automatically find rotation parameters used in rot.c. It uses a simple vowel analysis and works best in longer (several characters) texts.
mread.c (2004) - utility to fetch articles by Message-ID from a NNTP server. Supports searching multiple servers and quoted-printable conversion to 8-bit.
roster.c (2004) - utility to convert Jabber Gadu-Gadu Transport roster so it can be pasted directly to the XML console.
respawn.c (2004) - simple process respawner. It runs a program and if it exits or crashes, it launches it once again, but no faster than five seconds since last launch.
tcptop.c (2004) - utility to show how much bandwidth is used by different Linux users. It tracks only TCP over IPv4 connections on Ethernet interfaces.
hamxtract.c (2004) - utility that can be used to import newsgroups from Hamster to inn.
tcptrace.c (2003) - utility to show all TCP connections with their owners (users who initiated or accepted the connection).
nopl.pl (2005) - irssi script to remove polish characters from received messages on IRC.
bom.c (2004) - utility to extract Bill Of Materials from Protel AutoTrax 1.61 PCB file 4. It reads PCB file from stdin and outputs bill of materials in format: designator (pattern): comment, for example: R1 (AXIAL0.4): 100k. It is useful to pipe its output to sort utility.
redesignator.cpp (2011) - utility to assign new designators to components in a PCB file. Useful when one board has been created by pasting several boards into one. For example, designators R2, R2, R4, R3, R5 will be changed to R1, R2, R3, R4 and R5. It works as a filter - input file is read on stdin, output file is written to stdout and changes in a human-readable form are listed on stderr.
ruler.pcb (2004) - a ruler scaled in mils (1000 mils = 2.54 mm) in AutoTrax 1.61 format.
combat.asm (2005) - a file that can be launched either as a .COM or .BAT file. Program displays appropriate message after being run either as a .COM or .BAT. Written in Netwide Assembler.
emotka.txt (2002) - program in x86 machine language that displays an emoticon on the screen. Before displaying this emoticon, program makes several arithmetic and logic transformations on its own code. First version in x86 machine language, second version rewritten in assembly language.
l33tscreen.c (2003) - a simple utility that takes specified process id (PID) from the system (hardcoded to 1234) and runs screen with this PID.
rw.c (2004) - module for Linux kernel 2.4 that swaps read() and write() system calls. You won't need it.
wyrazy.c (2004) - utility to transcode meaningful sentences into meaningless.
mieszacz.c (2004) - utility to mix letters in words so words are still readable, but internet search engines will not index them properly.
ircproxy.c (2004) - simple IRC proxy that authorizes users using IP and ident response.
mproxy.c (2004) - like ircproxy.c, but handles multiple simultaneous connections.
dhb.c (2006) - utility to convert between decimal, hexadecimal and binary number representation.
dhb.bas (2005) - like dhb.c, but written in Mobile Basic 1.2 (running with MIDP/1.0) for Nokia 3510i (later used also on Nokia 6020 and Nokia 6230i). In the current smartphone era it's not useful anymore.
kextract.c (2008) - utility to extract files contained in .grp archives. These archives contain resources used by games built around BUILD engine (Duke Nukem 3D, Redneck Rampage, Shadow Warrior etc).
rotassist/ (2008) - utility to assist in rotating images from the command line (for example with ImageShack). It takes an image size (or reference point for rotation) and coordinates for two points on a line that
is rotated, but should be straight. Optionally it can also take a hint whether this line should be horizontal or vertical. It outputs the rotation angle in degrees (or radians). There is also an online version available at
simplehist/ (2008) - simple luminance histogram generator. It takes an image in a 24-bit PPM format on its stdin and outputs its luminance histogram in the same format to stdout. It's useful for evaluation of
contrast and exposure of a photo developed using dcraw. Factors for luminance averaging: red 30%, green 59%, blue 11%.
ghist/ (2007) - another histogram generator for PPM files. It generates histograms for all channels separately, one averaged histogram and one luminance histogram. It also creates some statistics and calculates
suggested gamma correction factor (however this functionality does not always work as expected). It needs libx11. Useful for working with dcraw.
minispool/ (2004) - tiny spooler for sending articles to other nntp servers using mode reader directly from inn newsfeeds file.
efnet-pl/ (2006) - proxy for mIRC converting Windows-1250 characters to ISO-8859-2. It also contains an ident server and is able to automatically detect user name (if it is needed, it will delay connection to the
IRC server until this information is received from mIRC). It is highly flexible, can be configured as an Usenet or other TCP protocol proxy. Compiled using Open Watcom. Binary package (.exe file): efnet-pl.zip.
lprgbd/ (2005) - Line Printer RGB Daemon for Linux. RGB led should be connected to three least significant bits in LPT1 parallel port and it will show various colors then. This daemon uses ioperm(), outb()
and Linux scheduler functions, so it is not portable.
chain/ (2006) - chainloader for x86 that can be loaded by Windows NT bootloader. After running, it will load and run MBR of a given disk. For some reason I couldn't convince grub MBR to run using Windows NT
bootloader (copying it to the file and running with NT loader caused reboots), so I wrote this small chainloader. Netwide Assembler.
note/ (2006) - melody player for ATmega8 with 8 MHz crystal, written in C. Note pattern should be compatible with FastTracker II XP (Extended Pattern) format. It will be played with given tempo. For playback
it uses CTC function from one of timers. Piezoelectric transducer should be connected between OC1A and VCC. Current note pattern contains melody for Sum 41 - Pieces song.
step.php (2010) - a simple tester that checks if given frequency matches different tuning steps. See http://www.chmurka.net/p/step/ for online version.
avrport/ (2010) - utility to calculate PORT and DDR values on AVR microcontrollers from selected radiobuttons. See http://www.chmurka.net/p/avrport/
for online version.
psinvert.py (2017) - utility to invert parts of PostScript files created by TraxPlot utility from AutoTrax.