The big platform debate 1

Posted by Neil on August 24, 2007

As you are probably aware there is a choice now for CFML developers (CFMX for Java, Bluedragon for .NET).  But, for now I’m not interested in CFML, I want to hear from people about the underlying platforms.

Therefore, if you are a Java or .NET fan - why should I choose your platform over the other for day-to-day web development?

The things I want to hear most about are:

  • Cost
  • Performance
  • Reliability
  • Flexibility
  • Development Times
  • Front-end technologies and ease of use
  • Data tier integration
  • Support
  • The bad bits (i.e the stuff you don’t find out about until trying to fix a bug the night before a deadline)
  • Tooling (Eclipse vs Visual Studio)

…and finally…

  • How does it help you with CFML development?

Tell me what you think…

The second craziest use of technology I have seen…

Posted by Neil on August 22, 2007

A couple of weeks ago I posted about a really clever use of Flickr.

Well, I come across something even more impressive.  As described on the site:

“Revealed SIGGRAPH this new method of image resizing looks for seams (not simple columns or rows) of pixels with the ‘least energy’ (least contrast / change in detail) both vertically and horizontally in the image and then uses this to enable resizing without losing important image content such as human subjects or other detail. This technique can be used for reducing and enlarging images as well as removing items from the image which are not wanted (by manually painting ‘negative weight’ over an area of the image).”

Looking to pick up some .NET skills? 5

Posted by Neil on August 21, 2007

If like me, you are a CFML developer and looking to pick up additional skills (namely .NET) you might be interested to know that there are three webcasts on Microsoft.com that you can watch explicitly targetted at yourselves.

Personally, I have only had time to watch a couple, but if you would like a quick primer in ASP.NET and how it directly relates to CFML, check them out. Even if you have no interest in .NET, it’s always good to be aware. If you are Bluedragon.NET user, then these are definitely worth a look.

MSDN Webcast: Introduction to ASP.NET for ColdFusion Developers (Part 1 of 3): Adding ASP.NET to Your Repertoire (Level 100)

MSDN Webcast: Introduction to ASP.NET for ColdFusion Developers (Part 2 of 3): Building an Application (Level 200)

MSDN Webcast: Introduction to ASP.NET for ColdFusion Developers (Part 3 of 3): Designing for Code Reuse (Level 200)

I love things like this - they help me with my target of learning a new language every year.

Bubbles! The Bubbles! 5

Posted by Neil on August 16, 2007

In case you’ve been hidden under a rock for the last few months you’ll have noticed that there is a bit of a change coming about in how information is presented on the web. This is the move to the Rich Internet Applications (RIA’s) and their respective display technologies.

It is these technologies that I have spent a little bit of time looking at recently, and I thought I would share those thoughts with you just to see what other people thought.

At the moment, there are four significant competitors for the RIA market. Adobe’s Flex, Microsoft’s Silverlight, good old’ DHTML and Sun’s JavaFX. Generally speaking, all these technologies are able to bring to the browser more than that of traditional HTML either via sprinkling’s of Javascript (DHTML) or a browser plugin (Flex, Silverlight and Java FX). So what are they all like? Well, I’ve had a little play with all these things and think the following of them:

  1. Adobe Flex.

    Adobe’s Flex has been out for a while now and is headed towards version 3 as we speak. I’m not going to state the obvious here as to the capabilities of the system, as any old monkey can get that information from any Google search. I’m merely here to tell you what I think. Flex is an interesting if slightly restricted model. It runs in the Flash platform, which makes it nice and umbiqutous out of the box, and the SDK is also free, which means you can develop Flex apps freely. It’s also open-source to a certain extent which may float your boat.

    The reason I see Flex as restricted is down to the Flash Player. Being a browser plugin it is constrained by browser security, and can therefore only accomplish certain things. Yes, it is very big capabilities with animation, but I feel it might be somewhat limited on the more complicated stuff. The worst thing Adobe could do here is rest on their laurels and think that because they have the most common piece of the software on the planet under their control they don’t have a problem - but they do in the shape of the other tools mentioned here.

    There is also the open source aspect to Flex. At the moment, I beleive this only relates to the components that are used within the compiled swf’s, and not the core compiler itself - which very much limits what contributions and changes people can make to the tool.

    At this point I should probably mention AIR, the Adobe Integrated Runtime, which let’s you run Flex (and HTML) apps in a desktop context, thus being able to access local disk and even use a small client db server. However, for me, I can’t really see this taking off in the way that Adobe intend. For instance, most of the users that I meet are working on corporate networks, and cannot install new software themselves, when they can quite happily install browser plugins. For me this is a massive problem. Firstly, why would my user want to have to download an app to use another app, and secondly, why should I force my users to have to install something (which just makes their lives harder)? Everyone I know just wants to get stuff done.

  2. Microsoft Silverlight

    Silverlight is an interesting one for me. At first it appears to be direct competitor to Flash/Flex, but upon looking into it there are substantial and very interesting differences. The main one that I am aware of, is that Silverlight contains the .NET framework and the CLR, which, if you aren’t aware, is a lot of code that can do a lot of things. While developing Silverlight, MS took the .NET framework and took out everything that wasn’t needed in the development of RIAs, then they shrunk it a bit more. This meant they were able to get everything you might need into a small download.

    Now, if you think about this also from a resourcing point of view, this is very interesting. Now I can teach a guy C#, and he can go away and work on my data tier with SQL 2005. The same guy can they go and work (with the same skills and tools) on my business tier. Once done, he can also work on the presentation tier (Silverlight and ASP.NET). This is a very compelling scenario and it makes a development team incredibly flexible. One set of skills for all scenarios.

    Incidentally there is no reason why you couldn’t write your silverlight apps in Ruby by using the DLR.

    Another small thing to note is performance. .NET is fast, and this carries through to the Silverlight player. Also note, that cross-platform coverage is also kind of limited to Windows and OSX, although the mono project has built a *NIX based version of Silverlight - Moonlight.

  3. DHTML

    DHTML is the old kid on the block. By using traditional DOM manipulation, developers can acheive a lot. However, they also expose themselves to untold problems with browser compatability, performance issues to take into account, plus an overall limitation on what is possible. However, nothing requires installation, it works for everyone (that the developers have built their app for).

  4. JavaFX

    JavaFX is another stab at Applets from what I can see. Sun trying to create a small downloadable JVM that can run in browser in a similar vein to Silverlight. However, the current version is so slow, and painstaking to load, that I am going to barely consider it here until a much improved version is released..

