Skip to content

Technology - 5. page

Choosing new technology, or tail chasing

Robert Hanson, who built the very useful GWT Widget Library, has an interesting post where he asks:

Let’s say that you are a developer, and you have been spending the past year or so really getting to know a given technology. Now you are being told that the technology you are using is inferior to this “other” technology. You take a look and realize that it might be best to switch. A year later you finally have a good understanding of the tool, and use it with great skill. Then someone tells you about this “other” technology.

How many of us built our own MVC frameworks only to move to Struts, then maybe on to Spring MVC. Sure, there are some improvements made in each technological step, but since you are spending most of your time really getting to know a product you often spend little time getting the most out of it. This is compounded by the fact that you often use several of these products at the same time, adding to what you need to learn.

So what is a dog to do? Although you are moving forward, you never quite catch the tail. Should you just stop moving forward, or run faster or slower?

Personally, I think that there is a middle ground. As a developer, you need to keep up on broad trends and tools, because they can make you so much more productive. The problem arises when you don’t know how much more productive you will be, until you use the technology or tool for a while….

However, just because there is a new tool around, that doesn’t mean you have to use it. In fact, if you have an existing technology that does the job, you should not abandon it just to move to the new technology. There’s always a cost analysis, because learning a new technology is not free. Your time is worth something.

This cost analysis is something that developers should learn to do and appreciate because that process is exactly what most companies need to do before they decide to implement or build new software. Just like a developer, most companies think that a new technology, or system, will help them, but are unsure how much it will help them, and how much it will cost them. Just as for a company, a developer deciding to learn and use a new technology is not solely a technology decision.

There are many ways to minimize the risk of learning a new technology–prototype, read documentation, be conservative and consult someone who’s an expert in the new technology (which means they’ve already made some of the mistakes). Each of these have benefits and detriments. Prototyping takes more time than the others. Reading documentation is great if there is documentation, and if the documentation is accurate, but might teach one as many lessons as using the technology. Being conservative means that you’ll probably miss out on some productivity improvements, just as you’ll miss out on some time sinks. Consulting an expert is great, if you have access and know what questions to ask.

I think the answer to Robert’s final question is intensely context sensitive. It depends on the following five considerations, among others:

  • how crucial a new technology is to your productivity (ie, if you are a java business developer, learning GWT might be lower on the list than learning Spring)
  • how easy you think it will be to learn
  • whether you can be paid to learn it
  • how much spare time you have
  • whether you have a project to use the new technology on

[tags]tail chasing,technology[/tags]

Weird Network Failure When Windows XP Stands By

Sometimes when I hibernate or standby my windows XP box, starting it back up causes network failure. Websites couldn’t be found, ping failed, and ssh couldn’t go anywhere.

I was perplexed for a while, as restarting the wireless connection didn’t fix the problem. You actually had to restart the entire computer.

A few weeks ago I dug into the problem and realized the issue was the dns service.

To fix, just restart the dns service from a cmd window (as an administrator) like so:

net stop dnscache

net start dnscache

You should be good to go.

[tags]windows,services,dnscache[/tags]

Extending AWStats reporting

AWStats is a powerful, free web log analysis tool. I had a client that had some specific reporting needs–parsing urls retrieved and reporting how many times any document in a specific set of directories (but no other ones) had been viewed.

Luckily, AWStats is configurable enough to do this using the Extra Sections feature; in fact, there is an example in the documentation showing how to do exactly what the client needed. In fact, you can do a ton with regular expressions and AWStats. Basically, if the data is in the web logs, you can build a custom report for it.
[tags]awstats,custom reporting[/tags]

Comments on Yahoo! Mail storage and APIs

Check it out, I’m quoted in a piece about Yahoo! Mail in Infoworld, saying:

As far as I can tell, I’ll never need to delete another e-mail message, but if I did run into a limit, it’d be very easy for me to pull down the messages via the POP interface and store them on a personal hard drive

I stand by my words. I haven’t deleted a message for years, and doubt I ever will again. I’m not really sure what that means in terms of access–I’d be very interested to look at how many messages older than, say, a year, have been accessed. It does mean that I no longer need to decide whether or not to spend time filing/deleting/organizing mail.

I have been a premium user of Yahoo! mail for quite some time. I like the ‘beta’ JS intensive interface, though before I bought a new computer, it taxed my PC.

Personally, I think the bigger announcement is the opening of the Yahoo! mail APIs. Granted, only premium users get the full API, but I can imagine all sorts of neat applications built on that API. (The standard API doesn’t look that useful.) For example, you could build an external program to live out of your Yahoo Mail, like this fellow, but with offline capacity, or a simple blogging client where you leverage Yahoo’s superb rich client interface and platform to generate content, and then push it elsewhere.

CleanPrint in action

I wanted to congratulate FormatDynamics on a fine piece of technology: CleanPrint. Disclaimer: I have worked for them in the past. I know how hard they’ve worked on this, so I wanted to congratulate them.

To see it in action, visit this page, using IE, and do a print preview. See how the previewed page is formatted for print, including different graphics and advertisements? The printed page is dynamicly formatted from the content on the HTML page, with a minimum of intrusion on the page.

How is this different than a print stylesheet? The dynamic reformatting gives much greater control over the printed page’s appearance than a stylesheet, for one. There’s also an advertising component.

It’s a fine technology that will hopefully save paper and improve the user experience for all those people (many!) who print web pages. Nice job, guys!
[tags]web page printing, cleanprint, print advertising[/tags]

Does any other blogging platform approach WordPress?

This person’s answer is ‘No!’. Looks like someone in the blog platform world has declared that the WordPress community has learned the lessons the Struts community learned a few years ago: If you document an open source system, provide plenty of examples and a supportive community, you can distance yourself from your competitors. Make it easy for the developers (QT) to choose you!

