Sunday, November 30, 2008

Change is in the air...

(And not just the smells of summer)

When the luminaries of an industry are all out on the hustings evangelising change, and by change I'm talking about stuff that no one has tools or methodologies for yet, then it's fairly obvious things are in a state of flux.

This change can probably be best described as the son of Ajax. The amusing thing with the explosion of Ajax was that it wasn't anything particularly new, most of the underlying technologies had been in place for the best part of a decade. What Jesse James Garret did when he launched the Ajax meme was give us the lexicon to talk about the changes we were witnessing with Google Maps and GMail.

These new web application capabilities forever changed the perceived capabilities of web deployed applications. Suddenly, every application being launched onto the web had to have these capabilities. Most back end coders scoffed, Javascript has long been derided as the joke programming language. But, what customers want, customers get.

This new revolution is going to change everything because the web browser is going to become host to complete applications, and the back end is going to become nothing more than a persistent communications hub for people to interact through. This changes the performance requirements of the back end, away from relational databases and towards appengine style distributed datastores.

The new capability that this gives customers is the ability to use the webapp from a disconnected client. This might not seem like a big thing, until you take into consideration the explosion in sub notebook computing devices, netbooks, iphones and androids, all of which are partially connected to the net through the 3G telephone network and the occasional WiFi hotspot.

This new capability is going to be a huge driver, and it requires a complete rethink of how we build web applications.

Saturday, November 29, 2008

It's a tad freaky doing research, and getting results that include mailing list discussions in which I took part, all too long ago. It's almost like I'm retracing my steps, but I don't remember making them...

Odd

At the time, I knew I was fighting for a life. I didn't intuit that the life I was fighting for was mine.

In retrospect, I can see how I was controlling so many factors, it truly was an onerous and thankless task. In fact, after the event, I doubt any of the players will even think I had anything to do with what went down. But then, said actors aren't exactly known for their ability to step outside of the here and now, or even outside of themselves. The chance of any of them glimpsing the full picture really is nil.

I suppose that is why I feel alone a lot of the time, not for lack of company, but for lack of people who can see what I see. My father can, but mainly if i try to explain what i see all i get is blank of disbelieving looks. I learned long ago not to explain.

And now, finally, I have learned that I can walk away. I don't need to save people. In fact, they need to save themselves. I need all my power just to save me.

Tuesday, November 25, 2008

Dave Thomas inspired this one.

I lost faith in AppEngine, partly because of a pratt in England that annoyed the shit out of me, and partly because I couldn't see how to implement the applications I wanted using it. The DataStore, simply, wasn't enough.

Tonight I watched, horror struck, as Dave Thomas (Of OTI fame) told a room full of Java coders that Java is the new Cobol, and that interesting applications of the future are going to be written on the Cloud, and in JavaScript. Cue deafening silence as a hundred odd java programmers start burrowing under their chairs.

It inspired me. Instead of trying to use AppEngine's DataStore as a transactional store, which is something it sucks at, I can instead using it as a pub/sub notification hub.

This would move the query side out to the clients, with their local Gears datastores, and make updates the only part that had to be propagated from the client back up to GAE, and thence out to all the other clients.

It actually works. A complete application deployment platform built from Google's software. Kinda scared right now.

Saturday, November 22, 2008

Craig Mundie on the Future of MS

Wharton interviews MS's Craig Mundie

Craig is predicting a future where in we have full blown client side applications that interact with the cloud. Migrating applications out of the web browser, if you will. The destruction of the web browser has actually been a long term aim of MS, as made obvious in the their post IE6 destruction of the IE development team.

Obviously, migrating people from web browsers - which are inherently operating system agnostic - back to client applications which are tied to specific operating systems would be good for continuing MS's Operating System monopoly.

There are application domains that are ill suited to current web browsers, ones that are compute intensive or graphics intensive, for instance. Games, primarily. However, the text rendering engine inside of modern web browsers leaves the current generation of application toolkits (Swing, SWT, WF, MFC+, Qt) for dead.

The biggest disadvantage to me of a heavy client approach to interacting with the web is that suddenly which computer I am sitting at matters again. Having two laptops and a desktop, that hurts. Having an application that comes in both web and heavy versions, and stores all configuration in the web would reduce that burden.

