Google launches App Engine 4

Posted by Neil on April 08, 2008

Last night, Google launched their Amazon EC2 competitor, App Engine.

For those of you that don’t know - Amazon EC2 is a system whereby you can upload a machine image that you can then create literally hundreds of virtual images from for very little cost.  Accompanying this is the Amazon S3 service which is essentially a huge virtual storage device in the cloud - priced in a very reasonable pay-as-you-go style.

The cool thing with EC2 is that it is all controllable with an API - so, for instance, you could potentially have a web application that monitors it’s own load, and scales out new servers as required fully automatically - you only pay for what you use.  This is great for new start-ups who aren’t really sure if their new super-duper social site is actually going to get no visitors, or become the next Facebook.

App EngineGoogle App Engine is a little different.  With this, you are given a pre-prepared machine image which is basically a web server rigged up to use Python (with other platforms potentially coming soon) and a Google driven data-store, which is bound to be a bit speedy.  Initially this might seem a little annoying as a CFML developer until you check out the free account.

As a non-paying App Engine subscriber you are somewhat limited on what you can do - but as Google describe it, you have enough for half a gig of storage and around 5 million page views a month.  Now, thats a pretty busy website in my eyes.  So, if you have a busy static website, a load of files requiring storage, or are handy with Python it’s worth a look - you could end up with a free web server.

On the other hand though, as a CFML developer, you’ll need to look at EC2.  With the advent of the open-sourcing of Bluedragon, we are now in a position where we can build a no-cost server image (comprising of Linux, MySQL, Apache, Tomcat and Bluedragon) which we can then deploy to EC2 and scale for very low cost and end up with a supremely scalable, and performant cluster of servers.  Best of all, if you don’t use it much - it doesn’t cost you as much, unlike having a rack of under used servers somewhere in a data-center.

So, come the revolution, we can all be building our infrastructure from nothing but the cloud, and scaling as far as we want, and best of all, for no cost but still using CFML.  Obviously Amazon EC2 is the only choice at the moment for cloud CFML computing, but I’m sure Google will make their system a little more customisable over time.

Are you making your machine work for you? 2

Posted by Neil on October 18, 2007

Have a little think for a moment about the end of your work day…you might well get in your car, drive home and put your feet up.

Now think about the machine you were using all day. What’s that doing while you have your feet up? Is it also putting it’s silicon slippers on for the evening? If so, you’re missing a trick. You are not making your machine work for you. You have spent out the money for a virtual employee who does exactly what he’s told all day long, every day, but yet you are only making him work, say, 8 hours a day? What about the other 16 hours in the day (and the 48 hours at the weekend)? There is hours a week that you could be making use of all the technology that you have purchased.

So, what to do? Well, think about what you would do if you had another 128 hours a week. Think about what could get done. Now, take out anything from that list that is something requires thought - leave only the tasks that are repetitive. What’s left? Test cycles, source control administration tasks, creating new builds of applications?

Typically, these are the things people find are left over, all of which take a long amount of your time when carrying them out during your working day. So, don’t do them while you are at work - do them when you aren’t, or more specifically, make your computer do them. Computers are experts are menial repetitive tasks - and more specifically, they never complain, and never get it wrong.

So what can we do? Well typically this is described as continuous integration/continuous testing. This is the concept of employing a computer to do the boring stuff that a computer loves. Sit back and look at your code for a few minutes. Hopefully you have some unit tests lying around, as well as possibly some UI web tests via Selenium or similar. I would also guess there’s some source control work that needs to be done on a regular basis to aid testing etc, as well as some other miscellaneous tasks. All these are ripe for automation using Continuous integration and ANT.

Now I’m not going to delve into what continuous integration is, because many many people have done it before, and have done it better than I could, most notably Martin Fowler. The benefits are endless. While you are sat around watching TV in the evening, a machine at work can be sat doing FULL unit test cycles of your software, FULL UI test cycles etc etc. How cool is that?

