Sunday, April 22, 2007

Frameworks, frameworks, frameworks

If you're still rolling your own routines for basic things like content delivery or data access, then you're crazy. For every modern programming technology, there are more than a few frameworks available. It's seems like it's just that time in history. Like the layers from a core sample at the norh pole, the layers of technology represent a view back into the evolution. Even if there are only a few layers (C/PHP/Zend Framework for instance), the principle still applies. The framework I wrote (XAO) will sit along side and be compatible with the Zend Framework. I'm also interested in JavaScript frameworks lately. the YUI and YUI-Ext frameworks in particular. If you haven't seen them, they are amazing. check them out.

The combination I just mentioned (PHP/Zend/XAO/YUI) is unstoppable.

Monday, January 01, 2007

Firefox 2.0: the enterprise client OS for Web 2.0

http://developer.mozilla.org/en/docs/Firefox_2_for_developers

This free software never ceases to amaze me. If ever there was an Enterprise desktop operating system that runs on web 2.0, this is it. There is no better client platform for delivering Enterprise applications that live in the web space.

Since I am not on any internal Firefox team, I can only speculate on the philosophical general direction they are taking the project, but let me say this... Firefox is become a more and more connected product. In the same way computers have gone from being described according to their function, to being described according to their role in the network, firefox is placing more and more importance on it's ability to relate to other systems. In the same way that an operating system integrates hardware with applications that in turn, pass on the hardware's functionality to the user, firefox is integrating Internet systems with the user via the applications that it ships with, but it allows you to build enterprise application[ client]s (preferably in XUL, but optionally [x]html).

Having set the context thus, lets just look at the list of NEW features (not including the already available SOAP or AJAX related milestones):
  1. Microsummaries are a reductive utility for mining existing content for simple and effective re-purposing of basic content to other systems. It uses the mature W3C technology of XSLT to achieve the mining as well as the power and versatility of the mature standard that is regular expressions for targeting. Microsummaries are all about integrating and connecting your existing content with your existing systems or the systems of your partners/customers.
  2. OpenSearch. A self explanatory name. An open standard for integrating search systems. This is supported by IE7 as well as Firefox 2.0. Firefox makes this so easy, a developer could well turn up to work at 9am, read this blog over morning coffee, click a few links for research, follow this tutorial, and have his company's intranet search facilities available as part of the firefox web OS by lunchtime. And that is being conservative :) (change control processes not withstanding).
  3. Javascript 1.7 is a major step in bringing the most misunderstood programming language up to speed with more conventional contemporary software technology. As a technology it was already in a league of it's own (for those who understand it), and now it's a whole lot better. This kind of ongoing commitment, by the mozilla team, to the core facilities of the developer, is what allows allows this product to lead the way in add-on functionality provided by other companies and individuals.
  4. Web applications are not new, and so it is no surprise that some group is attempting to standardise cirtain patterns by rudcing them to a high-level API which is incorporated into the existing W3C standard DOM API. Again, firefox leads the way and starts implementing parts of it immediately even though the standard is only in draft form.
  5. SVG still has a bigger role to play than anyone is giving it at the moment. I say this because it is a standards based technology based on the XML standard. This means that it should be easy to appropriate XML formed business data for complex visual representation without needing to create complex flash applications to fit in between your enterprise system and your web client. Firefox's ongoing commitment to SVG shortens the path. AJAX was based on technology which was there for a long time and then one day the world woke up and suddenly started to use it (after giving it a catchy name). I reckon SVG will have the same fate.
  6. Spellchecking with web forms - duh! Why has no one done this before? Anyway, it's done now, and Firefox is leading the way to consolidate itself as a applications platform. Shouldn't all applications, including web applications, have a built-in spell checker? Now it comes as part of the firefox web OS.
  7. Web 2.0 runs of a connectionless protocol commonly known as HTTP. This means managing user-sessions is an issue for enterprise applications. Finally we are getting some real help on the client-side now on this issue. Firefox gets down to brass tacks on this issue with the new session store API.
  8. There is now an API for utilising RSS feeds. OMG this is great. Sure, you could have rolled your own using AJAX, but now you don't need the overhead of debugging and maintaining that crap on the hostile environment that is HTTP. By standardising and streamlining the API into the Web OS, Firefox is going to encourage users to re-purpose syndicated content in ways they never would have bothered to before. Let me tell you, I think this one simple feature is going to underpin a great many of the most useful new browser extensions and XUL applications. Again, this technology focuses on integration - relationships. Enabling business to establish better relationships with their partners, their customers, and between systems within themselves.
  9. Remember how you could write windows programs with the ability to use MS Access .mdb files to manage data using SQL? Well that's what SqLite was designed to do for open-source. This is an efficient, proven technology now which is bundled with the latest PHP server technology. It is available for all the relevant modern languages and now it is available as part of the Web 2.0 OS. Effortless data management for anyone who can use SQL - now available to you via JavaScript. Oh happy day!
