25/08/2011

What I've been up to and a follow up to "XUL Challenge"

Blimey.. over a yea since the last post! Definatly time for a new one... Well what have I been doing in all this time? Mostly getting excited about Javascript! I'm now addicted to NodeJS and generally only want to write things in javascript. My day job is still 50% python ( tho it gets lower with each passing hour ) and I still like python as a language, but Javascript is where my interests are at.

I find the Browser world incredibly exciting these days, it moves so fast and I dont like getting bored! The new stuff coming out of Mozilla is fantastic. With fantastic browsers we need fantastic servers and NodeJS fills that hole perfectly. Gone are the days when I could write a Pylons/WSGI app off the top of my head, now I fire up npm, install express and away I go.

But what have I actually been doing with any of it? Well I blogged (all that time ago) about the "XUL Challenge" - could I convert entirely to using the browser for all my apps. In retrospect I meant "browser" not really XUL... In closing I wrote "I would find it most amusing to run firefox in my .xinit and have no window manager... we shall see." Well we have seen, Mozilla saw too, now they are making B2G (Boot 2 Gecko). Sounds perfect to me!

I did for a while play around with the idea of trying to make a window manager again. I was thinking you could redirect windows to offscreen bitmaps, send those to a browser somehow and draw them in canvas elements, scripting the whole lot with javascript. You'd have easy scripting via javascript and themeing via css. While I still like the idea the concept of a window manager doest really seem as usefull to me anymore. Everything is just tabs these days. I have firefox on one desktop with a bunch of app tabs, irssi with a bunch of windows (that look pretty much like tabs), more terminals for projects - all tabbed... I dont need to be managing windows! Everything runs full screen with a row of tabs at the top. Heck - the window manager I use at the moment (awesome) even has what could be called tabs at the top of the screen for switching desktops and apps. Anyway... the window manager ideas are basically out.

My next stream of ideas was for shells, something like bash, that ran in a browser and talked to my local computer somehow ( its all well and good "running in the cloud but first we need to walk on the ground where all our stuff still is! ). I played around with this for a while but didnt really get going until I saw termkit. The philosophy was exactly what I was thinking. This resulted in kuya-shell2. I got it mostly working and was pleased with the result but something wasnt quite right...

The realisation came that I didnt really want to be launching all those linux commands inside my own shell. I didnt want to be writing something that could run cp/mv/df/du/vim/grep/etc, I wanted the shell to implement those itself. I didnt need a way to launch processes, all I needed was a way to manipulate files and directories by talking to a server and I could implement all those things myself. This meant I could change my complicated server that could handle piping command input/output to other commands and doing all sorts of other things to a very simple server CRUD server that listed directories and served files. Yay - KISS for me

So now Im working on, the imaginativly named, kuya-fileserve ( yet to be put on github ). A simple server and browser front end for managing files via the browser. Its ultra clean and slick and packed with HTML5 goodness. The nice part is that the front end can easily be split out to a more generic file browsing app that could be connected to anything you can think of - managing the files on my computer is the priority at the moment but only because all my files are on my computer.

That does still leave me with the problem of seeing a file in a window and not being able to do much with it apart from copying it around or .. urm.. deleting it. As I was pondering the problem I discovered Web Activites / Web Intents. Joy! The perfect fit! If I intend to edit a file, I just tell my browser so and it can offer me a selection of apps to do so! The puzzle is complete. ( In fact the file browsing part could actually become an activity: "I intend to browse this servers files" - server here could mean localhost ).

So thats where I am now, trying to get to grasps with thes activities/intents and browsing files. Its still a fairly new topic but I'm happiest firmly pressed against the bleeding edge!

Thats all for today - hopefully it wont be so long before the next post but I always say that. Iv actually quite enjoyed writing this one and looking back on the last year. I cant really believe all the things Iv learnt this year and whats changed in the world.

See you soon.