Soon, I suspect, I will need an iPhone version as well...

Thursday, November 20, 2008

Right. That's it.

I'm taking a holiday. I'm stuffed. I've had it. Worn out. Tired. Roll me over, i'm friggen done.

Just looked at some positions that a recruiter sent me. I should have been jumping up and down, there is some cool stuff in there. But all I can think to do is to get some grub, drink some beer, and sleep. For about 48 hours.

Wednesday, November 19, 2008

Odd realisation of the day

I've just come to the realisation that my issue with learning new stuff is dealing with the emotional distress of going through the acknowledgement of incompetence. It's yet another grieving process.

I've seen the emotional response in others when attempting to grapple with something new, I saw it all over the AppEngine list, the Clojure list, and various other places. What is new is the realisation that my own aversion to study is linked to this emotional reaction as well.

So being able to manage the grieving means I can start learning properly. It's been a while...

Monday, November 17, 2008

I feel like i've fallen back in time...

Playing around with MS's Visual Studio Express editions is a bit of a time warp. It reminds me of when I was programming against win16, and I use the word against advisedly, back probably the better part of two decades ago.

MS obviously builds some of the best tooling for first use. Click here, fill in code there, and voila, one working web application. I'd like to say that the traditional J2EE stack approach is inherently better than this, but it aint. From a pure get stuff done, the bang per buck measure, C# ASP.Net with it's databound controls and integrated JQuery has the Java world up against a wall. Sure, VS licenses aren't cheap, but what is the cost of a team of Java developers?

This is going to be an interesting adventure.

Saturday, November 15, 2008

An experience like no other...

I must say, today was an experience in overload. In many different ways.

It was the Sydney Bar Camp, and it was fun up to a point. When people started getting tired, man. Ranting about how Google is evil, then about how to verify who should have the power to verify if companies handling of data is valid, and then finally the whole australian net censorship discussion. Gar. Raw emotions on display.

My head hurts.

On the upside, I can see a bunch of new technologies stepping up to allow us to step through the multi-core insanity. F# on .Net is going to be interesting, to say the least. =)

Thursday, November 13, 2008

Thoughts on Remix culture

One of the things that I like about developing for the web is that there is a culture of openness about web development techniques. There has to be, all the source is out in the open already. In fact, there is significant pressure on web developers to write good code because it's all hanging in the breeze.

One of the impacts of this is rapid migration of new ideas. Part of this is down to the ease with which one can pop open firebug and have a poke around inside someone's html and css. It makes for easy remixing.

I suspect this is probably the hardest part for adoption of Flash and Flex - all the really cool apps are not open for review and learning. Actually, the same can easily be said of back end development. *cough* Google *cough*

Wednesday, November 12, 2008

Realisation of the day

(Although, I'm sure I've had this one before.)

Application development is broken. This much is obvious to most folk. The reason is interesting in that it reflects something that is true of all design.

There is no right time to design the application's interface.

During initial specification, when most people spec an interface, most people can't visualise using the application. Thus you get underspecified and inconsistently specified interfaces. By the time an application is built, it is too late to specify, as change at this point usually requires complete rewrites of the majority of the code base.

In short, by the time people can actually use an application, their reaction is always "That's not what I want!"

There has to be a better way. And I intend to build it.

Tuesday, November 11, 2008

Change in perspective...

Possibly the biggest change after coming to grips with ANTLR is now no system is "too big" to tackle. If I can design a DSL that encompasses the design, then I can implement the whole thing. Sure, there is a whole bunch of work writing the various traversals and the code generation templates.

But there is suddenly no boring trudge work left. =)

Sunday, November 9, 2008

Random musings

For an industry whose primary sales schtick is "money savings through automation" we are remarkably attached to doing things manually.

Heretical stance of the day.

I love of all things Google - I use GMail, Google Docs, Blogger, Analytics, AppEngine, and GWT. But that doesn't stop me thinking things are wrong with the big G.

One of the important things about capitalism is it's darwinian nature. One of the things wrong with most companies is that they are, for all intents and purposes, command economies. Google tries very hard to allow darwinian nature in, but there is a serious problem.

Google is the TRS-80 of the cloud era. It is amazing that it works, and it is creating a new world, but that doesn't mean it is of the new world. The TRS-80 was no Apple PowerBook.