I've just reviewed the features mentioned on said announcement page. I haven't gone over existing features. Looking at the new stuff, it is clear that Firefox two is relationship focused, integration focused - enterprise focused.

Today, a large software company, by the name of Google, is finally giving another large traditional software company, by the name of Microsoft, something to think about. It's new office suite (gmail/calendar/spreadsheets/docs) is a fully online web 2.0 application. The myriad of supporting applications are going to help them be the first company to challenge Microsoft's seemingly unassailable dominance. At the moment, their web applications are HTML based. That's expensive, because there are high maintenance overheads associated with that fact, not the least of which is browser compatibility. HTML is a technology has always been a bastard child in the context of an applications platform. It's future in that capacity is extremely limited. This is where Firefox's XUL technology answers the call. Leveraging existing standards like JavaScrip/CSS/XML. Let me contend that as a business, you don't want to be supporting HTML applications. You also don't want to be delivering your home-grown business applications via the now ageing desktop operating system. You want the new platform - the Internet. But you also need the best desktop operating system for the Internet. You need Firefox 2.0.

Friday, December 22, 2006

Are Free Tools Really Free?

This blog post is a response to another blog post by the same title. Initially it was posted as a comment...

Not so fast Jens...

There are at least 2 problems with your assertion being blanket (noting the use of the word NEVER).

1) Bundling costs with other optional extras you bought from 3rd party people.
2) Free as in "Free beer" vs "free" as in "freedom" need to be clarified. Go read up http://en.wikipedia.org/wiki/Libre or http://www.gnu.org/philosophy/free-sw.html

BUNDLING COSTS TOGETHER
You point of view is suffering from tunnel vision and only concerns itself with the cost of producing something (using ?free? software). Granted, productivity is never free, but you are confusing the cost of a service with the cost of tools. They are separate things, the software itself is still free - and the support is still optional.

A lot of software is cost free (as in free beer). If gives you something at no charge, then it is free. Lets say I went to a festival, and someone was handing out free plain white T-shirts. The T-shirts would be free. If I decided I want my T-shirt to be embroided by another person and that cost me $10, then the T-shirt is still free, it is the embroidery that costs me $10.

Why take a different view of the software world?

If I download software at no cost from eclipse.org then the software is free. If I go buy some support for it from a 3rd party, then the software is still free but the support has cost me money.

Trying to enmesh the different suppliers and declaring the free stuff to be part of the total bill is like hiring some developers, using eclipse (or netbeans) and then claiming that the software has cost you the wages of the developers. You would have to prove measured inferiority to an alternative costly tool and prove that extra help was needed. Even then, you are drawing a long bow.

FREE VS FREE
A lot of the time I use free software because it is un-encumbered by licencing "issues" which may affect the cost of time or effort to deploy. Usually commercial licences come with a burden on the user to go through a financial transaction before having access to the functionality, sometimes this is inconvenient, and sometimes it poses a risk to the viability of a project (and therefore and productivity related outcome).

IN CLOSING

There is a lot to be said for free software on many levels, but there is always some cynical smarty pants who thinks they know how to count beans that others can't see. It's not original any more. It costs time to read, and is of no appreciable value. It also has a negative effect on the altruistic human desire for people to donate their free time to write software for the benefit of the community.

Eclipse might be "free" for reasons other than altruism, but MyEclipse wouldn't be able to support their high feature/cost ratio if the eclipse platform were not cost free to begin with.

Saturday, August 19, 2006

Say NO to inline styles!


This is my advice to anyone writing a web application that may be extended by another person. In my case, this became important when making templates for my favourite CMS. More specifically, the shopping cart plugin that I am using with it.

The problem is quite simple. the usage of inline styles wrests control away from the template designer and can (as in my case) cause bugs in the GUI. So it's not about subjective personal taste, it is about software stability.

CSS stands for Cascading Style Sheets. In this context, the word cascade applies to the order of priority that a a competing collection of style definitions has on a target HTML (or XML) element. We all know there are three ways that a style rule can apply to an element.
  1. From an external file that is linked or imported
  2. From an embedded defenition included in a <style/> container element
  3. From the value of the style attribute associated with the target element.
The last method listed above is referred to as an "inline style". The order or precedence is the reverse of how I have listed them. Inline overrides embedded overrides external.

