How does the Hololens 2 matter?

So that happened, the Hololens 2 has been released. A few people have asked me what I think, so it’s about time I got my thoughts down on paper the interwebs. I’ve had a day or 2 to mull over it now - so here it is for you.

The main features touted are improved FOV, fully articulated hand tracking and increased engagement and collaboration - partnerships and technology enablements.

But how will this play out? How much is smoke and mirrors? What are the effects here? Read on for my thoughts.

Seedy Fake Data

With fake user authenication done, we had everything we needed to generate fake data.

The seed data was generated on every deployment to our dev and demo environments - which gave us nice, clean, predictable demos, and our dev server was never a terrible mess of temporary data (yeah, you know what I’m talking about).

Seedy Fake Users

Ever been on a project where a dev comes on board, and has to clone databases in order to get test data? What about when you just want to nuke all your test data and start afresh - is starting afresh pretty painful?

We went whole-hog on seed data and test user generation recently, found it to be incredibly useful, and will be doing it on future projects.

This post covers the fake user creation aspect.

Put your operations on your client

In the last post, I showed how we put our server DTOs into our client code, to ensure changes in our data structures didn’t silently fail. In this post, I’ll show you how we protected ourselves against changing API endpoints.

Put your server types on your client

A recent gig I was involved in relied fairly heavily on code generation in order to make our client/server communications type safe.

We were using TypeScript so a lot of our safety could be guaranteed at compile time - as long as the types were on the client. Since we’re fallibe, and computers like doing things repetitively, we used some codegen to do this for us.

Our goals?

  • Generate DTOs for all models (and dependants) going to/from API controllers
  • For all enums in the models, create a way to get names, values and descriptions
  • Avoid TypeScript’s any keyword, which breaks this whole approach