05 August 2022

05 August 2022

Azure SQL temporal tables 🔗

This looks like a really nice feature - temporal tables in Azure SQL. These are tables where the history of rows is kept - as a native feature of the database. This lets you do things like query the state over time - either at a particular time, or all the states over a period.

I recommend you to watch the Azure Friday video or read the docs.

Azure SQL multi-model features 🔗

Can store json, graph, geospatial, and XML data.

Json 🔗

Mark a column as json and it'll be validated when inserted/updated.

And then you can query on it of course. Either as a simple query, or you can map it to a table and query it like a table. The syntax is a little unnatural and complex compared to a NoSQL database, but it's useable.

You can also update the json structure, without having to read it all out and write it all back.

And you can do the opposite - select a database query and return the results as json.

The best of both worlds - performance and structure of a relational database, and the flexibility of a schemaless database.

Graph 🔗

Mark a table as node or edge and it'll form a graph. There's a new query format to query the graph.

And it can all be combined, eg graph model with json data.

Watch the Azure Friday video and read the docs in the links.

Nullability in C# 🔗

Nice explanation of what nullability is and what it's not. In short:

Nullability Is:

  • A way to get compile-time warnings about possible null references
  • A way to make the intent of your code more clear to other developers

Nullability Is NOT:

  • A way to prevent null reference exceptions at runtime
  • A way to prevent someone from passing a null to your method or assigning a null to an object

Rate Limiting support as part of .NET 7 🔗

From reading the start of this article, I thought this was a way to prevent causing DoS by calling a resource too often, eg by limiting the calls my SQL client makes to my SQL database. That would have been useful. But in fact it's something you build into your app to limit requests. I don't know why you'd want that rather than using APIM or Cloudflare or something like that.

Most top websites fail to follow best password policies practices 🔗

A Princeton University paper that reports on the password policies of the top 120 most popular English-language websites. The report said that only 15 of the 120 follow best practices, although personally I found their choice of criteria to be questionable.

Internationalization api for browsers 🔗

How did I not know about this feature that's been in browsers for a long time already? Intl provides language sensitive string comparison, number formatting, and date and time formatting.

I wonder why they called it Intl though, and not i18n. Oh, maybe it's because i18n in browsers is something else.