Tommy’s Blog

Photography, technology, and a little bit more from Tommy Williams

Archive for February, 2006

Refactor Pro now supports Visual Studio 2005

28th February 2006

Refactor Pro now supports Visual Studio 2005, and there’s a trial version available. It expires on the 20th of March. I’m almost afraid to try it out — I may grow so attached that I’ll just have to spend the US$99 and buy it when the demo expires.

Tags: , , ,
del.icio.us tags: , , ,

Posted in Programming | No Comments »

Clarification on Noise Ninja integration with Bibble Pro 4.6

28th February 2006

I got a response from the developer of Bibble, pointing out that one of Noise Ninja’s strengths is its use of profiles.

Rather than just applying generic algorithms to distinguish noise from detail, Noise Ninja has noise profiles that are optimized for specific cameras. The 20D is one that is supported, and even without purchasing a Noise Ninja license, Bibble Pro uses the profiles.

That would explain how it was able to do such a good job on some of my pictures. But when the simple slider wasn’t controlled enough, the other option with two sliders didn’t provide enough control, either. At that point, I needed the full Noise Ninja capabilities.

Tags: , , ,
del.icio.us tags: , , ,

Posted in Digital Darkroom | No Comments »

Learning has healed my brain

28th February 2006

Kathy Sierra says it’s important to blow your mind on a regular basis. Well, she just blew mine with a post about neurogenesis and the discoveries that learning heals the brain.

You see, this month, as I think back on the DRI work, I can tell that my mind has healed. Really. I can almost feel it. I couldn’t put it into words until I read her post, but that is what I gained this month: a healthy mind.

In January, I thought I had just gotten tired of software, or Microsoft, or something. But I couldn’t articulate anything else I would rather do. I know that the first step in achieving something is to know what you want, but I had no goals, no dreams, and no visions of what I might want to do. My mind was dull and lifeless. I had never experienced this emptiness before.

What had happened to me?

I worked hard this month and I learned while I did it. That combination of duty and learning sparked some kind of renewal inside me. The flurry of ideas and projects and possibilities that have always been my constant companions are back in full force and I’m acting on them.

