Despite a close call where the original venue pulled out at the last minute, BarCampTexas took place without a hitch at Club Elysium in Austin, TX. The goth bar scene + noon o’clock beer + many caffeinate barcampers was both fun and educational. I heard presentations on search engine optimization, programming in Cocoa, better ways at describing user interface interactions in Visio, and some unique ways to fund ideas. I even took a crack at my presentation on the XSLDataGrid. All in all, it was cozy, initimate, and the spirit of bar camp was in full effect. We attendants are forever in debt to the hard work that Lynn Bender, Whurley, Erica, and Wordlife Productions put in to set up such an awesome un-conference.
August 27th, 2006
Author: Lindsey Simon
Just a quick link to an article I’ve been working on for awhile that started off here as a post after playing with Google’s AJAXSLT – check out: The XSLDataGrid: XSLT Rocks Ajax over at XML.com. The source code and examples are hosted here on our site, so if you have any questions or find any bugs, I’d love to hear from you!
Demos:
August 23rd, 2006
Author: Lindsey Simon
See the demo and now download the code too! Goto A Better File Upload Progress Bar using Python, Ajax Prototype, & JSON
The basic idea for the File Uploader was borrowed from MegaUpload. That’s all that was borrowed really, except for the empirically derived sleep value in the read loop.
So here’s the gist of how this whole thing works…
The File Uploader allows for sending multiple files at once. We group these files by a session id which is just some unique number. The browser starts sending the files and the CGI starts handling them, one CGI process per file. Each session gets it’s own directory somewhere on the CGI server’s filesystem (/tmp). The directory name is derived from the session id which can be pulled out of the query string by the CGI process.
Within each session dir, each file get its own directory. The name of this dir is specified by the HTML form and can be pulled out of the query string by the CGI process. Within each file’s directory, four files are made: cgi_data, file, form_data, meta_data.
The first thing written is the meta_data file, which contains starttime, totalsize, and pid. The AJAX poller can read this file for bytes/sec calcuations and to cancel the upload by killing the process.
The next thing that’s written is the cgi_data file. That is all of stdin that the CGI process reads. The AJAX poller can read the size of cgi_data and from that, combined with what it reads in meta_data, can determine bytes/sec and time remaining, etc.
As stdin is being read and cgi_data is being written, we scan it for interesting data points such as mime type and file name. We write these to the meta_data file as we come across them. As the AJAX poller sees these, it can take appropriate action (display the name of the file being uploaded, and give you a nice little icon corresponding to your mime type).
Once all of stdin has been read, we can parse it and extract the actual file contents from it… which is stored in the file named file. Then we scan that file for viruses and write another meta data file called form_data, which contains stuff like name, filename, mimetype, hasVirus?, virusName. I think form_data is a little redundant and probably can be merged into the meta_data file.
The AJAX poller knows we are done by the existance of the form_data file (also because the size of cgi_data is equal to totalsize in the meta_data file), and it can redirect us to our PHP handler. Once in our PHP handler, we have inputs for the session id, as well as the sub dirs for each file uploaded in that session. From that, the PHP handler can read all the meta data files as well as the file contents.
August 22nd, 2006
Author: Christopher Bottaro
This year, the coordinators of SXSW Interactive are taking it to the streets, soliciting votes about what panel ideas seem most exciting and relevant for next year’s conference. When Shawn O’Keefe and Hugh Forrest of SXSW approached me with this concept, I got really excited about it. I put together what I hope folks will find to be an intuitive and simple user interface for choosing 10 panels and sorting them from top to bottom, using the scriptaculous Sortable. I’ve gotten feedback from some users so far and I’ve tried to implement as many of their suggestions as I could (thanks to Khoi Vinh, Gordon Montgomery, Michael Mahemoff, and some others). Head on over and pick your favorites!
I’ve got a Panel Proposal in the “browsers / web apps” category that will essentially be about a forthcoming article I’m working on regarding using XSLT in the browser and on the server for AJAX widgets. So if that sounds interesting to you, go vote for it!

On a side note, the folks working on BarCamp mentioned the panel picker on their listserve, which my friend whurley pointed out to me. It seems like maybe this thing might have some other uses and people are interested. Feel free to download it at http://www.commoner.com/~lsimon/PanelPicker.tgz
August 16th, 2006
Author: Lindsey Simon