During the day, by writing a few simple scripts in key places you can also have your machine work for you during the day too. Just done some scary low level changes to some software? Well kick off the same processes that run overnight, go make a cup of coffee and come back to your machine (hopefully) telling you that your software is still working perfectly. Additionally you can use scripting to simplify some common tasks. Regularly branching/merging/tagging your source control over the command line or via a tool like TortoiseSVN? Well, write some scripts, whack together a page containing a load of buttons to do the tasks, and then you can do the menial repetitive branches etc at the press of a button while you are sat there possibly eating a donut.

Whth all these mechanisms in place, which incidentally can be done for free, you can save your time during the day, and do more stuff at night that you previously wouldn’t have thoughy logistically possible. It will give you more time to do the stuff that web developers enjoy - thinking through problems, and cracking out new code.

Online backup with Mozy Backup 3

Posted by Neil on October 15, 2007

I’ve always been a paranoid soul when it comes to backup. I’ve always sat there either burning DVD’s or labouriously configuring regular jobs to copy files to an external USB Hard disk which I then forget to leave on.

Therefore, I was quite chuffed when I got an IM from Kevin McCabe telling me about Mozy Backup. Mozy is a system whereby you bung them 5 dollars a month, and then you get unlimited upload to their backup servers via a little client app that you can install (and it works on Mac too). Once you’ve told it what you are wanting to backup, it does everything else for you. No schedules, no tapes, no DVDs - just a little client app.

Now, I’ve not tried restoring from it yet, and am still in the process of my initial upload of around 40Gb of data, but overall I like the stealth aspect of it all. I know that all my data is backed up both onsite and offsite for not a lot of money.

Just to note, I’ve just noticed that if you are backing up less than 2Gb, Mozy is also free…

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).”

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. “

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?)

Does anyone want to give me a Mac? 3

Posted by Neil on February 23, 2007

Well, if you don’t ask, you don’t get….

But why I hear you cry (those of you who aren’t converts anyway) ? Well, I’ve been a windows user for some years now (although a lot less than most), having started my web development career on SunOS and Solaris. Since then Windows has grown and stuff has happened. Apple have brought out OSX and the Linux community has moved on leaps and bounds.

Currently I have Windows XP on my laptop and it does me fine (for the moment) but to be honest I am getting fed up with “Windows Rot” to the point where I have must have reinstalled Windows onto a clean disk over ten times in five years. Now, I’m not your average user - I try to keep things as tidy as possible, yet within a couple of months, the rot sets in.

So, upgrade to Vista I hear you cry. Well, no, never in a million years. I managed to get hold of a copy which I used for a couple of weeks and then promptly un-installed when I heard about the DRM “functionality” that Microsoft have included in it. If you even consider this practice to be a good thing, I really think you need to have a deep think about what you are letting happen. As far as I am concerned, the only person who should be telling my computer what to do, is me. Just Me. No-one else. Especially Microsoft.

So, this leaves me with Linux or Apple. I’ve taken a good look at Ubuntu of recent, as it’s really my only alternative considering I already have PC hardware (a HP ZD8000 laptop). Ubuntu (and Linux) promises the world in terms of stability, security and speed, but what I have found in practice to be a very different story. Now, Ubuntu (I can’t really comment on other distros - suggestions welcome) installs really nicely, it’s a really clean interface but is let down by silly things - mainly to do with hardware. Now, my laptops nothing out of the ordinary, but installing Ubuntu leaves me a wireless network card that requires wires, a video driver that works without any 3d and a mouse that randomly stops after around half an hour requiring a reboot to fix. For me, this is a killer. I’m sure I could fix this with some random config file tweaks and endless surfing of forums (as everything in Linux seems to be) but to be honest, I want stuff to just work and not take all my time just to keep stable. Another thing is software. I use a library of software that works on all three OS’s (Windows, OSX and Linux), but there is some software that I would find hard to live without and Linux doesn’t support: namely Photoshop (can’t stand Gimp) and iTunes to name two.

