I have a pretty fun little resumable file uploader, I wrote using google gears and a tiny ruby rack file. It’s possible to put this uploader behind an nginx or apache and share a session . It can upload multiple files and keep track of the progress of each file. Uploads can be paused and resumed. This works because the files are split into chunks and uploaded 1 meg at a time. The source is here: http://github.com/taf2/resume-up/tree/master
Here’s a fun screen shot of it in action:
Gears asks for permission.

The Anerian uploader design, with the select files button

Read more…
Software google gears, Javascript
Developing a new Javascript widget today, I am bouncing between Firefox – with Firebug and IE 6 with IE WebDeveloper V2. I got things working nicely and have a condition in my code to check for the console object. Handling no console has been blogged about before, here.
if( !window['console'] ) {
window.console = { log: function(){}, warn: function(){}, error: function(){}, info: function(){}, debug: function(){} };
}
Read more…
Software Firebug, Javascript
Fixing the “Unsupported Browser. Continue at your own risk” Error from Google Calendar Javascript API, when using Safari. First of all… why are they using alert with a service? And worse why are they using an alert in a method with no error handler? Anyways, Javascript is a nice language so we can silence google using a little script like the one below:
var falert = window.alert;
window.alert = function() { /* silence google */ };
var calService = new google.gdata.calendar.CalendarService("wpng-calendar-plugin-1");
window.alert = falert;
Software alert, google calendar, Javascript, wordpress
We just finished up our first virtual conference website. It’s a kind of mix of event signup and confernce registration as well as related content. The content is provided by the company hosting the conference, SAE. I think I most enjoyed puting together the Dynamic Lead with the rotating images on the landing page. I used Prototype UI’s carousel widget.

Read more…
Software Anerian, blueprint, Consulting, Javascript, Prototype UI, Ruby, SAE
I put together a little heap sort demonstration with PGF today… I had to add text support to the VML renderer for IE. The performance in PGF really isn’t that great. I’ve played with standalone SVG examples that were reasonably fast in comparison… Anyways, I think it’s pretty neat that there now exists a pretty capable library that allows anyone to create some pretty cool graphics directly in the browser without requiring any plugins…
Update:
I just noticed the text doesn’t render in mac firefox apparently a bug in the SVG renderer for mac (sighs)
Software Canvas, Heap Sort, Javascript, SVG, VML
DOM.ensure( function(){
$("node").observe("click",method1);
});
If we decide that we want to cache that markup and reinsert it back into the DOM later we’re still safe. If we had used the DOMReady approach our code would have needed to be much more complex to track when it’s ok to call the method and when it needs to be called in the event. This method is really away of letting us say we want to ensure that this block of code is not executed until the DOM is really ready.
Here’s a solution I created for implementing DOM.ensure.
DOM = Class.create();
Object.extend(DOM,{
callQueue: $A([]), // store all calls in this queue
isReady: false,
// make sure the DOM may be effected before calling this method
// if the DOM is ready then the method is called right away, else a timeout is set
// until the DOM is ready
ensureDOMIsReady: function(callback)
{
if( DOM.isReady ){
callback(); // call the method now
}
else{ // delay the call until the DOM is ready
DOM.callQueue.push( callback );
}
},
initialize: function() // call any methods that were queued up to be run when the DOM is ready
{
DOM.isReady = true;
var queue = DOM.callQueue;
while( queue.length > 0 ){
queue.pop()();
}
}
});
// detect DOM ready once for the whole page for each specific browser type
if( Prototype.Browser.IE ){
document.onreadystatechange = function(){
if( document.readyState == "complete" ){
DOM.initialize();
}
}
}
else if( Prototype.Browser.WebKit ){// safari 2.0
var _timer = setInterval(function() {
if (/loaded|complete/.test(document.readyState)) {
clearInterval(_timer);
DOM.initialize();
}
}, 10);
}
else if( document.addEventListener ){
document.addEventListener("DOMContentLoaded", DOM.initialize.bind(this), false);
}
Really it’s a change in the calling semantics for a DOMReady to think of it as more of a question of whether or not the DOM is ready for me to manipulate it.
Software DOM, Javascript
It was a pretty quiet release, but after many months we’ve release 1.2. It runs on top of XULRunner, the Firefox based runtime environment. We choose to use the XULRunner 1.8 tree instead of the 1.8.0 tree, so that we could make use of some of the new features like nsISAXMLReader.
New features in the product include it’s ability to manage multiple insurance plans per record. Meaning we support splitting a doctors bill between multiple insurance comapies – something our competitors don’t handle. Also, we reduced the footprint to only 6.9 megs from 8.04 megs. The download is free with registration. UPDATE: SimoHealth was acquired by revolution health in 2005. RevolutionHealth was acquired by waterfront media – SimoHealth was decomissioned between 2006 and 2007. If you would like to get the source drop me a line, it’s pretty dated at this point.
Software Health, Javascript, XPCOM, XULRunner
Recent Comments