I am a 23 year old graduate of Columbia University with interests in math, computer science, physics, music,
and general science.
Programming
projects I'm working or completed:
A
Pascal interpreter written in
Java
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 is
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 and
Google
Code pages.
Audio Projects:
LV2
Ports:
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)
A
set of Synthesizers
including a feedback drone synthesizer, a piano synthesizer, and a
bassline synthesizer.
Aubio (original source)
An
audio analysis library (only some functionality ported)
Minicomputer
(original source)
Minicomputer is a synthesizer for
creating experimental electronic sounds. I'm working on a port of
the GUI and synth engine with Sascha Schneider.
TalentedHack (A fork of
Autotalent)
TalentedHack is a pitch correction
plugin based on Autotalent, but with addititonal features and
improvements.
Kn0ck0ut
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
Stutter-LV2
A simple plugin to create a
"stuttering" effect.
LV2 Utilities:
lv2file
A command line program for applying LV2
effects to audio files.
Updated
or Repackaged Tools
Tartini
I made several fixes to the build system of tartini, as well as bug fixes for the program itself.
Ceres
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.
Mammut
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 or
GCC4TI
LardAlloc
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
inefficient.
Ramlib
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
to.
Its Google Code page is
here.
Brainfuck IDE
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
cross platform.
Google Code Link
Vectorized
Trigonometry Library
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
Adventure-Sphinx
For
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
noipextractor
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
Useful
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.
Contact
Information
You can email me at jeremysalwen@gmail.com
or jas2312@columbia.edu