If you've got an interest in programming and web development, this category is for you!

The Programming category carries news and announcements about programming techniques, programming languages, development platforms and developer tools that we feel will be useful to developers who write software that builds upon or integrates with the Tucows platform. We know that our partner developers work on all kinds of web applications, so the articles we post aren't always Tucows-specific, but often cover general web development as well. Here, you'll find useful links, articles, advisories, opinions, how-tos and tutorials on topics of interest to web developers.

When Developers Create User Interfaces

Actually, I know a number of developers who have some sense of what a user interface should be like. But I also know some other developers, who when charged with creating a UI create monstrosities like the one below:

Screenshot of a very complicate ddialog box.
What's wrong with this dialog box? Click to see it at full size.

For more on this dialog box, see this entry in the blog Coding Horror.

If you're short on user interface designers, you might do well to follow the advice in this blog entry: Never design what you can steal.

The Duke of URL

We've just activated the latest addition to the OpenSRS API (the API that out partners can use to provision and manage domain names), the Name Suggest API call. Given a word or phrase, the Name Suggest API call will generate up to 100 available .com/.net/.org/.info/.biz domain names that are variations on that word or phrase. It's a useful tool if you're brainstorming domain names or if the domain name you want is already taken.

In order to demonstrate the Name Suggest API call in action, we've created an example application called...

Duke of URL

Duke of URL takes a word or phrase that you enter, lets you choose a domain name type (.com, .net, .org, .info or .biz) and provides you with a list of 100 available domain names based on the word or phrase that you provided. The Duke of URL lives at:

Remember that the Duke of URL is demonstrates just one possible app that you can build using the Name Suggest API call and the OpenSRS API. As such, the Good Duke gives his results in one particular way. Next week, we'll show what else is possible.

We'll also reveal the code behind the Duke of URL and explain how it works next week.

In the meantime, go give the Good Duke a visit!

The "S" Stands for "Simple"

Everything I hate about SOAP -- the so-called "Simple Object Access Protocol" -- has been summarized quite nicely in the dialogue The S Stands for Simple in Pete Lacey's Weblog.

Don't Be Part of the Web 2-point-SLOW

As web applications evolve to provide the rich user experience that was once the sole domain of desktop applications, their CSS and JavaScript files have grown in size and number. Since a web page won't even render under its CSS and JavaScript files have been loaded, each one of these files slows down the application a little.

The solution put forth by Wormly's site is simple: consolidate and cache. In other words, gather all your CSS into a single .css file and gather all your JavaScript into a single .js file. That way, only two resources are required before page rendering starts, and two simultaneous downloads is well within the limits of most browsers. Serving the necessary HTTP headers alongside these files encourages the browser and the proxy server to cache them aggressively, meaning more perfomance gains.

FAQ for Programmers About Living in India

Kevin Barnes has posted a FAQ for programmers about living in India on his blog, Code Craft. The questions covered in his FAQ are:

  • How did you end up going to India?
  • How much do jobs pay in India?
  • How can you live with yourself for helping to move American jobs to India?
  • What’s the cost of living? / How can people there live on so little?
  • Can someone from the US get a job working in India at US wages?
  • What’s the visa/tax situation like?
  • What’s it like raising your kids in India?
  • Aren’t Indian programmers better/worse than US ones?
  • Don’t you hate ... in India/Bangalore?
  • How long will you stay in India?

"If you want a more artistic sense for my feelings about India," writes Kevin, "read this or this."

Rails vs. Django: A Comparative Programming Exercise

Django logoRails logo

Those of you trying to determine whether to write your next web application using the Django framework or Ruby on Rails might find this article interesting: it's a comparative case study of the development of a web application using Django and Rails.

In the case study, two developers work from the same specification to implement the same application, with one using Django and the other using Rails. The application, Habitual Readers is a book club's public website. It lets viewers see the books that each book club member has read, as well as their comments for each book. Books are categorized using tags, and additional book information is retrieved from Amazon.

The conclusion that the authors of the article reached was that while each framework has its strengths, there is no clear technical benefit for an experienced Rails development team to switch to Django or vice versa and that Ruby developers should use Rails while people more comfortable with Python should use Django. Here's a table that summarizes the aspects of both frameworks that were investigated:

