Powered by Blogger

Thursday, June 01, 2006

PPO Update and Modern Programming

The Project Paddle Odyssey (link above) programmers (including me) have made a lot of progress in the past few weeks.  Thanks to the generous support from AI^2, we had the money to buy more hardware so additional programmers could join the team.  

I had never written a significant program in C# before and, once I got past the vocabulary barrier, I have found that it goes very quickly.  Microsoft includes a very nice GPS API in the Windows Mobile 5 SDK which makes some fairly difficult tasks very simple.  Combined with some cheap, no-name GPS units we bought on ebay, this project is really starting to fall into place.

We expect the first true wet tests to happen on or near July 1 and, once we’ve tweaked the software a bit after its first alpha paddle, we’ll release version 0.01.xx to the web site, and, as promised, with source code, the GPL and Copyleft from Project GNU.  If you enjoy hacking, and would have fun working on an aquatic GPS program, I invite you to join the PPO team and help us get this project done.

We’re using Visual Studio 2005 which works pretty well with JAWS 7.1.  The JAWS scripts don’t seem to access the object model in the form layout features the way they once did so we are seeking some sighted person to help us with dialogues and such.  If someone out there in the world of blind hackerdom has a better set of scripts, please send them to me to help speed up the project.  

Programming in C# causes me to have frequent, “kids these days…” moments.  I feel like one of those real old timers with a “Back in my day…” attitude.  I first started writing computer programs the summer in which I turned 11 years old (1971).  Then, I wrote my little hacks in PDP 8 assembly language.  When I first turned professional, May 1979, I had to learn and program in a strange language called Neat/3, a sort of hybrid between an assembly language and COBOL that ran on NCR Criterion mainframes.  When I moved to Boston and started hacking on desktops, I wrote almost everything in x86 assembly language.  Back in those days, we thought that C was far too high level a language to be efficient, let alone something like C++ or C#.  

When C++ hit the streets in a big way, we old timers would hang around the Cambridge Brewing Company (an excellent micro-brewery near the MIT campus) and, like typical old farts, say things like, “Back in my day, we only had assembly language.”  

This, of course, would be followed with, “You had an assembler?  We had to type hex sequences into a debugger…”

“You had a debugger?  I had to manually write the hex codes to memory!”

“You had hex?  We only had zeroes and ones and we had to use a hand held magnet to get the code into the machine!”

“You had ones?  We only had zeroes!”

“You had zeroes?  We only had capital O and lower case l!”

And so would go another typical evening at the CBC.

Programming in C# seems so weird to me because I have to trust that all of this framework stuff which actually work.  Back in my assembly hacking days, the first thing my programs would typically do would rewrite the interrupt table so DOS couldn’t get in my way.  Now, I’m expected to trust a library that sits atop a framework that sits atop a windowing interface that sits atop an operating system.  As I have trouble trusting an operating system, you can only guess at the paranoia that all of these other layers cause me.

On the flipside, I have never developed programs so quickly before.  My first C# program used Direct X and, all in audio only, built a cube with the focal point of the sound at its center.  A ball bounces around inside the cube and the user, with a Logitech force feedback joystick, tries to avoid being hit by the ball.  My purpose in writing this program was to evaluate some of my theoretical work in how focal and peripheral attention can be used to detect objects; it was not intended to be a game and it isn’t really much fun after a few minutes of playing around with it.  I plan on releasing the program, source code included, fairly soon.

What I did learn from the experiment, though, was just how quickly one can make a pretty cool little program using all of these API and SDK layers that I don’t actually trust.  It also demonstrated just how cool Direct X is.  Kudos to the Direct Sound people up at Microsoft for making such difficult tasks so simple.

Of course, the vocabulary of .Net programming drives me crazy.  When did the word “assembly” change from meaning a low level language in which one programs using mnemonics and macros to the target of a build process?  Weren’t targets called “targets” or “executables” or “binaries” or whatever one might expect to be building?  I got all warm and fuzzy when I read some documentation that said I had to change the attributes of an assembly.  I thought that I had returned to my element but, alas, Dylan Thomas, while writing at the White Horse Tavern, correctly asserted that even we geeks can never go home again.


Someone posted a comment anonymously asking for the JAWS rap MP3.  If you write to me directly, I can email it to you.  I don’t know of any download locations for it.


Anonymous Will Pearson said...

Chris. I'm working on some scripts for Visual Studio 2005 as time permits. The main problem is that it's designed to be accessible through MSAA and we both know the standard of the default MSAA client in JAWS. If you're after positional information for the controls in the WinForms designer then this is typically located on the status bar, at least it is for the none compact framework WinForms projects.

Oh, and if you need an HCI consultant who can dual-role as a developer for PPO...

11:45 AM  

Post a Comment

<< Home