Search this site


Metadata

Articles

Projects

Presentations

I miss web programming.

I drank one of those Sobe No Fear GOLD things earlier, so I'm still wide awake. Waste not productivity? However, I'm going to be quite dead for classes tomorrow. Though, my classes aren't particularly important to me anymore. My philosophy of "learn what you want" landed me a dream job with Google, so there's no sense in turning away from it now. My algorithms class is getting cooler now that we're doing graph and tree algorithms like spanning trees, red-black trees, and other things. Beyond that, my interest in my other classes is very much dwindling. Only 4 weeks left.

The past few months have let little time for fun web projects. Web javascripty stuff is almost always an extremely fun endeavor, despite it often being a frustrating adventure in non-compliance! Looking at Opera 9's new fancy widget system makes me want to get back into web programming again.

The most fun project I've done recently has definitely been working on Pimp and pseudo-helping with jQuery development. I wrote more javascript during BarCamp NYC than I had in ages, and it was a great time.

This year's Bawls Programming Competition at RIT should be more fun this year now that Resig, Darrin, and myself are *much* more experienced with JavaScript, CSS, et al. Look forward to whatever project we come up with ;)

So what project should I start or work on next? I'd *love* to get working on Pimp again. Maybe I'll work on that or something similar soon. Now that jQuery has AJAXey support, it's almost worth it to rewrite the whole web interface with it. I'm also hoping to find time to work on my sysadmin time machine project - web-based searchey-goodness for logs and events.

Definite todos:

  • Fix newer xmlpresenter code to work in all browsers (mostly css issues?)
  • Update xmlpresenter project page
  • Write "magic database" thing for storing logs and events
  • Write happy web frontend

Not that many people read this site, but if you've got ideas for projects I'd be interested in, Let me know. I'm always up for ignoring structured book learning in favor of more educational adventures. After all, that's why I run this site: to catalogue my research adventures. Notice how (almost?) all of the content here is lacking in relation to my academics?

ajax, json, and python, Oh my!

Whew! I don't think I've ever spent more hours on dead-end ideas on a project in a very long time. Most of the ideas I tried failed miserably due to either problems with design or problems with the underlying application. For instance, I found I couldn't return HTML from an XMLHTTPRequest call and append it to my document properly, ugh!

I've been doing a lot of brainstorming on how to spiff up the interface Pimp 4.0 is going to sport. I wanted to have a useful interface from the web that also looked cool in the process - something many interface programmers desire to achieve but almost always fall short.

There are a number of very good JavaScript library projects such as Prototype, Scriptaculous, and others, so I figured I'd try them out and see what I could do. Turns out, scriptaculous would be the most useful, but it doesn't work under XHTML with content-type application/xhtml+xml.

Having hit a number of brick walls, I decided to scrap using other people's code and write my own. I always learned more that way anyway.

The first step was to write a few small visual effects. The only two I've needed so far have been fading in an out. It makes use of Accelimation, a movement/acceleration library by Aaron Boodman over at youngpup.net.

After that, I wanted to reengineer the javascript bits for Pimp. So, I did that. Instead of lots of loosly-glued-together functions, I have one javascript "object" thing called 'Pimp' that has a number of functions. I was going to go all Object Oriented and such, but doing OO in JavaScript with timers and such is a pain in the ass. I gave up OO and went with a simpler approach, a static-class-like objecty thing ... JavaScript is an interesting beast.

I also moved to using JSON for server-to-client communication. Clients still send data using XMLRPC, but the responses are in JSON becuase there's no added processing time for the client to handle it. Thankfully, it was easy to replace the XMLRPC stuffs with JSON where necessary. I only had to update one function on pimp's python stuffs and add an 'eval' line to the javascript.

Putting all of this together, Pimp's "Stream list" now updates smoothly in realtime: New streams fade into the list and song changes are faded between on the screen. I think it looks very cool, and doesn't detract from the usefulness of the page. Another addition included fading between the "stream list" view and the viewing an individual stream. The stream list will fade out while the individual stream data loads (efficient waste of time, no?) followed by the individual stream's page fading in.

If you want to see what I've done so far, let me know. It may not work when you ask due to active development, though! Anyhoo. If you're intrested, I'll be happy to show you.

My JavaScript brain-cells were rusty yesterday. I suppose they aren't anymore ;)