Factor Rails Django
Support for model and schema evolution Integrated framework for schema evolution. Minimal.
Internationalization No support. Some support.
Designer Friendly Templates? Possible, with disciplined practices or use of third-party library. Yes.
Third Party Plugin Support Mature plugin architecture, well used by the community. Some support via the applications mechanism.
Javascript Support Prototype and Scriptaculous bundled with Rails. RJS framework simplifies their use. Possible, but no direct support for any particular library.
Flavour Concise. Explicit.

I found this interesting: rather than post it as a web page or a blog entry, the authors of the article are sharing a Google Docs and Spreadsheets document. We'll have to see if more people start sharing documents on the Web this way.

Installing Windows Vista -- Third and Final Attempt

If you've been checking out Global Nerdy, a tech blog I share with my buddy George, I've gotten my hands on a copy of Release Candidate 1 of Microsoft's next version of Windows, Windows Vista. So far, I've made two attempts to install it, both without success.

Here's the short version: yes, I finally got it installed. As with software from Microsoft, the third time's the charm. My trick was the tried-and-true fix that all IT workers know: turn the damned machine off and on again. This trick is so useful that it's been immortalized on t-shirts and in at least one television show, The IT Crowd:

For more, go check out the full story.

A New Web Milestone: 100 Million Sites!

This CNN report says that according to Netcraft, there are now 100 million web sites:

There were just 18,000 Web sites when Netcraft, based in Bath, England, began keeping track in August of 1995. It took until May of 2004 to reach the 50 million milestone; then only 30 more months to hit 100 million, late in the month of October 2006.

This calls for a graph! Here's one from Netcraft, which shows both hostnames and "active" sites, from August 1995 to the present day:

That's a lot of pictures of kittens and porn.

Netcraft lists these previous milestones:

  • April 1997: 1 million sites
  • February 2000: 10 million sites
  • September 2000: 20 million sites
  • July 2001: 30 million sites
  • April 2003: 40 million sites
  • May 2004: 50 million sites
  • March 2005: 60 million sites
  • August 2005: 70 million sites
  • April 2006: 80 million sites
  • August 2006: 90 million sites

Greg Sterling offers his thoughts on this latest milestone:

This all means that there’s more and more noise online and it’s only getting “worse.” I’ve been talking about that in the limited context of local. But the general cacophony of new and me-too sites and services only means that brands and habitual behavior become more powerful; people will fall back on what they like, know and trust rather than try new things.

The idea that “our competition is only a click away” only really means something if you’re a no-name site. It’s very different if you’re Google or Yahoo (or even MySpace now).

People talk about “the Internet” in the same way they discuss “the small business market.” There is no “small business market,” there are only 10 or 14 or 17 or 20 million small businesses, with some shared characteristics. Similarly, “the Internet” is not a monolith, but 100 million websites.

Thus those would would “aggregate the tail” (whether eyeballs, publishers/site or marketers) are thus increasingly important to the online ecosystem.


Installing Windows Vista -- Attempt #2

Packing of Windows Vista Ultimate

Over at Global Nerdy, I've posted my second attempt at installing Windows Vista onto my Wintel desktop machine at work.

The short version: still no luck.

Windows Vista: Today's Scary Hallowe'en Experiment

'Jason' from 'Friday the 13th' and the case for the Windows Vista RC1 DVD.

I do most of my work on a 1.33 gig PowerBook G4, but I'm not going to say no to a company-issued computer with decent specs. Hence the other computer on my desk, a 3.0 gig P4 IBM ThinkCentre with half a gig of RAM, one of the standard issue machines here at Tucows. I use it mostly as a machine for testing sites and web applications in Windows, and occasionally, I'll do a tiny bit of Windows development on it. There aren't any important files on the machine, which made it a suitable subject for today's scary Hallowe'en experiment: installing Windows Vista RC1 (that's Release Candidate 1).

I got a copy of Windows Vista RC1 last night at a gathering held by Microsoft here in Toronto, where they invited a number of Toronto tech bloggers to see Vista in action and hear presentations on deployment and security. I took notes and will post them here later.

Earlier today, I attempted to install Windows Vista on my work machine and my notes from that experience appear in Global Nerdy, a tech blog I write with my friend George Scriban. The experience wasn't as smooth as I'd hoped.