So, as you can see, there’s quite a choice. But, why the title? What’s this got to do with bubbles? Well, the thing that kicked this off for me was visiting bubblemark.com. Bubblemark.com is a performance benchmarking piece of software that measures the performance of these various technologies in your browser. I ran through the tests and got some interesting results:

  • DHTML - 40 fps
  • Flex (cached) - 58 fps
  • JavaFX - 16 fps
  • Silverlight (Javascript) - 60 fps
  • Silverlight (CLR) - 220 fps

Now, I don’t know about you, but these results are stunning for Silverlight, and fairly dismal for JavaFX. It’s also interesting that Silverlight (Javascript) and Flex are the same speed considering that one is interpreted and the other compiled. Now bear in mind, that I only ran these test on my machine a couple of times, your mileage may vary (and please let me know if they do).

So, after all this, it’s easy to see that there is a gamut of options. For me, Silverlight looks to be the most promising overall, but as it hasn’t yet hit a final release it’s hard to fully judge. In the interim, Flex has to the RIA platform of choice due to lack of a capable competitor in the market.

If you have any differing thoughts, please let me know.

Here’s my OPML

Posted by Neil on August 15, 2007

A couple of people have asked me what feeds I read on a daily basis, seeing as I am constantly monitoring 1,200 feeds floating past on feed-squirrel.

Well, that’s easy to answer because Google Reader (my RSS reader of choice) allows OPML export.

So, here’s mine.  Let’s see yours….

All change! 2

Posted by Neil on August 15, 2007

So, what’s been going on with Feed-Squirrel recently? Well plenty thanks….

You may have seen a few days ago that Ben Forta had posted that feed-squirrel.com (my main aggregator site) had migrated to CF8. For me, this is a key step that the site needed to take in order for me to try some new and interesting stuff in the near future. But enough of that, let’s get into the nitty gritty of what’s changed…

  1. Overall performance. Hopefully regular users will have noticed significant increases in the performance of the site. This is for a number of reasons
    • Coldfusion 8. Although it’s difficult to quantify, it’s make an improvement to overall speed.
    • Caching improvements - Lots more of the site is cached, meaning a lot less work required on the data tier (which is one of a not so nice parts of an aggregator)
    • No more Model-Glue - Now that may suprise a lot of you, but I’ve effectively gone for the anti-framework. All parts of the site are now built in a fairly bespoke way suited to performance and maintainability. There is still a central data object but everything else is split out in a very lightweight MVC style. This has meant that I have been able to get rid of a lot of the bloat that a complex framework brings, and reap the performance benefits. Also, I never really got on with Model-Glue. I found it got in my way.
  2. CFFeed. This tag alone makes my life a lot easier. Unless you’ve ever tried to write some RSS aggregation code you would not beleive how many different feed dialects there are out there. Out of the 1,200 odd feeds the site aggregates, I’ve come across around 1,200 different ways of presenting feed data. It would appear Atom vs RSS is only the top of the iceberg. You may notice that some previously dormant blogs are now aggregating successfully….This is down to CFFeed.
  3. CFThread. Another superb tag. Right down in the bowels of this site is some import code, this code runs through every feed on a regular basis checking for new items. Due to the fact there are so many, CFThread now means I can check all the feeds on a more regular basis without having the long running requests that I previously would have had.
  4. CFLayout. Check out the “Watched Feeds” and “Create Custom Category” pages. These used to be one huge list of feeds. Now, by using the CFLayout tag, this page has been reduced in size greatly, and even makes it easier to find what you are looking for.

