How-To

Micro ISV Blogging: How?

Over the last couple of weeks, I tried to tackle the what, when and why of Micro ISV blogging. This week, I’m taking a look at some of the software and services that will help you get your blog up and running.

There are a lot of different ways to start or host a blog, many of which are free. I don’t have first hand experience with them all, so I’ve just provided a brief overview of some of the best known options. Whatever system you’ve been using, I’d love to hear about your opinions and experiences in the comments.

Detecting Dead Links

I have been spending some of my free time lately with theory and practice of web crawling, searching and so forth. Let's talk about a very quick and easy application: A script to check for dead links on a web site. It's probably easy to come up with various use cases for such a script, so this not only incorporates some simple crawler elements, it also does something useful!

Sharing my cool toys

I was berated the other day by Keith. He told me about PLEAC and I said yeah, I know!! He said no fair you didn't share your cool toys! So for all you remaining coders out there, I'm sharing! Here's a few handy code snippet sites and I'll review for you today.

PLEAC
This site uses the Perl Cookbook as the basis (which has the Perl source freely available) and volunteers rewrite the snippets in other languages where possible. Very handy, if you know one language and wonder how you would do it in another language.

Dinner Tagging

I returned from vacation this past weekend. It was great, very relaxing and overall a good time. Monday morning I faced the reality of the dayjob. Have you ever returned from a nice vacation just to find that certain areas in the office have quite changed for the worse? An increased political charge? Work you had counted on being finished was not touched? Maybe the timeline for your Big Project was silently cut in half?

Emptiness in COleDateTime Format VAR_TIMEVALUEONLY

Funny how you can have trouble using a function, and search the web looking for an answer to no avail, and finally figure out how to do it only to discover that if you had read between the lines in the documentation you would have gotten it in the first place. Well, it is half true here. There turned out to be two big underlying issues, one of which was hinted at in the documentation and the other goes back to a problem I've talked about before. What's amazing about this one is that I thought I wouldn't have much to write about but I kept peeling back layers to find worse stuff.

The MFC COleDateTime class has a Format method which returns a string with the formatted date/time value. As explained in the MSDN documentation this method is overloaded so you can pass a strftime style format string or you can use:

Growing your projects

This is a very interesting time for me. When I started working for my current company 5 years ago (7 if you count college interning), we were a small shop with a lot of debt. We thrived on nothing because we had to. We had ambition, because we wanted to eat.

Now, we're thriving. We have grown to a good size and have lots of good business. Our work pays very well, especially for what we do. We've hit an inflection point.

The problem, if you will, is that I am the software guy. Not that others don't do software related things, but I'm definitely the man. My main product, that's been the culmination of what we've done in house now for years, is far and away the bread and butter of the company. All of it is used internally.

Now, we're facing the decision of perhaps starting to sell our software (and hardware) to outside customers. This presents a challenge, because a lot of it was written around how we do things.

Glossary of Text Encoding

I had an opportunity to talk to Addison Phillips, a Unicode expert (see Inter-Locale), and he tipped me off to a subtle distinction in the term "character set." I usually think of a character set as being synonymous with a particular encoding. For example, when you ask which character set is being used, the answer might be Latin-1, Windows-1252, or Shift-JIS. The HTML meta Content-Type tag uses "charset" to denote the encoding of the page. But to be more precise, these are "encodings"; a "character set" is a more abstract notion of the set of characters supported (not how they are encoded but simply which characters are included).

This distinction makes great sense although it only really came about with Unicode. Unicode is a single character set that can be represented by numerous different encoding systems such as UTF-8 and UTF-16. Addison also said there are multiple encodings for certain Cyrillic character sets.

When I started writing for CodeSnipers I didn't realize I would be writing entirely on text encoding issues, that's just the way it has turned out so far. At the time I already had some scrap notes on this topic written and I have just gone on from there. Terminology subtleties seem to keep cropping up in this subject especially because so many programmers can get by with only a vague understanding of the issues, and their use of these terms shows it.

Splitting Surrogate Pairs

Microsoft chose UCS-2 for its Unicode encoding system when it seemed like a nice and simple fixed size per character; then Unicode promptly outgrew UCS-2. As I said in UTF-8 Versus Windows UNICODE, the early impression of simplicity, in comparison to UTF-8 multibyte encoding, backfired.

What are surrogate pairs?

Surrogate pairs are UTF-16's answer to multibyte encoding. Basically, in the UTF-16 encoding system a Unicode character can be encoded in either one or two 16-bit values; if it is two 16-bit values it is utilizing a "surrogate pair". Surrogate pairs are simple yet they inevitably lead to a great deal of confusion.

Perl vs. PHP - Datatypes[arrays|lists|hash|map]

I've made a few friends recently who are ultra Perl geeks (Yes, you know who you are. Andy, Liz and Brian!) and they are rubbing off on me. I learned Perl a little bit, about 6 years ago when I first started web programming but I didn't know any Perl programmers so I had nobody to pester with questions. I always said that Perl was cryptic so Perl Elitists could show off their l33t ski11s. But I've found it's not all that bad…

I know PHP so well, that it helps my understanding to compare Perl to php (Don't flame me Perl folks! I'm not promoting one over the other, just comparing and contrasting).

.NET: CausesValidation, Validating and the Escape Key

I had a bug report recently which said that some of my dialog windows didn't close when the Escape key was pressed. As it was for a C# Windows Forms application, I figured I must have forgotten to set the CancelButton for the form; I was surprised I'd missed it, but it seemed like the most logical explanation.

In .NET forms, the CancelButton property can be set to a control which will be activated if the user presses the Escape key.