Captain Christopher Pike from the original 'Star Trek', in his support chair.


More "Ajax Experience" Notes Coming!

Let me take a moment to thank contributing blogger Tris Hussey for doing an excellent job on blogging the Blog Business Summit conference. Tris, you're doing an amazing job -- I salute you with a filet mignon on a flaming sword!

This is a quick note to let you readers know that I've got more posts about the Ajax Experience conference, and that said notes will cover more than just the swag at the conference (cool as it was).

I'd like to thank the organizers for putting on one of the best conferences I've ever attended. I could go on about how good it was, but I thought this photo of a projection visible from the lobby of the conference hotel, the Westin Boston Waterfront, would capture my feelings about the Ajax Experience:

View from the lobby of the Boston Westin Waterfront showing a projection that reads 'This is how it should feel'.

Swagging Like it's 1999: Ajax Experience Swag Report, Part 2

In this article, I continue with my look at the dot-com-bubble-esque swag and prizes being given away by the organizers and vendors at the Ajax Experience conference. If you haven't seen part 1 in this series, it's here.


Helmi pen

Helmi, who bill themselves as "the only open source Ajax-based RIA development platform" were giving away the fanciest pens at the conference. The Helmi pens house a green LED, which gives off an eerie glow through their transparent barrels.


Also present in the exhibit hall were Google, whose booth was essentially a recruiting booth. Instead of literature about their APIs or developer-centric events like the Summer of Code, they had half a dozen different pamphlets about job opportunities for Java back-end coders, UI and rich internet application developers and researchers.

Swag-wise, these were their offerings:

Google swag

  • Google gum: Haven't tried it yet.
  • Google pen: This one was pretty popular.
  • Google key fob: Optimizes searches for your house keys.
  • Google post-it notes: Handy for reminders, comes with subtle recruiting ad.
  • Google notepad: With lenticular cover that shows a different image depending on your viewing angle.

I asked if they were giving away the heated toilet seats for which their offices are now famous. They would've come handy in the Boston Westin Waterfront's aggressively air-conditioned conference rooms.

Apparently, if you asked really nicely, the folks at the Google booth had some of their coveted long- and short-sleeved t-shirts to give away as well.

Swagging Like it's 1999: Ajax Experience Swag Report, Part 1

Back during the days of the dot-com bubble, the quality and quantity of swag available at conferences was nothing short of amazing; I'd often have to buy a cheap duffel bag in order to haul the promotional booty, which I then gave as gifts to my co-workers. Here at the Ajax Experience, I'm feeling deja vu -- while the "exhibit hall" outside the sessions is occupied by only a handful of vendors, the swag and prizes available from both them and the conference organizers is impressive.

One big surprise is AOL's table. Ever since The September That Never Ended, AOL has had a pretty bad rep among the developer set. In the meantime, other "portal" players -- Google, MSN and Yahoo! as well as portal-like entities such as Amazon and eBay -- have been boosting both traffic and developer love by becoming programmable by providing APIs, through which specialized sites and mash-ups can be built. What, you might ask, is AOL doing here?

It turns out that they're here to woo the developer community and promote their developer site, and their APIs and encouraging developers to use AOL services for their mash-ups. They've been surprising a lot of developers (myself included) by opening their pitch with "Did you know that MapQuest is an AOL property?"

They realize that they're late to the party, so they've gone to some trouble to make sure that their swag is good. They've created a series of "mash-up" t-shirts, like the "Geek" one I'm showing in the photo below:

Joey deVilla shows off his AOL 'Geek' t-shirt.

There are 6 shirts in the set. They're called "mash-up" shirts because you and your friends can wear different ones and rearrange yourselves -- that's the "mash-up" -- to form cute nerdy catchphrases. They've been very popular; people have been lining up for them here. Here's the set:

AOL's collection of geek-oriented 'mash-up' t-shirts.

Some of these shirts may seem weird out of context: "Garden" will make people think you're into horticulture, and wearing the "unwalled"  may convince people that you're either homeless or have poor impulse control.

Also on their table: USB cable extension cords, developer-friendly stickers (I found the Unix-hacker-friendly chmod 777 aol sticker amusing), quick reference sheets and a postcard announcing a contest for the best mash-up using AOL APIs. They've also included an AOL-branded sprial-bound notebook in the knapsack given to every attendee (I'll cover the knapsack's contents in a later entry).

