icculus.org
[svn]
-
[hg]
-
[git]
-
[bugzilla]
-
[ssl]
-
[mail]
News archive: (submit news)
So the GSoC has finished up for the year.
Sam Lantinga and I mentored five students for Simple Directmedia Layer. All five students passed. We have now merged all their projects into the Subversion trunk (with one exception), and made a snapshot of the sources: details are here. Please note that this code is all experimental stuff--both the GSoC projects and the trunk itself--so treat this as a curiousity and not something to build life support machines with.
Please note that the iPhone port is in a password-protected Subversion branch, and only the OpenGL ES work was merged into the trunk; this was not the student's fault: Apple's iPhone NDA hasn't lifted, so we can't publish the work. Yes, we're annoyed by this, too.
I wanted to discuss each of my students briefly, in no specific order, in case a future employer googles for their name or something.
Edgar Simo, haptic subsystem.
Edgar did something people have been asking about for years. He has built cross-platform force feedback support into the SDL 1.3 API. Both joysticks and mice (and just about anything else we can ask to wiggle) are supported, and it should work on Windows, Linux, and Mac OS X. Those in the know refer to force feedback as "haptic" technology, and thanks to Edgar, we consider ourselves officially in-the-know, so we refer to it as that, too.
Edgar was absolutely top-notch as a developer. With very little guidance, he researched and designed a solid API, wrote clean code, and was, all around, a textbook example of a professional.
But what I really wanted to tell you was that he managed to write some of this without hardware. No joke! He didn't have access to a Mac, so I gave him ssh access to a G5 in my office. From across the planet, he pushed his code through the command line tools on my G5. And the first time Sam plugged in a USB stick on his MacBook Pro, it worked. We all fell out of our seats.
He continued to debug issues without access to various platforms or the joysticks in question, usually without any delay or many questions. I'm pretty amazed. We were lucky to have him join us for the summer.
Aaron Wishnick, audio improvements.
The important thing to know about Aaron is that he knows Digital Signal Processing like the back of his hand. We asked all our students to write no code during the Summer of Code's introduction period, and instead use it for research and planning. And boy, did he ever. Aaron took advantage of the intro period to flesh out about one gazillion different ways to handle resampling.
A long standing complaint about SDL 1.2 is that it only handles resampling when moving between multiples (so converting audio from 22050Hz to 44100Hz works, but 22050 to 48000Hz does bad, bad things). Aaron's first assignment was fixing this. Taking his DSP expertise, he considered many approaches, rejecting and tweaking ideas that balanced CPU performance, memory usage, and output quality, until he had the best solution.
After this, we put him to work adding pitch shifting as an SDL_mixer effect. Anyone that's done pitch shifting knows it is easy to resample the buffer for a quick-and-dirty answer, but SDL_mixer needs to do this without changing the size of the buffer, which is much more complicated. Aaron took care of that, too.
These projects had the luxury of having well defined points to plug into, and thus needed less concern for API design. We pointed Aaron to the right place behind the scenes, and he struck with ninja precision.
Szymon Wilczek, multiple input device support.
I had written, many years ago, a library called ManyMouse, which I meant to be a proof-of-concept for what would eventually merge into SDL 1.3. So when we accepted Szymon into the GSoC, I expected he'd be doing a little cut-and-paste and then take a vacation.
Boy, was I wrong.
ManyMouse served as a basic starting point, but it didn't have XInput support (which is pretty important to Unix users!). Szymon went off to research XInput, and found it to be a horrifying API. Still, he soldiered on and implemented support for it, building the public SDL API as he went.
But that's not the bad part. After that, he had to support Windows.
The RAWINPUT support in Windows XP isn't so bad to work with, but unlike XInput, it doesn't necessarily support tablets, and Szymon felt this was worth supporting. With great sadness, I handed him a Word document with the WinTab API specification.
WinTab was designed for Windows 3.1, and the specification has not changed since. I'm not kidding.
We kept a running tally of unreasonable problems that Szymon had to fight against to get this done, and for awhile there was a losing count in the fight of "Wilku vs Uncle Bill," but eventually, Wilku came out of top.
I think most people would have given up much sooner, but Szymon pulled it off within the GSoC deadline. I'm very impressed that he managed to deal with foreign APIs with sometimes-ridiculous requirements, and frequently-missing documentation, and still produced on schedule.
Holmes Futrell, iPhone/iPod Touch port
Darren Alton, Nintendo DS port
These two weren't my students, so I don't have a lot to say about them, except they both got their projects done on time, and they both interacted well with the other students when there was overlap in functionality. I'm really excited about both of their work, and plan to use their efforts on some of my own projects.
I was pleased to work with all of these talented coders, and would recommend them to anyone. Some of them are planning to continue on as members of the SDL team, and we are glad to have them.
Thanks to Google for making this happen every year, Sam for mentoring, the mailing list for playing with the shiny new toys, and, of course: Darren, Holmes, Szymon, Aaron, and Edgar. You all rock!
[ email newsmaster | get news rdf ]