Programming

Genius in Hindsight: TypeScript Type Annotations

Posted on

When TypeScript first landed in public view in October 2012, the type annotations looked a bit funky. If you were a student of type theory, they would have been familiar; but most programmers wouldn’t have seen a type annotation like this before: var name: string; Given the popularity of putting type names before variable names, […]

Programming

Find SQL Server Job Clashes

Posted on

If you are working on an older application that has a lot of logic inside of the SQL database in jobs, procedures, and functions – you may find that your job schedules cause a repeating wave of SQL compilation peaks. If you suspect jobs may be the cause, you can use a query to find […]

Programming

C# Implicitly Scoped Using Statements

Posted on

This is a little gold nugget that is coming in C# 8 – implicitly scoped using statements. On a simple level, it means that when you consume an IDisposable class your previously explicitly scoped using statements: using (var connection = GetConnection()) { // Use the connection, it will be disposed of at the end } […]

Programming

Visual Studio Code IntelliCode Extension Preview

Posted on

IntelliCode brings AI-assisted power-ups to your auto-completion. It has been in preview within Visual Studio for some time (you can read about Visual Studio IntelliCode here) – but it has now landed in Visual Studio Code, which is exceptionally handy if you’re a TypeScript programmer like me. So what is IntelliCode? It’s a simple VSCode […]

Programming

Create and Hydrate a TypeScript Class from JSON

Posted on

It is pretty common to want to hydrate a class from a JSON value obtained in a service. If you just parse the JSON you get the properties, but not the behaviours that you expect. As this is a reasonably common problem to solve, it is worthing doing it just once. The following function will […]

Programming

TypeScript NotFunction Type

Posted on

I have been working out how to create a TypeScript NotFunction type for a while, in response to a Stack Overflow question. With the arrival of conditional types, I think there may be a way. It’s not perfect – but it does work. The type works by taking all possible types and converting the type […]

Programming

C# Interfaces: Default Implementations

Posted on

The C# 8.0 announcement included a note on default implementations of interface members. If you’ve been programming for long enough, this might make you a little nervous at first thanks to the hangovers of multiple inheritance. Before you chuck out this idea, though, let’s look at it from a different perspective. I’m going to talk […]

Programming

Traits vs Mixins

Posted on

Here is a quick disambiguation between Traits vs Mixins for programmers. Mixins are now fairly well known. You can use mixins to add shared methods to your classes without inheriting from the class they live in. It’s an increasingly popular technique for sharing and extending code. Instead of inheriting from a single parent, you can […]

Programming

TypeScript Dictarray Options

Posted on

This is one of those cases where a question keeps cropping up, so lots of people are trying to do something that the TypeScript Compiler doesn’t like very much. Yes, it’s time to talk about the TypeScript Dictarray! What’s a Dictarrary? It’s a dictionary that’s also an array. You know… one of these: const dictarray […]