Monday, July 24, 2006

The Web Desktop Is Here

And not by Google either. Nerds among you will have already heard of YouOS - it's definitely a proof of concept rather than a working OS at this time, but it already has lots of usable features. It uses Python on the server side and JavaScript on the client side and provides you with a desktop much like your Windows desktop (you can change the wallpaper and mess around with icons), except of course you can access it from any browser!

There really does seem to be an operating system at work behind the scenes though. All these applications are available to you:

File Explorer
Flickr RSS feed
Rich Text Editor
YouTube RSS Feed
Shell Prompt

They all appear in Windows on your desktop and you can move them around, minimize, maximize and close them. There's a task bar of sorts and even the equivalent of Windows task manager. "Wait a minute... did you say Shell Prompt?" I hear you cry!

There is a limited functionality shell, but typing help gives the following:

This is a javascript interpreter that also happens to function as a command line. Type in javascript and it will be evaluated here, or try out one of the following commands.

Special commands

* clear - clear shell output
* debug (module) - register a module (e.g. for debug tracing
* exit - get the hell out of dodge
* help - I need somebody
* props (object) [verbose] - get a list of properties for a JS object

Manage apps and processes

* kill (process_id) - kill a process with that id
* ps - get a list of running processes
* run (app_id) (argsObj) - run an app by that numerical id

Deal with YouFS file system

* cd (dir) - change current working directory
* chmod (-R) (+/-rw) (user) (file) - change permissions for a file or directory
* cp (file) (file) - copy file or directory (if supported)
* exec (file) - run javascript from a text file
* fdl (file) - download a file
* fedit (file) - edit a text file
* fupl - upload files
* ls - get list of files and directories in current directory
* mkdir (dir) - make a directory
* mv (file) (file) - move file or directory (if supported)
* quota (service) - get disk and bandwidth quota usage for a service
* rm (file) - delete a file or directory (recursively)
* stat (file) - get metadata for a file or directory

Deal with YouOS server data structures (like hashtables)

* ds [tag1 tag2 tag3] - get list of YouOS data structures, optionally filtered by tags
* dt [data_id] - get list of all tags in namespace, or for just one data_id
* dtag (data_id) (tag1) [tag2 tag3] - tag a datastructure with given tags
* duntag (data_id) (tag1) [tag2 tag3] - remove given tags on a datastructure

And there's a whole API for writing your own apps, though there's a lot of work to do there before it's up to the standard of Yahoo's venture into JavaScript APIs. It looks like you can do anything in a YouOS app that you can in JavaScript, plus nice UI stuff and inter-application communication.

There's a developer portal here where you'll find lots of apps already, including Sonic The Hedgehog! Well it's only a Flash game really, but anything with Sonic impresses me :-)

It uses Amazon S3 for storage and I believe if you're already a user you can access your S3 content from YouOS.

Absolutely unbelievable work! I dunno, I'm having trouble keeping up with web technologies these days. I think I'd better have a lie down.

Tuesday, July 04, 2006

Story Pulse

I landed on this posting on pronunciation of SQL and related acronymns from the Oracle WTF blog (ridiculing people who deserve it - shame they don't name names!). I happen to agree with the original poster and just "use whatever is easier on my tongue," a philosophy that would stand you in good stead in so many other situations too.

I also tend to adjust my pronunciation in conversation when someone else has used the word, either to the same as them if I like them or to the opposite if they annoy me. So if you start talking about Linn-ux and I say Lie-nux you'd better mind yourself ;-)

Anyway I liked the stylised representation of page views at the bottom of the discussion so much I'll probably steal it:

If you want to do the same, please copy the idea and not the implementation. The "pulse" is represented by series of images, one for each day (or whatever period it's broken into). The HTML to make this is 10k and puts the burden of rendering the graph onto each client browser. It's a waste of bandwidth and indeed global processing power! Come on guys, save the planet by generating the image periodically on the server and serving it statically (my PNG above was only 6k including the heading until I had to squish it to fit on this page).