Jeremy Salwen's Personal Webpage

I am a 20 year old undergraduate at Columbia University studying math, computer science, physics, music, and bits of other sciences that interests me.


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
A library to compute Riemann sums.
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

Valid HTML 4.01 
Strict