March 2005 Entries
This is the kind of interesting stuff I would like to see CodeGen doing.
Not all of us are geeks that like to sit around and think in terms of objects.
I can see how a tool like this could be a phenomenal way to get the structure developed for new Corporate application in the span of a meeting where the requirements are hashed out.
Then the process would go to the gurus for fine tuning and tweaking to make the process more efficient. But if we coupled this type of CodeGen with Neural Networks made for tuning application code wouldn't it just make life alot easier?
I don't think developers should feel threatened by CodeGen, they should embrace it as a way to get more done in a more meaningful way.
Software Developers think in ways that other people don't but writing code is not always the best place for them to spend their time. Their time is better spent in analysing the problem and covering all the what-if scenarios that makes programming such an interesting thing to do.
Diving down into the plumbing level is fun for a while, but is it really where significant leaps in technology actually occur? No, it occurs in thinking about a problem in a way that no one thought about before and implemented a solution to that problem in a unique and efficient way.
AI can't do that for us and probably won't for centuries. That is where developers are going, writing code is analagous to monks hand copying the bible, it's a beautiful art and takes a lot of dedication, but the printing press turned out to be a more accurate and efficient way to generate the text.
Someone still has to input the text (or make decisions on how to cut and paste), then the formatting (i.e. the coded language) can be generated by machines in a miniscule amount of time compared to what it takes to do it by hand.
If a software program is just a bunch of decision trees, then wouldn't it make more sense to let machines figure out what is the best approach to efficiently create the path to take in order to achieve the path of least resistance?
We actually do this with tools like UML, Intellisense, NUNIT and NANT now, but the process is much less automated than it could be.
If we are ever going to get to the point where massive parallelism is coupled with molecular sized processors, then we are going to have to think differently about the approaches we are taking to actually developing the code.
As we move more towards the commodity based supercomputer, then we are going to have to rethink all the structuring that is currently dominant in the industry such as licensing models.
Per processor licensing is just stupid and is holding the general market back from being able to do amazing things. As communications speed increases to the point of multi-gigabit pathways, then it will become increasingly desirable to leverage all our corporate assets in ways we currently do not use them today.
For example, a group of commodity desktop PCs at “Massive Company“ should actually be fullfilling the role of a part of the network in a way we have not thought of before.
Lets say your company has 1024 computers. (it actually takes far less than this to be practical...)
Lets say they cost you $1000 a piece, that's a Million Dollars in assets you are using for what? 20% of it's capacity. This is real waste of potential.
If we had the ability to say put SQL Server on ALL of these machines but each machine only ran 1/1024th of the actual processing that it takes to run SQL Server. Then you have just entered the Super Computer territory for a cost that is far less than a new Cray X1E. You could actually do this with all your software and load balance the processing of the entire company. But it is impracticle with the current state of software licensing, hopefully that will change in the near future, someone is going to do it and make a killing in the industry.
We need to start thinking in these terms because we are just wasting resources today, both in terms of how we use our hardware and how we develop and license our software. If we don't start thinking in these terms, the “less priviledged” nations are going to and we will end up wondering how they made one of the world's biggest super computers from a few thousand machines we “donated” to them.
When we learn to start thinking about how to spread the processing power around to all our corporate machines and use them as one giant redundant machine we are going to see the “next big thing” in computing appear. Today we have a restricted mentality of individualism that is restricting us from making the leap into the next generation of Information Processing.
Commodity Computing is one thing and it's efficiency is proven by TerraServer read some of the info from Jim Gray, the guy who designed it and you may start to think different about how you might design your next big project.
In my mind, there is just no reason to limit this approach to the server room. You should be able to leverage every machine in your company this way.
In a follow up to my post yesterday...
What if Microsoft decided to be truly innovative with IE7? This is not far off the current goals of what they are trying to accomplish with Avalon. Also Opera seems to be right in line with this thinking to and just might put them back in the browser running until Firefox decides they have to compete again.
Here's the idea. Give us NATIVE support for SVG, allow SVG to be used in a CSS background-image and let it be used with a percentage for width and height.
It's really not that hard but it would completely change the web. XAML is actually a superset of SVG so Microsoft already has the capability, Opera already has built in SVG support in it mobile browser, Mozilla already has native support so a likely assumption is that Firefox isn't far behind (most likely in version 1.1) and pretty much everyone agrees that SVG is an Open Standard that should be supported by all the major players.
One of the only one really left behind now is Microsoft. If they were to actually provide native XAML support which is alot harder, you could get SVG as a bonus almost trivially.
Will they do it, probably not, so I am on a quest to find a way to actually make it work in current browsers using a technique similar to this one or maybe this.
By doing it with SVG you don't have to be stuck with Flash, why this is cool is because we can the use XSLT to replace certain aspects of the SVG and do it on the server, on the fly. Here is a fairly crude example but it does show the idea of what I am talking about.
So what does this gives us?
It gives us just about everything every designer has been bitching about since the dawn of the web. I think Mike Davidson put it best when he said: “we can’t deliver something classical typesetters have delivered since at least the 15th century”.
Not to mention the aggravation we have to go through just to make a gradient backgound with rounded corners for a region. These techniques are just silly when they could be style=”background-image: url(mySVGbg.svg);”
If Microsoft were to actually support this and a few other simple standards, the web would actually be an exciting place to design and develop for again. Right now it is degenerating into massive frustration at every turn when you want to deliver any other than plain text.
We really don't need all the SVG capabilities like animation and interactivity, all we really need is the vector drawing and filters that it provides. If you want to do animation, do it in Flash, interactivity is not really a bad think to have because then we could use SVG to make Aqua Style Buttons and piss off Apple. This could also lead to a bunch of new way to make annoying popups and cause security holes, but I'll leave that topic in the more capable hands of the broser developers because they should have a pretty good grasp on how to eliminate those annoyances by now.
Developers (at least this one) don't want to make whole sites in strictly SVG, we just want to use a few of the capabilities from it to fill the gaping holes in the short-comings of HTML and CSS. So, even if Opera, Mozilla and Firefox all supported SVG natively, it's not going to be widely used until its supported natively by Microsoft.
In conclusion, how are we going to provide backward compatibility? If there is a relatively simple way to do a background replacement through javascript like the sIFR technique, that would be sufficient enough for people to at least start experimenting with the idea.
When that happens, the entire landscape of the web will change, much for the better.
At the AZGroups ASP.NET meeting last night, I had a great conversation with Scott Cate and few other developers about the state of Web Programming.
The concensus was something like this: “HTML SUX” ok, its got it's place but providing a decent looking UI has become increasingly difficult to do, not easier. Making Cross-browser compatible interfaces is just nonsense given the tools we have for creating dynamic, data driven sites.
When I first saw Corel Draw and Illustrator back in 1987 I thought that Vector UIs were right around the corner, until we get Avalon we won't actually have a true Vector UI, so it only took 20 years to implement Vector UIs... Why have we had to wait SO LONG for a simple vector based set of tools so we don't have to do rediculous gymnastics to provide something as simple as a box with rounded corners, or an element with a drop shadow.
Sure all this can be done, but at what cost, and what if you want to change it, the ripple-effects are so frustrating that it makes you want to fall on your sword. CSS isn't supported the same everywhere, making Scalable gradients is a joke, and putting 100 gifs/jpgs/pngs on a page to achieve a design is a bit silly.
Most of us “professional coders” have an arsenal of tricks we use to make compliant html pages that work in most if not all browsers, but its just too much busywork when the tools exist to make this simple.
We have SVG, Flash, XUL and XAML all on the horizon to completely change the way we format pages, but will any of them rise to be a standard? Who really knows, unless somebody starts committing to these things and championing the reduction in development cost and maintenance designers and developers are just going to stick with what they know until they are forced to change.
Some people have jumped ship and just gone back to making Windows Apps that talk to web services and use one-touch deployment to ease the pain we used to have with installation and DLL Hell. While this is great for Windows based solutions it does nothing for the public web.
The bottom line is that we need a set of tools we can use to make all this really simple to implement, work in all browsers and look like a rich application.
With the Web Services tools (WSE2) we have today, Indigo on the horizon and equivalent support from the Open Source side of things we are most likely going to see a rapid shift in the way Web Apps look. Themeing is important, but so is consistency of operation. The whole reason Windows dominates the business world os because all programs follow a set of standard that are common throughout applications, F4 closes and App, F1 is help, ctrl-c cuts, etc. while this is great and can be over-ridden, most people can use any application immediately and learn the depths later.
If the Browser has any chance of really being the least common denominator, it's going to have to present a site the same no matter what developers and designers are doing (if they follow a set of standards). If Microsoft is serious about making IE7 a great product and not just a step up from IE6 they have alot to do.
On the same token, Firefox is not the Holy Grail of browsers either, it doesn't easily support SVG, you have to use an alpha version from Adobe to make it work and dig around for installation instructions.
I could ramble on and on about this, but I am going to attempt to make a difference and jump to SVG and make some tools that I can use that work the same in every browser. SVG doesn't yet have the penetration Flash has, but it's a lot easier to program with and you can use Illustrator or Visio to make your SVG, or you can create SVG programatically on the server. This is exactly what we need to make Rich UIs on the web and stop forcing HTML to do things in bizarre ways just to make it work across browsers.
The cool thing about SVG is that you can have the best of everything, now we just need to convince Browser makers that it should be BUILT-IN to the browser and not just be a plug-in, when we have this, we can make Win Apps, Linux Apps, Mac Apps, and Windows Apps all look, feel and operate essentially the same. I can't begin to tell you how many headaches that will solve for the real-world developers and bring a innovation to programming we have never seen before.
The tools are there, we just need to start using them.
Blogroll Me!
Blog Search Engine
Copyright © 2003-2004 H. Steele Price, IV -
All opinions are my own, not necessarily those of my employer, your mother, or any government agency.