This means that if your HTML application defines styles inline to the markup that you output, then the template designer will have to hack up your program in order to regain control over the style. ie. they will have to remove your inline style definitions. The same applies to embedding styles. Its marginally easier to work around embedded styles but it still goes against the idea of templating. In fact, there are work-arounds, but I won't go into them. I don't see why work-arounds should be accepatable when there is nothing to lose by putting all style information in an external CSS file.

You could argue that your understanding of how your content will be templated by someone else is utterly comprehensive. But in my opinion, that would be ambitious to the point of being fool-hardy. It limits the extensibility of the application unnecessarily and your application may was well not be template-able. There goes your separation of concerns, and there goes the sound design of your app.

So please, be nice to layout engineers (designers), and say NO to inline styles.

If you need to brush up on your CSS skills...
http://css.maxdesign.com.au/

Monday, August 14, 2006

Open-source Content management.

I've only managed to dip my toe into the waters of the CMS industry from time to time. The sheer size of the industry can make choosing one a bit overwhelming at times but I'm always intested to see what the latest developments are. More recently, I have started setting up clients with their own websites. Many clients just want an "online presence" and they don't even know what a CMS is, let alone if they want one or not. So we just make it a standard practice to supply them with a free one.

Every now and then, a product comes along that is so "disruptive" that it has enough critical mass to make it's own gravity field. This is usually evidenced by proliferation of satelite products that spring up in response to it's success. Joomla is so new, I could not find any articles on it at CMS Watch . Yet when you look around then net for all things Joomla related you have everything from Joomla template vendors, to Joomla extension vendors, to Joomla specific hosting and not to mention design services and general support.

As for my personal experience with the product, it's early days, but it has blown me away with it's professionality and has impressed me enough to commit to using it as the platform for my clients online presence. This is a pretty big commitment given that this implies that I am willing to provide professional support to Joomla long-term. Here is why I personally like Joomla:
  • It has a very active community and a well organised homepage
  • It will run on common ISP's PHP setups with no real special requirements
  • It is an absolute breeze to install thanks to it's intelligent auto-detections
  • It has a solid API that is well defined and well (improving) documented.
  • It is extensible in multiple dimensions (at least 3 formal extension APIs)
  • It makes extentions easy to create and install due to the use of XML descriptor files. This also facilitates catering for Joomla extension creation in IDEs.
  • The templating is simple, yet flexible
  • It is pure open-source
  • The Admin interface is very pretty and works well. This is important for collegues and customers.
  • It is very user-friendly. The Admin areas is very logical and well laid out.
  • Already has a vast array of free extensions available for it - including all the important types (gallery, forum, wiki, eCommerce etc).
  • And last but not least, they have catered to many little details - which make using the system a pleasure.
Bear in mind that the Joomla project is the result of a split in the Mambo (another open-source CMS) scene where the commercial company that instigated Mambo saw fit to leave many of the core developers (open-source contributers) out of the Mambo Foundation they set up. Often you will see the prefix "mos" - which refers to Mambo Open Source (as there was a proprietary/commercial version of Mambo as well).

Go have a look see at http://www.joomla.org

Thursday, August 03, 2006

I'm making Internet Training Video

I'm drawing on my "vast reserves" of general IT knowledge to create a training programme in the video format. It will be a typical screen video (footage of the desktop) with narration from yours truly. Hopefully I will have the time resources to include some animations to re-enforce the conceptual stuff. The video will not be for set-top DVD players, but rather in the FLV format hosted in HTML pages. It is envisaged that the user will view the tutorials on their desktop where they can switch between viewing it and trying out some of the concepts.

So. All that remains is for me to put together a curriculum and execute the delivery. I would really like to get your input into the topics you think should be covered. Obviously "the Internet" is a very broad topic with squillions of sub-topics. So suggest away, and there is every likelyhood that it will appear in the title.

I'm not sure on the delivery model. I think there will be a website where you can watch it, plus you can order the DVD (to save bandwidth). Some of the videos will be accessible for free. Some of them will be destributed through torrent. But to access the full library, there will be some sort of subscription plan.

Anyway, it's early days, so we'll see. I plan on having a lot of fun with this - may even compose my own musical intros etc :)

Wish me luck.

Wednesday, June 21, 2006

A Concurrency Coordination library in C#2

Anyone who has written reasonably complex multi-threaded software will understnad how error prone it can be. After all, it's not hard to imagine how difficult it is to rigorously test your code to simulate real-world conditions. It's can be done, but not everyone does it, because in many cases, it's error prone, and if you know what you are doing, laborious. Wouldn't it be nice to have a library take care of all the boring bits in the background while you focus on the coordination of your messages. Enter the CCR

http://channel9.msdn.com/wiki/default.aspx/Channel9.ConcurrencyRuntime
My status