Top 10 Remote Working Essential Gadgets

I’ve been working from home a few years now and here are my Top 10 essential bits of kit to help with remote working.

1. Standing Desk

Essential really. Get yourself a decent standing desk. Preferably one you can program at least 3 settings into so you get the standing and seating levels perfect for your size. Don’t bother with a mechanical/manual one. Get an electric one that enables the following…..

2. USB Slots

Lots of them within easy reach. My standing desk has 3 at the side for charging my phone, headphones etc. More USB slots can be found on my….

3. USB Docking Station

An absolute must. Get a decent USB docking station. That way you just plug the one USB cable from your laptop to the docking station and your set to go. All monitors, keyboard, mouse and any other devices sorted.

4. Webcam

Yeah I know your laptop has a webcam. However, once your laptop is docked you wanna close the lid and tuck it away. The Logitech C270 HD has light correction and noise reduction and all for less than £25. The mic sound levels are always perfect along with the picture.

5. Wireless Flashing Doorbell Chimer

So you’re gonna have headphones on most of the day but you don’t wanna miss out on important deliveries. Get a doorbell with a chimer that flashes as well as ringing. Problem solved. The one I have is £12

6. A Clock

Why the hell do I need a clock? Well you’re not in an office anymore. Days drift into evenings without any coworkers getting up to clock off for the day. You need reminders that it’s time for lunch or to stop hitting the keyboard! The Bresser’s are pretty good and come in a range of colours

7. Plants

Essential. They’re your office friends now. Greet them on a morning and say good night at the end of a working day.

8. Wall Art

Ok so maybe you don’t need a Kraftwerk/Computing crossover one but you need something to stare at other than…….

9. Magic Whiteboards & Real Whiteboards

I started out with a real whiteboard and I’ve recently moved onto the “Magic” ones. I currently have 3 whiteboards full of ideas/requirements straight out of virtual meetings and onto the walls. Oh and don’t forget the marker pens

10. Office Plaything

Whaaat?? Well you need something. Juggling balls, dodgy 80s guitar. Just something to play with that’s not work related for the occasional break in proceedings.

Azure API Management Template Parameters Used In The UriTemplate Must Be Defined In The Operation, And Vice-Versa

Following on from my adventures in Azure API Management Caching I discovered the following error when updating Azure API Management with a new OpenAPI definition file I received the following error: “Azure API Management Template Parameters Used In The UriTemplate Must Be Defined In The Operation, And Vice-Versa”. A fair bit of head-scratching ensued, due to the error message not giving too much away, (which Operation? I’ve 100s of them!) and also being a bit flippant (“vice-versa” <– sass!). Also, I always check that my OpenAPI document conforms and plays nicely with the online Swagger editor. So what gives?

Azure API Managament UriTemplate Error – The Solution

I closely examined my last commit on the OpenAPI doc. I could see where I’d copied and pasted in new operations. I’d rather foolishly included “childId” as an input parameter for an operation that didn’t use or require it. My bad!. That said this is an easy/common bug to have. No developer would hand crank every Operation so it would be much better if we had some further assistance from Azure here.

Remote Working Tools – Introducing Cloud Winch

Migrate your home drives to One Drive for Business. A gateway tool to the cloud!

Although I played an incredibly small part in this product’s evolution it’s great to see the full fruition of a genuinely useful quick and simple cloud migration tool and the team working together to get this over the line in 1 week.

Upgrade to dotnet 3.1 from 2.2 causes foreign key conflicts

EF Core 3+ Breaking Changes 🙂

Just following on from my web api/swagger/data .net core 2.2 to 3.1 upgrade and here. I hit another blocker just as everything was going so smoothly!. Basic functional testing on the API was going well until I noticed some POST operations failing with “ERROR The INSERT statement conflicted with the FOREIGN KEY constraint <FK>. The conflict occurred in database “DATABASE”, table “dbo.<tablename>”, column ‘<column name>’. “

Why?

This was all working nicely prior to the upgrade so what gives? After a bit of digging I was directed to the EF Core 3.0 Breaking Changes. Turns out temporary identities (that I’d relied on so much when creating entities with child entities) are no longer supported. I guess this would stop any potential negative values being persisted to data stores but didn’t really help me right now.

Solutions

So what’s the solution? Hitting the DB several times to get parent Id then to decorate the child ids seems crazy. The breaking changes offers the following:

  • Not using store-generated keys.
  • Setting navigation properties to form relationships instead of setting foreign key values.
  • Obtain the actual temporary key values from the entity’s tracking information. For example, context.Entry(blog).Property(e => e.Id).CurrentValue will return the temporary value even though blog.Id itself hasn’t been set.

The first bullet point doesn’t really help matters and the last bullet point feels a bit messy. So I’m left with using navigational properties. This wasn’t too much of a ballache as the navigational properties should be there already so it’s just a case of replacing

someChildEntity.ParentId = someParentEntity.Id with someChildEntity.Parent = someParentEntity

This appears to resolve the issue but I guess always check the breaking changes before going for the upgrade to ensure any point estimates account for the additional work!

OData .Net Core 3.1 with Swagger

Object reference not set to an instance of an object. at Microsoft.AspNetCore.Mvc.Routing.ApiVersionMatcherPolicy

I recently upgraded .net core 2.2 web api with Odata and Swagger to 3.1 following Microsoft’s recent endpoint routing support with OData 7.40. All was going great until I realised certain API endpoints were failing with “Object reference not set to an instance of an object. at Microsoft.AspNetCore.Mvc.Routing.ApiVersionMatcherPolicy”. On closer inspection the endpoints failing were all child resources. For example ../api/company/1 works fine ../api/company/1/staff and ../api/company/1/staff/1 were failing with

Solution

After a bit of digging (I removed the OData versioning Nuget packages as these are now served via .Net) I realised I had the [ApiController] attribute decorating every Controller. Looking at some of the recent examples online I noticed this wasn’t present. Once I’d removed the attribute I was back in business.