Sunday, July 29, 2007

Laws of software development

(This was originally going to be on EDSK)


19 Eponymous Laws Of Software Development
My faves:
Parkinson’s Law - so does blogging
The Peter Principle - I'm still on the way up
Conway’s Law - I won't say which software/company I'm thinking of


laws, axioms and rules pertaining to mainstream software development
My faves:
Clarke’s Third Law - just like that
Flon’s Axiom - hence http://worsethanfailure.com/
Hoare’s Law of Large Programs - Why do those in support seem to not know this?
Jakob’s Law of the Internet User Experience - Amen

Friday, July 27, 2007

EDSK ... 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.

Wednesday, July 18, 2007

Tuesday, July 17, 2007

already on wishlist


I'm surprised Amazon even let me try to add something that was already on my list. A bigger warning that I had done might have been nicer. I had to search for this, when the normal page wasn't displayed after adding an item.
This is bad. It didn't do what I expected and it didn't make it clear why.

Why all the posts about presentations

You may have noticed that I have posted a lot about presentations.
Two reasons.

1. I want to be good at presenting and so I'm linking up references to tools and tips that will help me.

2. Presenting well is about clear and effective communication of ideas and information. It is about making the information usable. I find a lot of the techniques and ideas about creating or making a good presentation also apply to making good software:
  • Clear presentation of data
  • Showing one thing at a time
  • Logical progression of ideas/information
  • Visualising data.
  • ...

Friday, July 13, 2007

2 quick notes on SQL Server Triggers

Because there is a lot of misleading and contradictory information on the web about this. I encourage you to test this for yourself. Don't believe it just because someone says so on the internet! - I learnt the hard way ;)

A trigger (insert, update or delete) will get called only once, even if more than one row is affected.

Update and delete triggers will be called, even if no rows are affected.

SQL Server sample databases

While it is wise to delete sample databases from a production environment, don't delete them from your development environment.

Why?

Because, one day you are going to be looking for a way to do something you have never done before, some strange type of query, perhaps. If you are lucky you will find an example (on-line, or maybe in a book). The chances are that the example will be against one of the sample databases. If you haven't got the sample database any more, the example is no good to you.

The space you gain by removing sample database is minimal. If you are running out of space on a development machine, you will likely have bigger issues than a few small sample databases.

Keep samples, you may need them one day.

Thursday, July 12, 2007

Introducing ... ME

Let me formally introduce myself.

Hi. My name is Matthew Robin Lacey (hence mrlacey), but you can call me Matt.

By day I am a software developer and by night a husband and father.

I live in Woking, England.

I have been a professional (as in paid) developer since 1999 and have had a varied career. I have worked in small companies (~15 people) and large multi-nationals (40,000+ people). I have also done some freelance work. I have worked in consultancies, corporate IT departments and at ISVs. I've worked on Windows and *NIX platforms. I've worked at all levels of support as well as in development. I've used more programming languages and tools than I can remember, but currently, I mostly work with Delphi and C#, but with a little PHP thrown in here and there.

I feel that covers a pretty broad spectrum and has allowed me to see a lot of good and bad within the industry.

The first program I ever wrote was a game on the programmable calculator I had for my A-Level maths course. I thought it (the game) was pretty good, considering the device had less than 1KB of programmable memory,

My main interests within software development are: web development; mobile development; and usability.

Outside of software development I have been known to play basketball and football. I also enjoy cooking and going to the cinema.

If I had more time to do things I want to do (i.e. fewer responsibilities and didn't have to work for a living) the things I'd spend my day doing would probably include (in no particular order):
  • I'd still probably use computers a lot.
  • I'd go to the cinema in the day.
  • I'd cook a lot more.
  • I'd pray and read my Bible a lot more.
  • I'd spend more time with my family.

Friday, July 06, 2007

Bloggers: consider the future

I've been reading a lot of blog posts that are several years old. One thing that has become increasingly frustrating is blog posts about an article or image on another site that no longer exist.

Please, if you are writing about an article on another site at least post a snippet (and obviously provide credit and a link to the article.) And if you are writing about an image on another site, at least include a thumbnail of the image so we have a chance of understanding the post if the other site should ever be down or remove the file.

Monday, July 02, 2007