Last week, we had a heated discussion at work about encryption. We want to encrypt some data in our database, and I proposed that we go with a single private-key encryption mechanism (ignore which exact one for the moment), and my colleagues were pretty-much unanimously suggesting a ‘key per row’ approach. In this post I am going to attempt to explain the rough background, and why I felt their mechanism might not be best.
Category Archives: Computing and the Web
Boolean Expressions
The C# code-base I work on has hundreds of places where I have felt a boolean expression could have been used to simplify the code substantially.
Phantom Code
I’ve just worked on a little support problem that was quite interesting – although not in a good way – as unfortunately it demonstrates failures at so many stages of the specification and development process that I am quite disappointed to be associated with it. Associated, but not the cause of it, to be clear 🙂
Why’s Ruby Guide Update
I’ve just updated Why’s Ruby Guide pdf to include Chapter 7’s images; go to the specific page with updates. Thanks to Andy Matuschak for pointing this out to me, and giving me a link to where the documents are still available on the internet 🙂
The Rounding Race – Rounding DateTimes to Dates at Midnight
Yesterday I covered the implementation details of DateTime and SmallDateTime datatypes in SQL Server 2005. I approached the issue of testing dates to see if they fell on a particular date… but then stopped-short of some fairly useful (but arcane) stuff about rounding dates.
One Second to Midnight – DateTimes in Sql Server 2005
Today I am enthused to write about the DateTime and SmallDateTime datatypes in SQL Server 2005 (and possibly this also applies to 2008, although that has additional date and time types). I am driven to write this because I have seen a number of issues relating to their use in queries and one in particular that is a real annoyance to me – even if I have to admit that it is completely and utterly pedantic (most of the time).
Hello I’d Like to Change my Mother’s Name
A few months ago, our client had a ‘Compliance’ team visit. It was a nightmare. Worse than the general guff Marketing / Sales Departments come up with… or those nasty little changes that are all designed to improve the user experience (you know the ones; where you have to turn some design or code on its head, just because the users are apparently totally unable to understand ‘X’ or ‘Y’*). Anyway, I’m not exactly sure what we were meant to be complying to, but some of the changes were so arbitrary that we could not think of a single justification for them.
Big Release Week
A very personal note this time. Last week I released a project that was pretty-much the largest single release that I’ve worked on for my current employer.
Like many systems, the history of this one is that as customer applications made their way through the relevant processes, the system recorded various information about the processes that happened and how they worked out. The system then used the presence or absence of those success / fail records to decide what needed to be done next.
Empowering Your Lookup Tables
Recently, I’ve noticed that some developers, while fully understanding what a lookup table is for in terms of normalising data, miss opportunities to use them in additional ways. This post is therefore about those further uses for lookup tables that will really give you an opportunity to streamline your code.
The Basic Lookup Table
‘Lookup Tables’ are commonly created in relational data models and databases as part of the normalisation process. For example, instead of having address rows in an address table that continually repeat the words ‘HOME’ or ‘WORK’ to indicate if this is a customer’s home or work address, we might introduce an ‘AddressType’ table, with a primary key of ‘AddressTypeId’. Our AddressType table may look like this:
AddressTypeId Name
1 Home
2 Work