For something that I dreaded so much, the DRI work has been an absolute blessing to me. Hawai`i was transformative in one way, but I wasn’t ready to learn what it had to teach me: the lesson was incomplete. But I’m ready now. As I re-evaluate that experience, I’ll be writing about it here.

Tags: , , , ,
del.icio.us tags: , , , ,

Posted in Life, Microsoft, Work | No Comments »

You smiled, right? That’s the point.

28th February 2006

Kathy Sierra and 37 Signals aren’t the only ones who understand the value of enjoying your software — and that enjoyment may be more important than what the software does.

Though some people wouldn’t believe it, there are people at Microsoft who understand that, too.

Like Chris Pratley and the OneNote team.

At first glance, spending only 1% of the development budget on adding “soul” to the product seems small. But the people who support the philosophy to implement those 1% features are also working on the other 99% of the product, and that philosophy shows.

OneNote is a fantastic tool. Sometimes I use it just because it feels good to work in. Really. I’m amazed at the some of the ideas I develop after noodling around with them inside OneNote for a few minutes.

Tags: , , ,
del.icio.us tags: , , ,

Posted in Microsoft | No Comments »

BibblePro 4.6 with Noise Ninja is now available

25th February 2006

BibblePro 4.6 with the integrated Noise Ninja is now out. I downloaded a copy and have been playing with it this morning.

Bibble is worlds better than the last time I tried it a few years ago. The biggest change that longtime Bibble users will notice is the new tabbed interface.

Bibble Pro Screen Shot: New User Interface

It feels much more comfortable to me than the old style, but then I’m used to Capture One and Pixmantec RawShooter.

One thing I wondered when I first heard about this: what is this going to do to Noise Ninja sales? Bibble Pro is US$129. To get the Photoshop plug-in for Noise Ninja, it’s either US$44.95 for the 8-bit-only “Home Bundle” or US$79.95 for the 16-bit “Pro Bundle.” Why but Noise Ninja when you can get it and a raw converter for not that much more?

There are three different levels of Noise Ninja integration. You can see the first one at the bottom of the screenshot above: Basic Noise Ninja. It’s one slider and the corrections it makes are pretty crude. But, on a few pictures I played with that needed only minimal noise help, it did a nice job.

The second level is on a panel under the Detail tab:

Bibble Pro Screen Shot: Noise Ninja 2

This offers two sliders, and it gives a bit more control than the Basic option. But on pictures where I would need more adjustments than the basic option gives me, I would like more control and separation of noise reduction between luminance and chrominance. Luminance is basically the detail of the picture and chrominance is the color. Kind of like a comic strip: the lines of the pen are luminance and the color is, well, the color. My Canon 20D does a great job with luminance noise so I usually don’t need to reduce that, but I always want to clean up a bit of the color noise on high ISO shots.

Then I looked down at the bottom of that tab:

Bibble Pro Screen Shot: Noise Ninja Registered

Ah-ha! To get the real Noise Ninja inside Bibble Pro, you need to purchase a license. But which license? Can I get away with the cheapest Home license at US$34.95? I don’t know, but I asked the question on the support forums and I’ll update this post when I know the answer.

Update (2006-Feb-25 11:56): Any Noise Ninja license will do. Looks like I’ll buy the basic Home license if I decide to take the Bibble route.

Tags: , , , ,
del.icio.us tags: , , , ,

Posted in Digital Darkroom | 3 Comments »

Do you know what woot means?

24th February 2006

A manager responded simply “Woot!” to a team-wide mail message today. I have read and heard the term woot (or w00t) for years and, though I have never traced its etymology, I grok its meaning. So I didn’t give the message another thought.

And then replies started showing up from people who had searched for the word because they didn’t know what the manager meant.

There are people who write software for a living who haven’t heard of w00t? And they’re in the team I work in? Amazing.

Tags: , ,
del.icio.us tags: , ,

Posted in Work, Writing | 2 Comments »

Scrapes after sliding my bicycle on the ice

24th February 2006

Scrapes after sliding my bicycle on the ice

There had been a bit of snow and freezing temperatures overnight — very rare for the Pacific Northwest. Coming out of my neighborhood, all the streets were just wet with no ice. But I hit a slick patch that was in the shade of trees coming around a turn. My helmet did its job. No headache, but those abrasions (there’s one on my knee as well) will be sore pretty soon. And based on past experience, I’ll be stiff tomorrow.

Tags: , , ,
del.icio.us tags: , , ,

Posted in Life, Photos | 1 Comment »

Changes in attitude with no changes in latitude

23rd February 2006

And thankfully nothing remains quite the same.

This month, I have been the DRI — the Designated Responsible Individual — at work. Fancy title. So what? I’m responsible for keeping a team-specific branch in our source control system in sync with the main branch. Don’t worry if you don’t understand what that means. I’ll explain it a bit.

Every piece of software that you use, from your Web browser to your favorite game to your operating system, starts out as source code: a set of instructions that tells the computer what to do. We’re all familiar with the idea that computers only understand binary code – a bunch of 1s and 0s. But it’s terribly hard for humans to write a meaningful program in binary. So we have programming languages: C++, Java, C#, PHP, Smalltalk, Python, Ruby, Scheme, and many more. These let programmers write things like printf(”hello world”); rather than a long string of ones and zeroes. In order for the computer to understand printf(”hello world”); the source code needs to be translated for the computer. That translation from source code to something that the computer can understand is called compiling.

Developers need to keep track of the changes they make to source code. Sometimes they make a mistake and need to go back to an earlier version. So they use a source control system that remembers all the changes and lets them get to any version they want. Source control systems are important when there is more than one developer writing a program. The source control system lets the developers share code with each other in a reliable and automatic way. In a typical design, there is a central server that stores the master copy of the source code, and then each developer makes a copy of the source code to his computer. This is checking out the source. Once a developer has made the changes she needs to make, she sends the changes back to the server — she checks in her source code.

Even simple programs may have dozens of source files and big programs like Microsoft Office or Windows have hundreds of thousands, maybe millions, of files, each with hundreds of lines of code. Add hundreds of people making changes to this source tree and you need a lot of machinery to keep things from devolving into chaos.

One of these mechanisms is called branching. It’s a way to segment the changes so that only a few dozen developers, say, are making changes that directly affect each other. Start with the source tree and make a copy of it on the server. Now there are two copies of the code. One team works in one branch, and another team works in the other branch, each making changes. At certain times, the teams need to synchronize their changes so that they’re working from a common base again. This synchronization is called integration. When the changes move from the primary, or main, branch, to the secondary branch, it’s called a forward integration. When changes move in the other direction, it’s called a reverse integration.

There are a whole set of ways to verify that the changes in one branch are ready to be moved into the other branch, and to verify that the integration is successful. The first test, though, is whether the code will build. You can think of building as compiling the source code, although it’s more complicated than that. There are many pieces of source code, and those pieces depend on other pieces in the system. So the build system has to compile the source code in the right order. In some cases, developers haven’t written the actual source code, but have instead written source code that will generate the actual source that gets compiled. The build system needs to manage this. There are steps needed to link all the compiled files into an executable that the operating system knows how to run. And a whole lot more. If the build system can successfully do its job, one step is out of the way.

But simply building doesn’t mean that the program actually does the right thing. You can compile a program with instructions that tell the computer to delete every file on the hard drive. Unless you’re a malware author, that is not a feature you want in your program. So there’s a second step: verify the build. This is done with a set of tests called build verification tests (BVTs) that make sure all the features of the software program work. There’s a lot more involved in testing, from automated functional testing, to stress testing, to performance testing, to ad-hoc testing, but that’s for another time.

Now, finally, I can explain what it is I do as the DRI for the month of February.

Every night after work, I spend a few hours integrating changes between the main branch and our team’s branch. I merge the changes from one branch into the other, build the source tree, and run BVTs. If all is successful, I check in, then turn around and pull changes in the other direction — a nightly reverse integration and forward integration.

I’m not constantly working during those hours since much of the time I just start a program and waiting for it to finish, but it requires enough of my attention that I can’t go out to a movie, for example (unless I want to stay up very late).

That’s on a night when things go well. If, after the integration, the build doesn’t complete or the BVTs don’t pass, I can’t check in the changes. Instead, I have to track down the owner of the tests and/or the code that’s at fault (I do a bit of investigation to narrow down the problem), give them a pointer to the build (that’s the result of compiling the code) and the enlistment (that’s the copy of the merged source used in the build) so that they can investigate the problem and figure out a fix.

Sometimes, there are big changes that need extra work — a more involved build than normal, for example — and thus extra attention to the process. Sometimes, due to the timing, a change happens in one branch and another change happens in the other branch, and, though each branch builds fine on its own, when they’re combined, the result won’t build. It’s why they have a person doing this work rather than automating the whole thing. We have a lot of developers working on a lot of code.

So — finally — what’s the attitude and how did it change?

Before February, I couldn’t help but resent the responsibility. Not only did I have to do my normal daily work, but then I had to do this DRI stuff, too. Never mind that every developer in our team does it at least once. I tried to convince myself that I would learn from this, but the resentment ate away at that approach.

On my first night, I was terrified. There are hundreds of people who depend on this source code — if I make a mistake, they’re all blocked. I had never done this before. What if the directions are incomplete? What if I discover something that isn’t documented? What if I’m just not able to do it?

After a few nights of success, I wasn’t as worried any more. I even relaxed a bit and started to write down the things I was learning as part of the process. The variety surprised me: from working with test automation tools, to the configuration and behavior of the autobuilders, to a way to write subroutines in a .cmd file. And, of course, I developed a confidence in our complicated build system and — for the first time — a sense of the overall shape of our source tree.

We’ve had problems. When I started, our development manager told me I had drawn a tough month. I thought it wouldn’t be so bad since I had gotten the shortest month of the year. But he was right. There were breaks after merging the branches, and there were some big changes that required a lot of effort, patience, and painstaking attention to detail. I spent time on weekends and got behind on my “real” work while trying to solve the DRI problems.

But it’s those problems that have washed away the resentment and let me grow. If the month had been normal, I wouldn’t have learned half what I did. I am more confident and enormously more useful to the team after doing this.

And I’m so much happier.

I will be relieved on the first day of March, but I’ll be a little sad, too. Even though I feel a heavy pressure when things aren’t working, and I worry every night until the tests finish, the joy of completing a complicated integration and the enormous satisfaction of doing it well make it worth it.

Dawn tells me that I thrive on challenges. And yet in the past couple of years, I have tried to create processes to smooth out the bumps in my environment. I’ve tried to create predictability and a regular routine. Somehow I got onto the mistaken idea that I would be happier if work were predictable and I could avoid surprises. But I don’t learn in those situations. I don’t build an emotional connection to the team, to the work, if I already know what to do before I need to do it. With unexpected problems, the need to figure things out that I’ve never seen before, and pushing hard to meet a deadline, I build a commitment to the people and the product, I engage my mind, and I learn.

And I’m well and truly happy when I am learning.

Tags: , , ,
del.icio.us tags: , , ,

Posted in Microsoft, Work | 2 Comments »

What’s going on with Bloglines?

22nd February 2006

Thanks to Feedburner, my main RSS feed URL didn’t change when I moved my blog. But, for some reason, Bloglines won’t load my feed. I’ve checked, and it’s valid. I’ve also checked, and the content is there.

Except in Bloglines. And I had a lot of subscribers through Bloglines.

Anyone know anything about this?

Update (2006-02-23 13:10): Looks like something has been fixed in Bloglines. I’m seeing my posts again.

Tags: , ,
del.icio.us tags: , ,

Posted in Blogs | 2 Comments »

A little structure goes a long way

22nd February 2006

Natural language processing is one of the holy grails of computer science. Why should people have to learn special, strange languages for interacting with the computer? Very few people can construct a workable query using SQL, for example. Why can’t we just ask the computer questions the same way we would ask another person using natural language?

We’ve found out in the decades since Arthur C. Clarke wrote about HAL that it’s very hard to write software that can understand natural language. And humans, bless our hearts, are remarkably skilled at adapting. So even as difficult as structured languages may be, it’s still easier for people to learn to speak “computer.”

Omar Shahine shows how to create a little “Magic Word” for SlickRun to search for flights using Mobissimo. He got the idea from Aditya Bansod who points out that natural language — something better than formal, structured languages — doesn’t have to be strictly natural.

So the Web — specifically, search engines — are showing us another possibility. They’ve trained us to put phrases in quotation marks and use + to note words that are important and - to indicate those we don’t want to see. They’ve even taught us that we don’t need to write complete sentences: just enter some terms that make sense. Map sites like Windows Live Local and Google Maps, the structured input format for addresses (one field for street address, one for city, one for state, one for zip — you know the stuff you fill out every time you buy something online) has been banished in favor of a single field. Enter an address like 100 Main St, Some City, Washington and the system can parse it. It’s amazing how much nicer the experience is.

Maybe we don’t need true natural language processing. Maybe we don’t even want it. What I’ve seen so far of semi-natural language queries seems very good indeed.

P.S. I’ve got thoughts about how this relates to tagging vs. formal hierarchies, and how tagging – especially collaborative tagging – complements these semi-structured language approaches.

Tags: , , , , ,
del.icio.us tags: , , , , ,

Posted in Programming | 1 Comment »

The smug deprivations of vegetarianism

21st February 2006

Yeah, so the best line in the whole post is the title, and it’s not even mine. It’s from Alfina the Vague, the author of Zemblan Grammar. She’s not writing about photography, or technology, or world events, or even about people I know. But that doesn’t matter because she’s always coming up with glorious combinations of words. Just say it out loud: “the smug deprivations of vegetarianism.” Isn’t that marvelous? Doesn’t that kind of command of sounds — and especially the way the words work in combination but fall apart individually — belong in poetry?

Posted in Writing | No Comments »

It’s hard to have scalable, reliable databases on the Web

21st February 2006

Putting databases on the Web is hard. It’s hard if you do it right, anyway.

Dare Obasanjo collects a set of posts about the challenges of using databases on the Web. These are written for people who have already tried to build systems for millions of users. Let me explain the problems for those of you who haven’t done so but, for some odd reason, are still interested in learning about it.

The people designing and supporting online systems hear this all the time from the people running the company: we want no down time — keep this thing available 24 hours a day, every day, now and evermore.*

There are basically two different ways of sharing the data in a database on the Web: the users of the Web site can read the data and query it, but they can’t change it (this is read-only); or they not only read the data, but they make changes to it as well (this is read-write).

Let’s start with a read-only system. Some examples? Imagine a “knowledge base” for a product, where customers look for answers to problems. They’re not changing the answers, they’re just finding them and reading them. Or even a search engine like Google. Sure, there are the “robots” that grab the data from all the pages on the Web and need to write it into the search engine database, but for all the people who use the search engine, it’s a read-only kind of deal.

The simplest setup (though not a very reliable one) is to have one database server for the Web site. It’s easy to set up, but there are all kinds of limitations. And I’m not even going to talk about scale here — a system needs to be able to scale when the number of users goes from a few hundred to several thousand, or from several thousand to several million. So what are some of the limitations of a single server? What happens when a hard drive fails? Or when the server needs to be taken offline to apply a security patch? What happens when the company needs to update its knowledge base — how does it apply the updates without breaking the content for its users while the updates are being loaded?**

There’s a pretty easy solution here: set up multiple databases that all have the same information, and put them behind a load balancer. This is hardware (or software in some cases) that distributes incoming requests to servers in a group. If one machine fails or needs to be taken offline, the load balancer just stops sending requests to it and the rest of the machines carry the load.

This design can provide a lot of resilience for read-only databases. In fact, with some fancy network setups, it’s possible for these servers to be distributed all around the world. If one datacenter goes offline thanks to a back hoe through a fiber optic cable, the requests are routed to other databases in another part of the world. The customers don’t notice.

Read-only databases are easy. What about read-write? What does a place like Amazon do? They don’t just let you browse their inventory, they let you buy it. They let you create an account, a profile, a wish list — they let you write to their database.

The design for a read-only database doesn’t work when users need to change the data. For a load-balanced pool of read-only databases, each server has the same content. It doesn’t matter which one serves the request: the result will be the same. But as soon as users can write to the database, throw synchronized data out the window. There are naive solutions to this problem, such as having the clients (the Web servers) duplicate their write requests across each database server. There’s no way to guarantee that the request could be completed across all the servers. Remember that this is the Web. There may be thousands of users who want to write to the database during the same second. Even if there are only a few — even if there is simply more than one user — there’s a risk that data would get out of sync or would even be in conflict when users make changes to the same data, but on different servers.

Solutions get a lot tougher here, but one technique separates the read-only parts of the system from those that need to be written to. Imagine an online magazine. Each article has an option for users to rate it — tell the author whether they loved it, hated it, or didn’t care. The articles could be served from a read-only database, while the rating section could be hooked up to a separate database system. This offers some additional flexibility and a chance to clarify the “always on, never down” requirement. Perhaps the articles must always be online, but it’s OK for the rating section of the page to sometimes be offline.

There are ways to make writable databases reliable and highly available (online 24 hours a day) but they’re complicated to deploy and even more complicated to explain, especially if no one out there is interested in hearing me do it. Have a look at this article about SQL Server Clusters (or lack of them) at Microsoft.com. I think Brad LeRoss is the author. For more about the things the Microsoft.com Ops team does, there’s a whole track at Windows Connections 2006 if you’re going.

After reading this, and the other articles, if you still have even the least bit of curiosity about databases and the Web, leave a comment and tell me what you would like to know.

*Well, they hear that request until they tell the management how much it will cost.

**After all, broken content is just as bad to the users as a server that’s down. Too bad so many people who support Web sites don’t see it that way. If the server is up, they reason, things are good. It’s easy to set up a system that simply pings a server to see if its alive. It’s much harder to design and maintain a monitor that can tell that the content is valid.

Tags: , , , ,
del.icio.us tags: , , , ,

Posted in Technology | 2 Comments »

Should call it EOS 20D Mk II

21st February 2006

The details are finally available about the long-rumored Canon EOS 30D. Did they change to a 1.3x format as so many expected? Did they improve the sensitivity of the sensor by another stop? How many megapixels is this one?

They didn’t do any of those things. The 30D has the same sensor as the 20D. The major differences: a spot meter (still a 3.5% circle, and not a 1% circle); ISO settings can be changed in 1/3-stop increments; the rear LCD is larger and nicer; and they added the Picture Style image processing parameters.

Either Canon has hit the wall of physics the pundits have been predicting as manufacturers cram more megapixels onto the chips, or they wanted to protect the recently-released, and much more expensive, Canon EOS 5D.

Canon did something kind of like this when they moved from the D60 to the 10D (both cameras had 6-megapixel sensors) but there were more significant changes between those two than the 20D and the 30D.

All the people who have been foaming at the mouth in the DPReview Forums for the past few weeks must be terribly disappointed.

More interesting to me is the new EF-S lens: 17-55mm f/2.8 IS. If I didn’t already have the 17-40, I would be looking seriously at this. Yes, it’s EF-S only, but it looks like Canon is dedicated to the format so it’s not a dead end — there will be resale value. And it’s a wide lens with image stabilization. Add to that the f/2.8 max aperture, and this would do so much that I’ve wished for from my 17-40 f/4 L.

Tags: , , ,
del.icio.us tags: , , ,

Posted in Equipment, Photography | 2 Comments »

Pixmantec RawShooter premium 1.0.2 update available

20th February 2006

A free update to pixmantec RawShooter | premium is available. The full release notes are not available, but in addition to the requisite new camera support, this version is supposed to be faster and use less memory. There are some references to quality improvements and camera profile tweaks.

I’m not sure whether those camera profile tweaks would have any effect since I use custom profiles.

RawShooter | premium v1.0.2 release notes

Tags: , , ,
del.icio.us tags: , , ,

Posted in Digital Darkroom | No Comments »

Why does PHP have to be professional-grade?

20th February 2006

Tim Bray complains that all the PHP code he has seen has been “messy, unmaintainable crap.” The responses he has posted mostly confirm his opinion, saying things like, “it really needs to clean its act up to appeal to people coming from other programming languages, instead of just people coming from dreamweaver.” Or “it hasn’t been proven that users *can’t* write clean, comprehensible, maintainable PHP - but it also hasn’t been proven that anyone can.”

One response, perhaps unintentionally, points out the absolute beauty of PHP: “people with little or no education in the realm of programming are programming.” Hallelujah! Too bad that he introduces that beautiful statement with this lead-in: “Herein lies the main problem.”

Fine. So PHP isn’t “professional grade.” But it can be used to do some pretty amazing things. The software that powers this blog, and thousands of others, is written in PHP. I wasn’t surprised to see it called out as an example of poor code.

Does it matter? No. The easy entry to programming that PHP offers is letting people with ideas — people with passion for things that are not software — to produce some magnificent work.

So it’s hard to refactor. So it doesn’t scale. So it’s impossible for someone else to come along and maintain it. That’s OK. We have dozens of languages and programming environments that scale up to big teams and big demands and that promote good software practices.

Why not have a language that doesn’t value the enterprise first? Isn’t there room for the hobbyist?

This argument against PHP feels a lot like the one the professional journalists have been throwing at amateur bloggers. There’s certainly room for both journalists and bloggers; if anything, we’re hearing that it’s the professionals that are at risk in the imaginary journalists vs. bloggers showdown.

I’m not trying to discount the value of well-written software: over the past decades, we’ve learned a lot about the value of disciplined, well-designed code. Just don’t forget the value of the folks with the ideas and the passion to implement them. We need software that supports them. And if they make a mess along the way? It’s fine with me.

Update (2006-Feb-27): Shelley Powers, writing about all the languages she has learned over the years, also points out the value of PHP’s ease-of-entry and its ubiquity. It’s an entertaining article in its own right, even if you don’t care about PHP.

Tags: , , ,
del.icio.us tags: , , ,

Posted in Programming | 6 Comments »

Expensive blades, inexpensive shaving cream

19th February 2006

A couple of weeks ago, Randy got a new Gillette Fusion razor – the one with five blades. I got one at the same time.

I was using products from The Art of Shaving. With the Fusion, I found the combination of the shave oil and the nice creamy lather to be too thick. I wasn’t getting a close shave and I had to work to clear the stuff out of the blades between strokes.

So I decided to try the Gillette Complete Skin Care “Shave Multi Gel” and after shave. By the standards of drug store products, they’re a bit more expensive. But compared to The Art of Shaving, they’re almost free.

And after a week with the new shaving gel, I’m going to stick with it. The razor moves more easily across my face, it rinses cleanly, and I don’t have any skin irritation. It’s surprisingly good.

The difference in cost between the shaving products will probably be more than offset by the cost of the Fusion Power blades, but I’m just glad I have found a shaving combo to be happy with.

Well, as happy as I can be about shaving….

Tags: , ,
del.icio.us tags: , ,

Posted in Life | No Comments »

Productive weekend

19th February 2006

It’s been quite a weekend. I finally got fed up with dasBlog hanging the worker threads on my old blog site* so I decided to move all the content to Wordpress and start up a new blog. No single part of the process was hard, but there were a lot of moving pieces. Among other things, I:

  • Wrote a C# app to convert all my dasBlog content into an RSS file for importing into Wordpress.
  • Set up two Wordpress blogs (one to hold the archived content and one — this one — for future posts).
  • Designed a set of Apache RewriteRules to handle the various permalinks that dasBlog uses.
  • Wrote a C# app to generate the RewriteRules to map the old permalinks to the Wordpress permalinks.
  • Set up 404 handlers and other redirection for old pages at tommyblogs.com.
  • Wrote a Windows Forms apps to easily let me add Technorati and del.icio.us tags to my posts

What remains in the blog migration?

  • Handle categories redirection
  • Remap various Feedburner category feeds
  • Monitor logs and see what I’ve missed
  • Transfer the domain name from the current host to 1and1.com and save myself about $15 a month.

* Old blog site: tommyblogs.com. The problem (I think) was actually happening due to — what else? — spammers. They were hitting my site with some generic comment post code. They weren’t even bothering to see what fields were there, they were just POSTing to the forms. Somehow, though, this was corrupting the ViewState on the pages and dasBlog didn’t have the exception handling in place to deal with it. In fact, it was apparently throwing up dialog boxes. When enough of these things hit, I consumed all the threads available to me (since there was no one on the server to click “OK” on the dialog), and the site was hung until I emailed the hosting provider and asked them to cycle my site.

Tags: , , , ,
del.icio.us tags: , , , ,

Posted in Programming | 11 Comments »

Don’t forget about RSS

18th February 2006

Dave Winer pointed out Jeff Jarvis’s post about blogs being “prisoners of their format.” Jeff says that blogs need to have richer templates and more features: not just a set of posts. He would like to see posts with pages, and maybe news tickers — anything to make a blog Web site richer.

While I would like to see some more variety in templates, blogs are presented on more than just their site. In my experience, most blogs are read far more inside an RSS aggregator than on the site itself. I have no idea what the actual sites look like for many of the blogs I read because I never visit the site — I just read the content off the blog’s RSS feed.

And it’s RSS that has made room for so many blogs. If I had to visit every site in my Web browser because they publish their content in a way that doesn’t support syndication, then I wouldn’t read even a tenth of the sites that I do.

So let’s see some richer templates on blogs. But don’t forget about RSS — anything you don’t push out through RSS will only be read by a fraction of your audience.

Posted in Blogs | No Comments »

Starting to consider Bibble again

17th February 2006

I’ve been mostly happy with Rawshooter Premium, although even with the ColorEngine and a choice of profiles from Magne Nilsen and Mike Cheney Chaney, I’m still disappointed by the color sometimes.

So this weekend, I think I’ll try out Bibble Pro again, particularly since it will soon include Noise Ninja as part of the raw conversion.

Update (2006-02-26): I’ve written about Bibble Pro 4.6 with Noise Ninja, including screen shots of the new user interface.

Tags: , ,
del.icio.us tags: , ,

Posted in Digital Darkroom | 1 Comment »

Having fun

16th February 2006

On the way to work this morning* I heard The Romantics’ What I Like About You. It took me back to high school. After every home football game (high school games are played on Friday night) we would have a “sock hop.” The girls from GPS would come over, we would gather in the Hunter Theater Auditorium, someone would act as DJ and play some great music, and most of us would stand around and look at each other, until we finally shuffled off and wondered why the girls were so stuck up.

But when I heard that song on the radio, I could imagine myself dancing and jumping and loving it. If I could go back to those sock hops, I would have so much fun.

We teenage boys took the whole thing too seriously and placed too much importance on those dances. We didn’t see them for what they were – a time to relax and have fun — but instead thought we were supposed to impress the girls. And, of course, we had no idea how to do that, either.

It’s so easy to see foolishness in hindsight. But what about the foolishness we’re engaged in right now? What chances for joy are we missing today because we’re too worried about the way we’ll look or about what someone else is doing?

Forget about those things you can’t change and open your ears to the music of your every day life.

And don’t forget to dance.

*Yes, I drove the car this morning. Dawn is convinced that the pipes will burst during the unusually cold night that’s forecast. So I have to stop by the hardware store on my way home from work to get some protectors for our outside faucets.

Posted in Uncategorized | No Comments »