... about Unicode and character encodings

Every developer should know about Unicode and character encodings.

This is a complicated subject but it's a very important one. It's also a subject that I expect to return to several times.

“If you are a programmer working in 200[7] and you don’t know the basics of characters, character sets, encodings, and Unicode, and I catch you, I’m going to punish you by making you peel onions for six months in a submarine.” Joel Spolsky

Joel is famous for his site http://www.joelonsoftware.com/. If you haven't read it I recommend you do.

Of particular relevance today is the article:
The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

If you haven't read this article before, read it now. If you have, read it again. A little refresher is rarely a bad thing.

But why do you need to know this?

Well, at some point you are going to have to know:
  • Why some fonts show characters differently.
  • Why characters with diacritics don't always display (correctly).
  • How you display text from languages which uses alphabets other than the English one (A to Z, no diacritics).
  • How you create characters with multiple diacritics.
  • What UTF-8 & UTF-16 really mean.
  • How you display text from languages which read from right to left.
  • How you display text from the Chinese, Japanese and Korean languages.
  • How you should display text that contains a words from varying languages.

This list could easily be a lot longer, and as you start to investigate the subject you'll soon see how.

The most important thing to take from this is that you will not be able to get through the rest of your career in software development assuming that the only letters you will ever need are A though Z. As the world gets smaller and international boundaries blur, especially on-line, there will be more and more need to know this.

This is a complex subject. Start learning about it now and you'll have a head start when have to implement related functionality.

... about this blog

Every developer should know about this blog.

But you (assuming you are a developer) probably want to know a bit about it as well. To that end, I've answered a few general questions below.

What is the purpose purpose of the blog?
To provide information to help developers improve and become better at what they do (create software). I hope everyone who is involved in software development wants to become better at what they do and I hope this blog can become a resource to help.

To be a really good developer there is loads you need to know but will probably never be taught. Often these are things that you might normally only learn with experience but might also be because few people teach them, because few people know them.

At the very least this blog might help you identify what you don't know. I'd like to hope it will inspire you to find out a bit more about those subjects also.

Why does it exist?
Because I couldn't find another resource for this type of information. Sure there are lots of sites that provide information in specific areas, but none that provide good general information on a regular basis.

Who is it for?
Anyone who is involved in software development. Whether you are a newbie or a seasoned expert, I hope you can learn something here.


I'd also love for you to contribute. If there is something the you think all other developers should know but frequently seem not to, please let me know. And if you can write a bit about it, even better.

What can you expect?
Once or twice a week, I'll post something that I, or someone who I respect, think that every developer should know.

The aim is to try and list information, or sources of information, that will be useful or relevant to any developer but sometimes things might be focused on a specific technology or language.

Who's writing it?
Me.

Hi, my name is Matt Lacey. I also have a personal blog which might tell you a bit more about me.


Do I think I know everything?
Definitely not!

Part of the aim of setting up this blog was also so that I could learn (directly from other people as well as by researching articles).



Got any more questions? Stick them in the comments. I'll do my best to answer them.