Google is the leading edge, and thus being technically right is important, but for what comes next, design is more important than algorithms. So, who is going to be the Apple of the Cloud Computing era?

Saturday, November 8, 2008

My head, it hurts...

CSS, JavaScript, Yahoo UI, ANTLR...

One of these days I might learn to not try to boil the ocean.

Nah.

ANTLR as a gateway drug to lisp?

I'm reviewing the code I wrote for my code generator, and it wound up looking a lot like lisp. Actually, a lisp with destructing bind. Like Clojure, say.

The biggest advantage for me with using ANTLR over the lisps is that I can, and do, look at the generated parser and tree parser code. I understand the underlying implementation, which is essential for being able to debug. Clojure is a step into the wilds for me, I don't really understand what it is doing, and there is only so much macro-expand tells me.

Hopefully playing more with ANTLR will allow me to understand how Clojure works...

Friday, November 7, 2008

Drunk, reflective, and in need of a holiday

I'm making bad decisions, being pig headed when i should roll over and admit i'm wrong.

A fair bit of it of late.

On the up side, i'm having a holiday soon. It'll being a juggle financially, but on the upside I'll focus on my projects instead of trying to force my work into being interesting.

And if my projects work out, work will get a whole lot easier, and maybe even more interesting.

This has been brought to you by the letters b, e, e, and r. And the number 2. Yeah, time I slept. More beer tomorrow.

Tuesday, November 4, 2008

Another direction change

Now that my code gen is starting to spit out code, and actually usable code at that, I am starting to get larger aspirations.

One of the continuing bugbears of my professional existance is the creation of webapps. They have a bunch of inputs, there is some processing, and a bunch of outputs. In all honesty, it sounds, at the highest level, like something that should respond to automation.

In fact, a lot of people have tried. The biggest issue is that all the current code generators are finished products. They are designed from the ground up to produce finished output. I think this is the wrong approach - the resultant webapps are invariably broken by the inability of the user to express their specific requirements in the tool's input medium.

I think ANTLR's approach to building a DSL, and then allowing embedding of chunks of java through it is the correct approach. The DSL expands, and the embedded java is exposed in place. I think this is what is required. A DSL for capturing web applications, along with the ability to embed java in it as the "business logic".

Mmmm. Yea yea. I've sold my soul to ANTLR. =)

Monday, November 3, 2008

Thinking about libraries in lisp

One of the things that always confused me with lisp is that for a fifty year old language, there is bugger all in the way of battle hardened libraries. Take java, a mere puppy at ten, and yet it has more libraries than you can poke a stick at. And don't get me started about c. We'd be here until Christmas. The year after next.

Now that I am playing with ANTLR, I think I have understood why there are no libraries. You see, the desire for libraries is to reduce the programming effort to achieve a goal. The amount of code required to write all the database access layer in a reasonable sized webapp is considerable, so people use Hibernate instead. No one likes Hibernate, in fact there are rants upon rants about how bad it is, but all said and done, using hibernate is better than not shipping at all.

The problem with Hibernate and co is that the programmer winds up giving up control. He (or she) has no choice but to interact with the library on it's terms. If you don't like the terms, find another library or write your own. If you want to do something like what Hibernate does, but slightly different? Fork it, if you are brave. More likely, you will curb your tongue, and agree that Hibernate's way is the one and only way, and deal.

With a code generator, this is suddenly not a trade off I have to make. As long as I can write prototype code from the database up to the user interface layer, and I can express my design in some computable data format, then I can slice up the prototype code into templates, and generate out the whole application. Libraries suddenly are a source of headache, constriction, and bugs, instead of being a saviour.

In other news, I'm finding Google less and less useful as a source of knowledge. Thanks to an explosion of indexed content of varied value - i'm thinking of web forums full of questions - my keyword searches are returning pages full of my keywords, but no actual usable information.

I'm resorting to long form book purchases to get the knowledge I need, often in pdf format. A positive thing for artists and authors, but worrying for the big G.

I'm becoming a religious zealot

(Becoming?)

Anyways.

I wrote the guts of a Model Driven Engineering code generator over the weekend. I think I might be getting ANTLR finally.

Only downside? Everything I look at I start working out how to build a compiler and/or a generator for it. Gah.