I ran out of good naming schemes for stuff relating to computers that are cool to download and use that are not part of existing projects, so I'm just calling it ``Computer Stuff'' for now. Stuff that I have here are configuration files, and other miscellaneous projects that fit nowhere.
Files here tend to be processed with
bzip2, with the occasional
Here are some customisations that I have done for some of the tools that I use on a daily basis. The new URLs provided are canonical, but I will still retain the old ones from the past via the
.htaccess file just for convenience.
Configuration file for Vim. Key features include:
- Virtual movements of
kkeys over wrapped long lines.
- Local time clock in ruler.
- F5 to insert ISO 8601 format timestamps.
- Shift-F5 to replace existing ISO 8601 format timestamps.
- F6 to insert UUID4 GUIDs (for UNIX-y systems only).
- Workarounds for
strftime()in Windows (non-C99 version means lack of ISO 8601-specific formatting options).
- Auto time-stamping of print outs (requires workaround for Windows).
- Large file detection to reduce lag (threshold set at 8MiB).
Download .vimrc (
GNU Screen Configuration
I use GNU Screen as my terminal multiplexer when working on virtual machines and servers. This configuration file is merely to set up GNU Screen to use 256-colours in its terminal emulation.
Download .screenrc (
These are just stuff that I had done over time that are in a form that can be released. As a general rule of thumb, they are meant to be downloaded and run on the local machine, with a high chance of being unrunnable on a web browser. The usual disclaimer applies---bug fixes and other constructive comments are always welcome.
None of the projects here include anything from my work unless otherwise noted.
Small Chew was a quick-and-dirty summer project that I did in 2008 with the intention of implementing a really bare-bones stack machine that runs Forth. It was also an exercise in messing around with micro-architecture design, not to mention my first real use of Python to do anything; the coding style really stinks.
Since this is such a hack job, there is no proper interface to the compiler (technically a source translator to virtual machine)---details can be found in
README. It was a really fun project though, and gave me some insight on how to design a simplistic stack machine.
And mess with Python.
Download Small Chew (
This simple C/C++ package implements an extensible buffer which allows one to keep appending octet data to it without running into buffer overflow problems. It was created when implementing some application-level protocol for a server programming class specifically to deal with that buffer overflow attack.
Word to the wise: the code is stupid simple and relatively self-explanatory. Read
e_buffer.h to get a sense of the data structure and the ``methods'' available to operate on the data structure.
There are better ways to do this, but this code is useful for when the larger libraries are not applicable for some reason.
Download Extensible Buffer (
A simple implementation of a hash table in C/C++. Probably not useful now, but great for low-level C programming without access to the STL. Features include:
- Linear chaining via head node linked list to resolve hash collisions.
- Array doubling to increase capacity when specified load factor is exceeded.
- ``Rustic'' iterator mechanism to run through all elements.
- Shallow copy of elements made on insertion.
- Self-contained memory management via
Like the Extensible Buffer, look for the header file (
minihash.h) for details on how to use it.
Download Mini Hash (
A simple implementation of lists in C/C++. Probably not useful now, but great for low-level C programming with access to the STL. Basically a head node singly-linked list.
Like the Mini Hash, look for the header file (
minilist.h) for details on how to use it.
Download Mini List (
Adaptive Simpson's Rule
Numerical integration of a function through the use of an adaptive form of Simpson's Rule. ``Adaptive'' in the sense that the number of sample intervals are controlled using the error estimate for that interval as the main interval for the integration is recursively carved up.
Written in Python.
Download Adaptive Simpson's Rule (
Notation for Exotic Pitched Events
As part of my final project for Introduction to Computer Music in Spring 2009, I wrote a tuning layer that sits between the user program and the underlying Nyquist system.
I'm still maintaining this code, but there really hasn't been much that needs to be amended. Don't let the ``legacy'' prefix in the URLs below fool you---the legacy aspect comes only from the fact that I did not update the design of the help file to conform to what I am currently using.
Download Tuning Layer (
zip); access help file.
Slim 8×8 Console Font
I created a slim 8×8 console font for use in pure consoles. This replaces the default 8×12 bitmap font and provides 50 lines of text in console mode.
Mostly useful for the ``raw'' VGA console in Linux machines.
Download Slim 8×8 (
Typewriter-like Line Printer Emulator (ASCII version)
Run away quickly from this section, before it is too late!
Okay, this is a tool that takes in a formatted plain text file and generates a passable PostScript file that emulates the output of a printer that was sent this file. This supports emulating overstriking of characters to as many depths as memory allows, as well as a ``typewriter'' mode where each character generated is jittered to simulate the imperfect register of the keys striking the typewriter ribbon.
The command line help is relatively extensive, but there is no interactive interface whatsoever---just pipe the formatted text file in and redirect the output to a file for conversion from PostScript to some other format.
As noted in the
README, you may need some tool to convert from PostScript to whatever format you want the file to be in.
This is the ASCII (or technically, Latin-1) version. I have a Unicode one also, but that's not ready for release.
Download LPR Emu (