Other goodies on the AOL table.

AOL's going to have a long, tough climb towards respectability, but they seem to be working hard at it.

The Ajax Experience's Opening Keynote

'The Ajax Experience' banner.

Maybe I'm getting old, but trying to catch all the interesting stuff at the Ajax Experience conference feels like running a marathon. The conference is packed with sessions and other activities; days 1 and 2 each have 12 or more hours in their schedule. Here's my first report, covering the opening keynote.

After a nice breakfast -- kudos to the organizers for going above and beyond the standard "continental" and throwing in some eggs, sausages, bacon and home fries -- the conference began in earnest with a quick "welcome" keynote by the Ajaxians, Ben Galbraith and Dion Almaer.

I imagine that for the organizers of a conference, doing a keynote has got to be physically trying. They usually have had very little sleep the night before, what with the last-minute preparations and things that always arise before the start of a conference. As a result, opening speeches by conference organizers are fairly lackluster -- but this one wasn't! Instead, we got a lively, funny, well-rehearsed start to the conference.

In addition to the typical bits of information about the conference, Ben and Dion gave an Ajax "state of the union address", in which they shared their thoughts about the current state of Ajax.

They posed this question: What the conference would be called if Jesse James Garrett hadn't coined the acronym "Ajax"? They listed a number of possibilities, including "The JavaScript Experience" and "The DHTML Experience", but then explained that although at least correct to one degree or another in a technical sense, these names would fail to capture the true meaning of what we're doing, and that's building better user experience for web applications.

It's for this reason that they say it's "Ajax" and not "AJAX": Asynchronous JavaScript and XML describes only a portion of the technical underpinnings and fail to capture the real revolution in how web apps are being written today.

"Everything old is new again," they said. It's true -- the technical prerequisites for Ajax have been around since Microsoft introduced XHR (that's the popular shorthand for XMLHttpRequest, the browser technology that makes Ajax possible) into Internet Explorer in 1997. Being a browser-specific feature, it wasn't used by many developers. Even when XHR was finally implemented in Mozilla-based browsers in 2002, it wasn't one of the features that was touted inthe press release. We'll have to assign bonus cool points to Brent Ashley, who figured out that there might be some very interesting uses for XHR before the wave of applications like GMail, Google Maps and Oddpost led Jesse James Garrett to coin the buzzword after which this conference is named.

