I am a 20 year old undergraduate at
Columbia University studying math, computer science, physics, music,
and bits of other sciences that interests me.
projects I'm working or completed:
Pascal interpreter written in
Several years ago,
when I was looking for a Pascal interpreter written in Java, I found
that none of them were as functional as I'd like, so I started one of
my own. It works pretty well right now, and the owner of Programmingwiki.de
working with it to create demos of the pascal language.
It's hosted on both Github
and Google Code
I also have a partially completed library to emulate the functionality SCAR
provides, which will work with the interpreter to provide a Java based
SCAR clone. It also has both Github
LV2 is a plugin format for
audio processing and generation, mainly used on linux. I've
ported a few applications to the LV2 plugin format. For more
information about LV2, see here
So-synth (original source)
set of Synthesizers
including a feedback drone synthesizer, a piano synthesizer, and a
Aubio (original source)
audio analysis library (only some functionality ported)
Minicomputer is a synthesizer for
creating experimental electronic sounds. I'm working on a port of
the GUI and synth engine with Sascha Schneider.
A fork of Autotalent)
TalentedHack is a pitch correction
plugin based on Autotalent, but with addititonal features and
Kn0ck0ut is a spectral subtraction
plugin usually used for the removal or isolation of vocals.
It has performance and feature improvements over the original.
Original LV2 Plugins
A simple plugin to create a
or Repackaged Tools
A command line program for applying LV2
effects to audio files.
I made several fixes to the build system of tartini, as well as bug fixes for the program itself.
I ported the GUI of Ceres to GTK2 and
made the packaging more "package manager friendly" (i.e. use installed
libraries, rather than bundling possibly conflicting versions.
Also a few bug fixes.
Updated version of Mammut to use newer
versions of the toolkit "JUCE".
Graphing Calculator Projects:
Having a TI-89 Titanium, of course I
spent some time programming it. I've written a few projects for
it, all of which can be compiled with TIGCC
A fixed block size memory
allocator. I wrote this because I wanted to use linked lists, but
the OS-provided memory allocation routines are supposedly very
Java Reflection Explorer
I wrote a program for exploring object
trees in Java. It's intended for debugging, examination, and
reverse engineering of programs which you don't have the source
Its Google Code page is here
I started working on a Brainfuck IDE four
years ago for debugging Brainfuck programs I was writing. It
provides step debugging along with a memory viewer and a virtual
terminal I/O interface. It's written for wxWidgets, so it should be
Google Code Link
I suppose the title is a bit of a lie,
because it actually only computes sines right now. I wrote the
library because I was looking for a good portable vectorized
trigonometry library. This might seem at first like an oxymoron, but
it's actually possible because you can write C code which GCC will
auto-vectorize on any platform it supports. Anyway, that was my
original goal, but it turns out that it's harder to beat the FPU than I
thought. First of all, I realized that the slowest part of
calculating the sine is not the kernel function, but the range
reduction. Even if I restrict the range to integer sizes
(<2^31), I can still only double the performance of a
non-parallellized sin() call.
I guess that's decent, but nowhere near the 10x performance boost I
thought I was recieving when I compared my kernel function to a
straight library call. Hopefully cosine and tangent
implementenations will arrive.
However, theres' still a fair amount of good code for comparing a
variety of polynomial kernel functions derived various ways. Github link
a course in Spoken Language Processing, I worked in a group to create a
spoken dialog system. The system we built was an interactive
speech based game. We essentially built our game on top of the
Adventure game (also known as Colossal Cave Adventure). After the
course was over, I rewrote the system to more directly integrate with
the game, and to use an open source speech recognition library. I
have released the rewrite under the GPL Github link
If you forgot your password to noip.com
but you still have a configured installation of the noip2 client, you
can use this utility I wrote to extract your (slightly obfuscated)
username and password from the configuration file. Github link
blogs I've written
I sometimes post to http://externaldocumentation.blogspot.com/
To excerpt from something I wrote there:
This blog is intended to walk people
through doing things which I found difficult to do, essentially helping
people who are in the same situation I was in. Generally I expect it to
be things involving computers to some degree, and programming as well.
Essentially, I am making a blog of things that took a long time to
discover, but I wish had been available as the first result of a google
search. This can be very general (how to use USB hardware with SDCC),
or very specific (What does error message X mean?). Basically anything
that's not documented in an easy to access form for a complete
beginner. It's not intended to be a complete information source, nor
definitive, but simply helpful.
You can email me at firstname.lastname@example.org