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.
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:
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.
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 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!
- 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?
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:
|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.|
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.
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.
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
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.
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.
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.
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:
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, 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 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.
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, dev.aol.com 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:
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:
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).
AOL's going to have a long, tough climb towards respectability, but they seem to be working hard at it.
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.
"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.
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.
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.
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:
- Online Grading and Code Review, presented by Jennifer Campbell, Sana Tapal and Andrey Petrov
- BrokenTomb.com, the world's first commercial Smalltalk host
- PBJ-Web 0.1
- 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.
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)
I 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)
Here'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 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.
Rather than use words, let me let the graph below do the talking:
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.
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.
- Ajax Programming with Passion!
- J2EE Programming with Passion!
- Java Intro Programming Bootcamp
- Web Services Programming with Passion!
More details after the jump.
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.
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:
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.)
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.
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...
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.
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.
Don Hinchcliffe says the Seven Things Every Software Project Needs to Know About Ajax are:
- The Browser Was Never Meant For Ajax.
- You Won't Need As Many Web Services As You Think.
- Ajax Is More Involved Than Traditional Web Design and Development.
- Ajax Tooling and Components Are Still Emerging and There Is No Clear Leader Today.
- Good Ajax Programmers are Hard to Find.
- One Must Actively Address Ajax's Constraints of the Browser Model.
- Ajax Is Only One Element of a Successful RIA Strategy.
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
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:
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.
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.
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.
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.
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:
- The links on the Kiko API page are getting fixed
- In the meantime, here's a link to my mirror of the Ruby library for the Kiko API
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.
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.
Today'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.
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.
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.
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.