Many user interface specialists have eschewed web development in favour of building so-called "fat clients" because of the severe constraints imposed by working within the browser. These constraints had a silver lining; Ben and Dion pointed to a quote by Marissa Mayer (Google's VP of Search Products and User Experience) in BusinessWeek:

Creativity is often misunderstood. People often think of it in terms of artistic work -- unbridled, unguided effort that leads to beautiful effect. If you look deeper, however, you'll find that some of the most inspiring art forms -- haikus, sonatas, religious paintings -- are fraught with constraints. They're beautiful because creativity triumphed over the rules. Constraints shape and focus problems, and provide clear challenges to overcome as well as inspiration. Creativity, in fact, thrives best when constrained.

They talked about how far Web 2.0 can go with the current set of constraints. We've got web applications that are coming close to providing a user experience similar to desktop apps. We've got interesting approaches like Comet,where the server continually pushes or streams data to the web client rather than the web client doing the polling. We're only seeing the first appearance of JavaScript frameworks, which are emerging with different philosophies, from MochiKit's "JavaScript sucks" point-of-view (Mochikit's slogan is "Making JavaScript Suck Less") to Dojo's "JavaScript is T3H SEXY".

As for whether our current constraints will be loosened, Ben and Dion don't think that will happen any time soon. Although IE7 fixes some problems, it runs only on Windows XP and later versions of Windows; Ben and Dion said that "IE6 will always be with us". There are some interesting developments with SVG and Canvas, but these have only been implemented in Firefox and Safari. As for things like Flash or Microsoft's "Flash-killer", WPF/E, time will tell.

Stressing that the Ajax Experience is about the User Experience, Ben and Dion talked about the introduction of a design track to the conference and also encouraged people to attend the accessibility presentations.

It was a well-done opening keynote, and it set the stage for a very busy, very informative day 1 at the Ajax Experience. Well done, guys.

My "Ajax Experience" Itinerary

'The Ajax Experience' banner.

From Sunday afternoon until Wednesday night, I'll be reporting from The Ajax Experience in Boston, the premier gathering of developers interested in building Ajax-ified web applications.

Take a look at the conference schedule. Content-wise, it's pretty meaty (six tracks!) and seems to offer something for Ajax developers of all levels. It's also pretty intense, with Monday's and Tuesday's sessions running until 6:45 and evening panel discussions running until 9 p.m.. I don't think I've seen a schedule this hardcore since the Ruby on Rails conference back in June.

Over the next couple of days, I'll be posting my general impressions and detailed notes and photos from the sessions I attend. I'll also be incorporating my notes into an internal training session at Tucows.

I have to tip my hat to Brent Ashley, local developer and longtime friend of Tucows. He's a presenter at the conference and as such, was entitled to two freebie passes, one of which he gave to me. He'll be doing a talk on alternate transport mechanisms, which I will attend.

After the jump, I've got a table of the sessions I'm considering attending. If you've got any suggestions or recommendations, let me know what you think in the comments.

more »

DemoCamp 10: Monday, October 23rd

Toronto DemoCamp logo

The next session of DemoCamp -- the Toronto area's show-and-tell for the software development community -- takes place this Monday, October 23rd at the MaRS Centre (101 College Street, right by Queen's Park subway station) from 6:30 p.m. to 8:30 p.m., followed by a social at a nearby pub. There's no admission to attend, and you're encouraged to ask questions!

The rules of DemoCamp are simple: NO POWERPOINT (or any other slideware)! We want to see working applications or prototypes in action, not marketing spiels! We're pretty open about what's demo-able at DemoCamp: desktop software, web applications, embedded software, hardware hacks, hobbyist projects, corporate applications, whatever. As long as you can demonstrate it and be interesting, it's fair game!

This is the 10th DemoCamp, and it'll feature the following presentations:

  1. Online Grading and Code Review, presented by Jennifer Campbell, Sana Tapal and Andrey Petrov
  2., the world's first commercial Smalltalk host
  3. PBJ-Web 0.1
  4. The effervescent Sacha Chua presents: Livin' la Vida Emacs!

If you've got something you'd like to demo, there's one slot available! You can sign up to take this slot over at the wiki page for DemoCamp 10.

This will be the first DemoCamp that I will not be able to attend; I'll be in Boston at The Ajax Experience, getting all JavaScripty and XMLHttpRequesty and blogging it here.

Upcoming Conference Appearances

The next month is going to be a busy one for many of us here at Tucows. In additional to the usual work stuff, some of us will be making appearances at the following conferences:

CASCON 2006 (Toronto)

CASCON 2006 logoI got a last-minute invitation to IBM's CASCON 2006 conference, which runs from October 16th through 19th, where I'll participate in the Social Computing: Best Practices panel. I'm thinking of catching the "Introduction to AJAX Technologies" workshop on Monday and the "Rails/DB2" workshop on Tuesday afternoon. Note that admission to this conference is free, including the food!

The Ajax Experience (Boston)

Ajax Experience logoHere's a good one -- Brent Ashley, who will lead the Ajax Transport Layer Alternatives session, gave me a complimentary pass to The Ajax Experience, which runs from October 23rd through 25th. This looks to be a very meaty conference for techies and I plan to take copious notes and share them with the developers here at Tucows as well as you, the readers.

ISPCON Fall 2006 (Santa Clara)

ISPCON logo ISPCON Fall 2006 is the premier conference for internet service providers, wireless providers, VOIP providers and internet businesses. Tucows people will be all over this one -- on the exhibit floor, doing the opening keynote and leading a couple of sessions! For the full details, check out this entry; to get a free pass to the exhibit floor and the keynote, see this entry.

Samples from SitePoint's "State of Web Development 2006/2007" Paper

SitePoint has recently published the State of Web Development 2006/2007 report, a 53-page document based on a survey of 5,000 web developers. Read on to find out what questions the developers were asked and to get a taste of the results.

more »

PHP Developers: Most Likely Type to Switch to Ruby on Rails

Rather than use words, let me let the graph below do the talking:

Graph: ' Developers who indicated they plan to start using Ruby on Rails

This graph comes from SitePoint's report, The State Of Web Development 2006/2007 -- 53 pages of "results, analysis and commentary on the state of Web Development in 2006/2007" based on a survey of 5,000 web developers. If you can't pony up the $795 single-user fee for the report, there's a free preview of the report as well as an article on the graph shown above.

A Student's Guide to Startups

It's on my long weekend reading list: the latest essay posted on Paul Graham's site -- A Student's Guide to Startups, which at first glance looks it an examination of the considerations of whether you should start or join a startup right after graduating, or after having been "seasoned".

Graham's an engaging writer and speaker. If you've got the time, go take a look at another essay of his, The Power of the Marginal, which is derived from his talk at RailsConf 2006 in Chicago, which took place in June. Better yet, if you want to catch his presentation mojo in action, check out the video of his keynote, which was shot by the nice folks at ScribeStudio.

Securing Your PHP Configuration

PHP logo Over at Ayman Hourieh's Blog, there's an article titled Checklist for Securing PHP Configuration, which lists several good changes to make to the php.config file of a production machine.

Sang Shin's Free Online Training Courses

[via] Sang Shin, who runs the site ("the site of people who have Passion for Java Technology"), has some interesting free online courses:

More details after the jump.

more »

bytefx: Nice JavaScript/DHTML Effects in Just 2K

bytefx describes itself as "a fast, lightweight and crossbrowser library with some useful special effect [sic] for your web pages. I'm not sure how well it mixes with other JavaScript libraries, but its effects are visually pleasing and can be useful for your web applications.

developerWorks' Series on Ajax and REST

IBM's developerWorks has posted the first article in a series on Ajax and REST. In the article, author Bill Higgins states that as web applications become more "immersive" -- that is, more like traditional desktop applications -- there is an increased tendency to violate the web's architectural style: representational state transfer, a.k.a. REST. He walks through an explanation of what REST is, the dangers of breaking the REST architectural model and how Ajax can be used to build stateful-client/stateless-server applications that are both "immersive" and in harmony with REST.

A Quick IronPython Tutorial

If you've been meaning to try out IronPython -- the Python implementation that runs on .NET -- since its recent 1.0 release, the blog Learning Python has a tutorial for putting together this simple "Hello, world!" GUI app, where the button text changes to "Hello, world!" when clicked:

'Hello World' application in IronPython. /

How to Encrypt Passwords in the Database

One school of thought states that the best way to store users' password information is not to store the passwords themselves, but rather hashes of the passwords. When the user first signs up for an account, your application creates a hash of the password and stores that in the database. When the user logs in, your applocation creates a hash of the password entered by the user when logging in and compares it to the hahs of the password stored in the database.

This approach has the advantage of maintaning user privacy; you wouldn't be able to find out what your users' passwords are without a great deal of work. The downside is that you can't email a password reminder should the user forget his or her password (instead, you email them a link leading to a page that lets them define a new password.)

The article How to Encrypt Passwords in the Database covers handling password hashes with source code in PHP and VB.NET/ASP 2.0.

C#'s "Coalesce" Operator

Here's something I didn't know. C# for .NET 2.0 has the ?? operator, called the "Coalesce" operator. I'll explain what it does after the jump.

more »

Mobile Web Design

The article series Mobile Web Design may be over a year old, but with the current land rush for .mobi domains, it's even more relevant today. It comes in three parts: State of the Mobile Web, Methods to the Madness, Tips and Techniques .

TIOBE Index: This Month's Hot Languages are Ruby and D

The TIOBE Programming Community Index is an attempt to gauge the popularity of programming languages, based on "the world-wide availability of skilled engineers, courses and third party vendors" as well as search engine results. Published monthly, it lists the 50 most popular programming languages. In the September 2006 index. they declare "Ruby and D are the hot languages of today".

More after the jump...

more »

Fun with the Kiko API and Ruby, Part 1

Kiko logo

Here's the first of a series of articles that introduces you to the Kiko API and also introduces the Ruby programming language for those of you who've been meaning to learn Ruby but haven't yet started.

more »

Steve Yegge: "Good Agile, Bad Agile"

Over at Steve Yegge's blog, there's an article titled Good Agile, Bad Agile that's been getting a lot of attention for a couple of reasons. First, there's Steve's assertion that agile methodologies aren't; second, he describes what working at Google is like, and it sounds like a developer's wonderland. Steve's writing style, which I find funny, is a bonus.

7 Things You Need to Know About Ajax

Don Hinchcliffe says the Seven Things Every Software Project Needs to Know About Ajax are:

  1. The Browser Was Never Meant For Ajax.
  2. You Won't Need As Many Web Services As You Think.
  3. Ajax Is More Involved Than Traditional Web Design and Development.
  4. Ajax Tooling and Components Are Still Emerging and There Is No Clear Leader Today.
  5. Good Ajax Programmers are Hard to Find.
  6. One Must Actively Address Ajax's Constraints of the Browser Model.
  7. Ajax Is Only One Element of a Successful RIA Strategy.

Interesting developerWorks Articles

There's a boatload of articles on IBM's developerWorks that might be of interest to you -- I've selected the ones that caught my attention and listed them after the jump.

more »

Sets in JavaScript

A common task in programming is determining if a value is equal to one of a set of given values. Normally, this might involve setting up a large if or switch structure or a long expression full of Boolean ORs. However, in a flexible language like JavaScript, a simple function lets you implement sets, and testing for set membership is easy. For more, see this article: Sets in JavaScript.

Lifestyles of the Rich and JavaScripty

According to a survey by IT JobsWatch in the UK, the average salary for a British Ajax coder has gone up by 33% over the past year, from £29,375 (US$55,853) to £39,228 (US$74,588).

In response, Dietrick Kappe at the Agile Ajax blog wrote:

What's ahead for companies that are developing Ajax applications (and at this stage, that seem to be just about everyone)? There are those that will double down on traditional languages and skillsets via Javascript code generators such as GWT. But there will be enough companies going the pure Javascript route to drive up salaries even further. And behind the demand will come the training and certifications, the standards, tools and blessed frameworks, and the army of freshly minted Ajax programmers to fill all of those well compensated jobs. If you're considering selling all of your Java books and moving to a Javascript commune, do it quickly.

Golden Rules for Bad User Interfaces

In case you were looking to drive your users crazy and have them marching to your door with torches and pitchforks, the SAP Design Guild has a list of Golden Rules for Bad User Interfaces.

DemoCamp 9 Tonight

DemoCamp Toronto logo

Tonight marks the return of DemoCamp -- Toronto's monthly show-and-tell for the software and web development crowd -- to its regular schedule. Check out the full article for all the details.

more »

Yahoo!'s Ruby Developer Center

Ruby logo

Yahoo! has just launched a Ruby Developer Center which features useful links to HOWTOs, educational sites and resources. If you're getting started with the Ruby programming language, it's a good starting point.

Larry Wall's "State of the Onion 10" Presentation

Hey, programmers! Interested in a little diversion? Go take a look at the text for Larry Wall's 10th State of the Onion presentation, in which he talks about all manner of topics, and if you're incredibly lucky, he might mention a thing or two about the current state of Perl. It's good coffee break reading.

Ruby Library for the Kiko API

Kiko logo

If you've been trying to get your paws on the Ruby library for the Kiko API without success, I've got good news for you:

If you're curious about the Kiko API and have got Ruby installed, you can give it a shot in interactive mode using irb -- the tutorial page will show you how. In the very near future, I'm going to post more extensive tutorials.

If Programming Languages Were People

'If Programming Languages Were People', a 'Foobar Jenkins' comic by Mike Arace

This one amused me: Mike "Mike-O-Matic" Arace's comic, titled If Programming Languages Were People.

Intro to XForms

As if there wasn't enough new client-side technique to cover, what with Ajax, DHTML, CSS and so on, there's also XForms -- the next-gen, XML-based, MVC-based, portable answer to HTML forms. They were made an official W3C recommendation back in March, they work in IE and Firefox, and they could very well become part of the Web 2.0 toolkit. Get the skinny at the first of a three-part series at IBM's developerWorks in an article titled Introduction to XForms, Part 1.

Good Ajax Reading

The people at Zimbra, the company that makes open source messaging and collaboration software, have been blogging about Ajax recently. I've listed some of their articles of note after the jump.

more »

10 Things You (Probably) Didn't Know About PHP

PHP logo

At (Yet Another Web Development Blog), there's an article titled 10 things you (probably) didn't know about PHP, which the author Jamie describes as "a short list of cool features that might have slipped under your radar as well."

Dreaming in Browser Swamp

I've been keeping a dirty little secret: in spite of all the fuss about web applications that can do what only desktop apps could, "Web 2.0" and Ajax, I have until recently been pretty ignorant of JavaScript, DHTML, the DOM and even CSS (I was using tables for layout until this year!). The shame isn't just mine; a lot of programmers to whom I've spoken have said "Yeah, me too."

Steve Yegge was in the same situation and he's been doing what I've been doing: self-training in JavaScript, Ajax and DHTML. He's written some notes and based on this experience in a blog entry titled Dreaming in Browser Swamp. He makes some interesting observations, my favourite of which is:

JavaScript is probably the most important language in the world today. Funny, huh? You'd think it would be Java or C++ or something. But I think it just might be JavaScript.

Language Wars, Part 1

Mexican standoff from the film 'Resevroir Dogs'.

Here's some food for thought for warriors on either side of the Ruby/Python language war: the c2 wiki entry titled Python and Ruby and Converging and Wheel of Ezekiel's Ruby vs. Python - why no-one should care.

Python 2.5 (Final) is Now Available

Python logoToday's a big day for Python programmers. You can download the final, production, ready-for-prime-time release of Python 2.5 starting today. For more information, you can read a quick overview of Python 2.5's highlights, or if you're craving some depth, check out Andrew Kuchling's What's New in Python 2.5.

Programming Languages You Should Learn


eWeek has published an article listed the "10 Programming Languages You Should Learn Right Now". I think it offers some bad advice and promotes a short-sighted view of programming and offer some counter-advice.

more »

Java, Groovy and JRuby Side-By-Side


This handy table created by A. Sundararajan provides side-by-side examples of the use of various features of the Java, Groovy and JRuby programming languages.

Rasmus Lerdorf: "Getting Rich with PHP 5"


Rasmus Lerdorf, creator of the PHP programming language, has posted his slide from his keynote at the php|works / db|works conference titled Getting Rich with PHP 5. His presentation covers a wide array of topics: common problems and risks for PHP programmers, Internet Explorer annoyances, getting rich by writing a PHP Web 2.0 app that can handle the load put on a popular web app, how pleasant PHP 5 makes working with XML and web services (see the 5-second RSS parser) and PHP 5.2's hooks for applications that support file upload.

Paul Reinheimer's Presentations and Book on Web APIs


Paul Reinheimer had two presentations on web services sessions at the php|works / db|works conference in Toronto yesterday. In this article, I do a brief review of his presentations and a preview of his book, Professional Web APIs with PHP.

more »

Kiko From a Developer's Point of View

There's been a lot of noise on various web sites and blogs about the business aspects of the Kiko acquisition. That's fine, but as a developer working at the company that acquired Kiko, the acquisition is far more interesting for another reason: I'm hoping to get a look at the code.

Kiko is written using the web development framework called Ruby on Rails (a.k.a. "Rails"), which in turn is written using the programming language Ruby. When I first came to work at Tucows in July 2003, Ruby was still considered to be a fairly obscure language. When I was told that Blogware was being implemented in Ruby, I was a bit skeptical: where would we find maintenance developers who knew how to program in this language that nobody seemed to use?

Ruby is no longer considered obscure, thanks to Rails, Ruby's "killer app". Rails is designed to be fun to work with and eliminates a lot of the headaches and annoying, repetitive and dull parts of development (what I refer to as "yak-shaving") through automation, good design and the use of programming conventions. It seems to have caught the attention of many programmers; the Rails in-house tutorial session I'm leading here at Tucows next Tuesday is going to pack our boardroom.

I've only worked on very small-scale Rails projects that run on my PowerBook -- little programming experiments and the example application provided in the must-have tutorial Agile Web Development with Rails. I've only seen the code behind demo or "toy"applications written in Rails, not something that has had some real-world "mileage" and has handled tens of thousands of users. To me, Kiko represents an opportunity to see the code behind such a real-world Rails application, learn from it and even share some insights. I'm looking forward to seeing that source code.