So, all’s good then. Well, as with all migrations there are small problems. I had three significant ones which were:

  1. Corrupt Table.This is an error that Coldfusion started returning was load was placed on the server. After some quick tracing, I tracked down the problem to cached queries. It appears that sometimes a cached query can go a bit screwy and force the server to return this error every time the cached query is used. Strangely I found that the error was still returned after I removed the cachedWithin attribute from the query. The only way I could find to get of the error was to flush all cached objects from the server with the CFObjectCache tag. Unfotunately I have not seen this since so I can’t really tell you anymore.
  2. Cannot create a new thread because the task queue has reached it maximum limitI started getting this error on the importer. A server restart was the only way to fix the issue and I’m a little unsure as to what the problem might have been. After thinking about it for a while I beleive that there is a thread limit built into CF and that that threshold had been met with entirely unresponsive threads. It would appear then that once this thread pool is full, CF just returns this error.
  3. CFFeed limitationsI said before CFFeed is a great tag, and it is, but for me there is one limitation. CFFeed can go off and retreive feeds for you, but for some reason Adobe have left out some of the key functionality of the CFHttp tag which is useful from a resilience point of view. Primarily is the timeout attribute - that the tag should stop trying to read the feed after x seconds. Secondly, CFFeed doesn’t play well with Http Authentication. Whilst in development, I uncovered a situation whereby CF was sat spinning a thread due to the fact that the CFFeed tag had tried to retrieve a feed that required Http Authentication. Instead of failing out as you’d expect, CF just sits there for ever and ever, never timing out, and never returning an error. As far as I can tell the only way to kill the thread is via a server restart. There is a workaround though. Simply use the CFHTTP tag to retreive the contents of the feed, before passing it into CFFeed to deserialize.

So, overall hopefully you guys find the site is more pleasent to use and some small touches make it more useful to you. When you consider that the site’s ground up re-write from blank to now took me around four hours, thats not bad going…

Now, on to the new features. Watch this space….

The craziest use of technology I have seen this week is…. 3

Posted by Neil on August 10, 2007

Scene completion using millions of Photographs

“We present a new image completion algorithm powered by a huge database of photographs gathered from the Web. The algorithm patches up holes in images by finding similar image regions in the database that are not only seamless but also semantically valid. Our chief insight is that while the space of images is effectively infinite, the space of semantically differentiable scenes is actually not that large. For many image completion tasks we are able to find similar scenes which contain image fragments that will convincingly complete the image. Our algorithm is entirely data-driven, requiring no annotations or labelling by the user. “

Do we have too much aggregation? 8

Posted by Neil on August 08, 2007

I realised today that there are four major RSS aggregators in the Coldfusion community.  We have Feed-Squirrel (of course), MXNA, Fullasagoog, and now Ray Camden’s ColdfusionBloggers.org.

Each of these aggregators are different in their respective feature sets, and reach in terms of coverage and readership.  However, I’m now starting to think we have quite a high aggregator per community developer count…is there such a thing as too much?

Out of interest, how many people out there use aggregation versus tools like Google Reader (which I personally use*).  Is there anything that these tools don’t do for you which you would love to see?

* My particular reason for using Google Reader versus my own site is a simple one.  I follow around a thousand blogs, of which only a percentage are covered by Feed-Squirrel.  However, Feed-Squirrel does supply 100% of the Coldfusion and Flash coverage.

CF Survey Results (Part 1)

Posted by Neil on August 06, 2007

Last week, I posted a couple of surveys that you guys could fill in in order to tell us all a little bit more about ourselves. Well, we’ve had a fair chunk of responses now, so I’m going to post up a summary of the results and what they could mean. In this part I am going to cover the “How do you use Coldfusion?” Survey (203 responses).

Q1. How many web developers are in your organisation?

Interesting split here with the majority of you only working in companies of 0-2 web developers. Either this means the majority of CF is done by one-man-bands, or that work is a small department within a much bigger non-web orientated organisation (US Government for instance).

Q2. How many of those web developers regulary use Coldfusion?

Again, very low numbers here, 40% of you being in the 0-2 bracket as you would expect. However, saying that someone answered with 40+ developers using CF. Any Adobe employees filling in this survey?

Q3. On average, how many years experience with Coldfusion do these developers have?

In general it looks like we are a pretty experienced lot when it comes to our tooling. 90% of us have more than 3 years experience with CF, with approximately a third of those being 5yrs plus. It would seem that we like to stick with our tools for the long term.