Which leads me onto OSX. Currently this platform is way ahead in my eyes in terms of ability and support. I can run all the software I want on it with no problems, and I can also even run my windows software on it via parallels. I get the stability and security of Unix via the FreeBSD underpinnings, but I also benefit from the intuitive clean UI’s that Apple are famous for. For me this is the perfect system.

Almost.

Remember, I mentioned I had an HP ZD8000?
Yup, around a year ago this cost me over a thousand pounds, I’m not really in the mood to spend the same again just to let me loose on OSX, which is why I am still a Windows user. There is no way I can justify spending out a grand for another OS, let alone being able to afford it. I often wonder what would happen if Apple were to open OSX to the masses, distributing it shrink-wrapped to everyone - regardless of the fact that they might not be using Apple hardware. Sure, in a couple of years when my current laptop dies a death I will inevitably replace it with a Mac, but for now I’m stuck in Windows with no way out along with potentially thousands of others. Which leads me to my original question…

Does anyone want to give me a Mac?


Long ago few could realistically imagine the future history of laptops that was to come.

Do we need to be big and clever?

Posted by Neil on November 16, 2006

Walk into any bookshop these days and in the computers section you’ll find a vast mass of books available. Filter out anything that isn’t to do with Web development and you’ll be left with a few main topics, two of which will be Java and .NET.

Now, think hard here. What have you built in the last three years that required the power of .NET or Java? 99% of you will probably be unable to think of anything, which brings me to my point.

Traditionally, people tend to see languages as a ladder. Languages like HTML sit at the bottom, CFML/PHP/ASP in the middle and Java/C#/C/C++. Developers feel (I beleive) that they need to work their way up the ladder in order to become a better developer. Now, before I go any further I will say that exposure to new tools and languages is always a good thing.

Now, back to web development. The majority of web applications I have seen are quite simple. Start loading a page, maybe do some queries and perform some actions on that data, and return a page. Your pages maybe much more complicated but I dare say that they still follow this rough pattern.

So, for such a simple pattern why do we web developers feel we need to know Java/.NET? Why do we feel we need languages that are so bloated with strict data typing and 100% object orientation etc for such a simple task as a web page? Yes, I am aware a few of you have to integrate with some vast backend systems, but you guys are more the exception. Why do we need to learn what is effectively a very complex language with a stack of functionality that we don’t need?

Well, in a couple of words, we don’t. This is why CFML, PHP, ASP exist, to make our lives simpler. If we all wrote our apps in the more complex languages, our development times would go up, pushing our costs up and so on - which is a bad thing.

Now, why am I banging on about this? Well, in short, I see this having an effect on web development in general. I see people who are building for the web (and possibly other arenas) moving away from .NET and Java to much simpler platforms that are quicker and easier to write. For instance, Ruby on Rails or Python. Both of these platforms provide much of the power of a platform such as Java but without the coding overhead. For instance, let’s compare Hello World in Java and Ruby:

Java:

public class Hello {
public static void main (String [] args) {
System.out.println(”Hello World!”);
}
}

Ruby:

“Hello World!”

Now, thats quite some difference, and if you add up how much less time that code takes to write you, then that’s quite a lot of money you can save. It because of this that Java developers are ditching Java in favour of simpler platforms such as Python or RoR.

So, next time you’re sat there thinking about learning Java/.NET just to make yourself feel better - think about learning one of the more abstract languages (of Which Coldfusion is one) - not only will you find it easy to learn, but you’ll also have more fun writing it instead of getting yourself tied up in knots worrying about syntax.

What should a good developer know?

Posted by Neil on November 15, 2006

We were all new web developers at one point in our lives - and many of us still are. The industry can keep quite daunting to a newcomer so I thought I would pose a question that a lot of them probably ask.

What skills (based on the current job market) should I learn and why?

I'll list the basics leaving you guys to do the juicy stuff:

HTML, CSS, Javascript…