He states:

…the blogging market is c.l.o.s.e.d. – as in no more room, and most importantly, no more competition… [emphasis his]

(Regarding the strength of Struts, as of today, Dice has 1965 jobs matching ‘struts’, versus 176 for ‘rails’, 1481 for ‘spring’ and 493 for ‘JSF’. Now, it’s been a while since I commented on web frameworks, but it’s a pleasant surprise to see Spring approach Struts. Yes, yes, my methodology for documenting the ‘distance’ of Struts from its competitors is somewhat suspect. I don’t have access to book trends data, and what I can find doesn’t break things down to the framework level. Thanks for caring.)

However, Spring looks to be on the rise; even the most popular packages and/or platforms can fall from popularity. Especially in technology, where “new” is often a feature. Hence, I disagree with the statement that WordPress has locked down the blogging application market. My point is not argued from a knowledge of WordPress, but rather a knowledge of technology and tech trends.

Via sogrady.

[tags]wordpress[/tags]

Article on web searching techniques

Searching the web is a crucial skill nowadays. I have tech friends who don’t buy technology books anymore because the quality of content for developers is so high. I still buy the occasional book documenting technology, but I also spend a lot of time searching the web for answers to tech questions. (Still using Google, though I’ve tried Yahoo! and IceRocket). One of the reaons I write this blog is to document answers I’ve found; another is to try to provide answers for others.

In that vein, here’s a great post on advanced Internet searching techniques. These tips seem especially useful when searching for terms that might be obnubilated (there’s my 5 dollar word for the day!) by ecommerce sites.

[tags]oblique search techniques[/tags]

Browser Caching

It depends on how your website/web application is used, but browser caching can give you fantastic performance increases for very little effort. Especially with a database driven site that is primarily read-only (many ecommerce sites), proper browser caching can decrease the number of pages you serve per user, which in turn increases the number of users supportable by a given set of hardware.

I found this caching tutorial to be very helpful in understanding just how to cache pages, as well as RFC 2616, which states in section 13.2.4 that the Cache-control: max-age header takes precedence over the Expires header (for the browsers who speak HTTP 1.1). This examination of the support of various browsers is also excellent reading. There’s also a cool tool called the Cacheability Engine which examines caching behavior of web pages, if you don’t want to look at the headers yourself (using Fiddler or LiveHTTPHeaders). I encountered occasional errors with the engine, but it was pretty neat to use.

[tags]browser caching[/tags]

Moving to WordPress

Well, I finally decided to move to a more modern blogging platform. I have used Moveable Type 2.64 for almost three years, but it was time to move on:

* I had turned off comments because of blog spam. But I’ve recently heard from several folks that they’d wanted to comment. I love comments and the discussion that ensues, so I wanted a more sophisticated commenting workflow.

* I wanted easy support for tagging posts. How Web 2.0&#tm;!

* General cruft from a 3 year old program: MT is well designed and I have had few problems with it, but I wanted to see what the current state of blogging software was.

I don’t know whether I could have had such features with a more modern version of Movable Type, but it certainly seemed to me that WordPress has more mindshare, plus it’s open source. And it is supported by my ISP. So, I moved from Movable Type 2.64 to WordPress 2.0.2. I followed these fantastic directions. and, for importing my 350+ entries with correct permalinks, I followed these directions.

I ran into only a few problems.

* The directions on codex.wordpress.org appear to be for a slightly different version of wordpress and reference import-mt.php, rather than mt.php

* I ended up having to edit my php.ini file to up the memory to import my 1.5 meg MT export. 10M wasn’t enough, 50M was plenty.

* The directions for preserving your MT search engine entries are great, but I ran into one problem. Because I have an old version of Apache, this RewriteRule did not work:

RewriteRule archives/0*(\d+).html /uri/to/blog/index.php?p=$1

Instead, I had to use plain old character classes:

RewriteRule archives/0*([0123456789]+).html /uri/to/blog/index.php?p=$1

Her’s my entire RewriteEngine entry:

RewriteEngine on
RewriteRule weblog/archives/0*([0123456789]+).html wordpress/index.php?p=$1
RewriteRule weblog/index.rdf /wordpress/index.php?feed=rdf
RewriteRule weblog/index.rss /wordpress/index.php?feed=rss
RewriteRule weblog/index.xml /wordpress/index.php?feed=rss2
# http://www.mooreds.com/weblog/archives/2004_10.html to
# http://www.mooreds.com/wordpress/?m=200410

RewriteRule weblog/archives/([0123456789][0123456789][0123456789][0123456789])_([0123456789][0123456789]).html /wordpress/index.php?m=$1$2

# http://www.mooreds.com/weblog/archives/cat_books.html to 3
RewriteRule weblog/archives/cat_books.html /wordpress/index.php?cat=3
RewriteRule weblog/archives/cat_java.html /wordpress/index.php?cat=5
RewriteRule weblog/archives/cat_mobile_technology.html /wordpress/index.php?cat=7
RewriteRule weblog/archives/cat_programming.html /wordpress/index.php?cat=6
RewriteRule weblog/archives/cat_technology.html /wordpress/index.php?cat=4
RewriteRule weblog/archives/cat_technology_and_society.html /wordpress/index.php?cat=2
RewriteRule weblog/styles-site.css /wordpress/wp-content/themes/ocadia/style.css
RewriteRule weblog/ /wordpress/

* Users I imported, even if I gave them the Editor role, weren’t able to edit posts they owned. I may figure this out later, but right now I just made every user an admin.

So far I’ve been very happy with my decision, if for no other reason than the built-in comment moderation and the UI advances. Let’s see if WordPress lasts for three years.

[tags]wordpress, weblog migration, moveabletype,[/tags]