Q4. How many Coldfusion servers do you have?

Fairly even split here amongst all of the options on offer. Our adobe employee answered 20+ of course, but there seems to be a wealth of people (around half) running more than five CF servers.

Q5. What versions of Coldfusion do you run?

Surprising one this. 40% of us claim to be already running CF8. If that’s true, that is one hell of a migration schedule. As expected most are using CF7 (80% are using it), but there is still love for CF5 and 6. 20% of us are using Bluedragon in one form or another.

Q6. What editions do you use?

Now this one is not the answer that I was expecting. 80% of us are using CF Enterprise, versus 40% using CF Standard. Interestingly only 40% of us are using a development version of CF (and how that works without developing on production or a shared box, I have no idea).

Q7. What platforms do you host Coldfusion on (regardless of development, test, staging etc)

Oh, we love to love Windows. Windows is by far and away the most prolific platform for CF, with 95% of responses claiming to us it for CF. Only 35% of us like *NIX, whilst 20% of us have CF running on OSX in one form or another (I’m guessing guys developing on Macbook Pros here)

Q8. What deployment models do you use?

75% favour the ease of the standalone model here, with 45% taking that additional step to multi-instancing. This surprises me somewhat as the multi-instancing is such an easy step to take, and reaps so many benefits, that I would have thought it a no-brainer. Only 10% of us use proper J2EE deployment in any form.

Q9. What web servers do you use?

It would seem that if we are running Windows, we prefer to use IIS, with 95% of us using IIS. 65% use Apache in some way, whilst someone out there uses something else.

So, what have we learnt? Well, much of it is as I would have expected, but there are a couple of surprising results. Firstly is the amount of people using CF8, and secondly the number of people using CF Enterprise. Surely we can’t all be enterprise level developers?

Anyway, I’ll post the results from the second survey “How do you code?” at some point over the next few days. If you want to respond to this survey before then, please feel free, the more responses the better.

So what is Enterprise anyway? 3

Posted by Neil on August 02, 2007

Over the last couple of days, I’ve been trying to answer a question that popped into my head when CF 8 came out. That question is simple:

    “What is enterprise level software?”

This has mainly originated from the conversations that have been taking place surrounding the price increase of CF 8 Ent over CF 7 Ent, but one comment in particular made me want to write this post.

    ” First, ColdFusion Enterprise is Enterprise level software. $3,750 per CPU ($7,500 for a 2 CPU license) is nothing short of a steal. Seriously, go check out pricing of other Enterprise level software, then come back to me and tell me that ColdFusion isn’t a bargain.”

Please bear in mind, that none of this discussion is me claiming that CF isn’t Enterprise quality or anything like that, it’s simply me trying to define the term in my own mind.

So, let’s go back to the original question, what is Enterprise software. According to Google it’s:

    “Software that solves an Enterprise Problem (rather than a departmental one) and that is written with an Enterprise Software Architecture”

OK then, the vauge award goes to Google. So what about Wikipedia?:

    “Enterprise level software is software which provides business logic support functionality for an organization, typically in commercial organizations, which aims to improve the organization’s productivity and efficiency. “

Well, to me that sounds like a definition for all software and we appear to be no closer. So, what’s my definition of Enterprise level software? If I had to paraphrase it, it would be something like:

    “Enterprise level software is business software that requires very high levels of reliability, scalability and performance.”

I see Enterprise vendors as people such as IBM, BEA Weblogic, SAP, Oracle and Microsoft (to some extent).

So, let’s come back to the original product in question, CF 8, in the context of the post that made me get thinking on this. According to Adobe, CF8 Enterprise is:

    “Used for delivering multiple websites and applications on one or more servers”

Now, to me, this doesn’t sound very “Enterprisey”. At my employer, we are running hundreds of logical sites on several servers, we are running applications that businesses depend on, but do I see myself as an Enterprise developer…? Not by a long shot. Do I see myself as requiring the Enterprise features of CF8…?    Absolutely.

Looking at the differences between Enterprise and Standard editions, some things should identify your level of development (if we are sticking to the Enterprise theme). For instance, J2EE Deployment and Oracle DB Drivers. Just because I want to deploy a multi-instance server using a Oracle database does that make me Enterprise under any of the above definitions? I’m not so sure.

So let’s come back to the original question: “What is enterprise level software?”. I don’t think I’m any nearer a proper definition in my head but I’d be interested in hearing other peoples opinions on the subject.

What do you see as the definition of Enterprise software? Do you see yourself as an Enterprise developer or vice versa? For those that don’t, do you feel the need to use Enterprise level software in your projects?

(Incidentally, as a little footnote here, I remember the days where CF came in “Standard” and “Professional” editions. Does anyone know why/when it changed?)