Microsoft Certified: Azure DevOps Engineer Expert
Microsoft Certified: DevOps Engineer Expert

It feels a little odd to be able to call myself an “expert” in anything, and truth be told, I don’t think I would call myself an expert in Azure DevOps (yet), but that’s the name of the certification, so here we are.

So this was the big one. This was the goal I had in mind when I started my certification journey 3 years ago. (Almost to the day!) It was also one of the short-term goals I set for myself in my last promotion panel. It took me longer to get there – mostly because my career has picked up more and more the further I went into this space, so I had less time and energy to dedicate to study. The exam for this was rescheduled no less than eleven times! I’d meant to sit it in Q4 2021, but I was head down on a big and important project at that point and had to reschedule the pre-requisite AZ-204 exam to 2022. After that I just kept postponing it and feeling bad until I stuck a pin in the calendar and said “no more!”

Like most of my exams, I leaned on a mix of MS Learn, MeasureUp, and WhizLabs to prepare. With the benefit of hindsight, I’d recommend the WhizLabs practice tests over MeasureUp. While the general practice of the MeasureUp test was good, the WhizLabs tests were much closer to the questions I was asked in my exam – obviously this might not always be the case, as both Microsoft and the test providers refresh their questions every so often.

Overall I’d say I found the exam itself easier than the Developer Associate, but I had a lot of the same “I don’t really recognise this” feeling all the way through. I think that’s just a general anxiety I have in these exams, as despite the feeling I passed with a generous buffer. As a general aside, there were a lot more questions on the nitty-gritty of Git than I expected; I’d focussed more on GitHub features, Azure Repos branch policies, and other Azure-specific pieces of the SCM puzzle, so it wasn’t as easy to recall some the answers.

But it’s over with. I’ve decided I’m not going to go for the Azure Administrator cert (AZ-104) for now, as I think I need a pause or change of focus for a while to avoid some learning and development burnout.

But that said, some of the stuff announced at MSBuild 23 looks really interesting, so maybe I should build on my AI Fundamentals and learn about all this new AI/Copilot tech 😉

I got a bluesky invite a couple of days ago, set up my account, and I’ve been trying to wrap my head around the new protocol-based “not-Twitter” service ever since. It’s… an odd duck, to be sure.

Conceptually, it’s a similar idea to Mastodon – a decentralised service based around a protocol, rather than a single website. It uses the the AT protocol (as in “@”) rather than ActivityPub, which caused some consternation and concern in the Fediverse, but I’m putting that to the side for now. Suffice to say – for now – bluesky is incompatible with Mastodon and other Fediverse applications.

It’s also not decentralised much yet. The protocol is in the very early stages and the current bluesky service is the only public instance that I know of. The team behind it all are building things out in public view. However, there are developer and API docs available, so the landscape will be expanding in due course. Micro.blog already has working cross-posting to a bluesky account. If all goes well, this post will be cross-posted through my micro.blog account.

As such, everything is very rough around the edges, and there are loads of features missing. The iOS app is functional and fast, which is nice, though it does feel like it lacks a little polish, and there are bugs to be found. The dev team are very active on the service and responsive to feedback and bug reports. They’re also pushing out new builds as fast as the App Store will let them, so major issues don’t last long.

The community itself is… chaotic. There’s a sense of having fun while the “adults”/brands aren’t there. In-jokes abound, and “shitposting” is the order of the day. Most of it flies completely over my head. My shitposting, terminally-online days are far behind me. I can’t say I’m bothered by it, I just don’t really get it.

What does slightly irk me is the main timeline. It’s currently not just posts from people you follow (at least not for me – maybe I need to reach a threshold?), and you’ll see replies and pieces of threads in no discernible order amongst the posts you would expect to see. It adds to the sense of chaos and not knowing what’s going on, but it does make the place seem quite lively!

I haven’t formed enough of an opinion yet to say whether bluesky is “good” or “bad”. It’s currently different in feel to anything else I’ve been trying as a Twitter alternative, but we’ll have to see how well that lasts once the service grows further. If you’re on bluesky yourself, give me a follow here, and let me know how you’re finding it.

And no, I don’t have any invite codes to give out – sorry!

An upturned 3D printer build plate, showing a batch of 60 studded Space Marine shoulder pads, in the style of Mk 6 marines from the Horus Heresy: Age of Darkness boxset. They have been printed in a dark grey resin

Added supports to an STL I wanted to print for the first time. It even printed out fine… eventually. The first attempt came out as a near solid brick of resin, and required a very messy cleaning out of the resin vat, to remove parts that had stuck to the bottom. It was just a tiny, very simple thing – a space marine shoulder pad – but: yay! I finally did it!


Context:

For those unfamiliar with (resin) 3D printing: because 3D printing is done layer-by-layer, and resin printers essentially work upside-down, most models require some form of supports added to the model before it will print OK in a resin printer. These act as scaffolding holding an area of the model being in place while any surrounding geometry is cured, preventing “islands” (areas of a model not connected to the rest of the model on that layer) from sticking to the bottom of the resin vat when the build plate is raised. Resin stuck to the bottom of the vat is a very bad thing – 1, your model will be incomplete, if it prints at all, and 2, it can lead to a broken printer. So: supports are important! See below for an example of an excellent, professionally supported model:

A professionally supported commercial STL file, ready to print

I’ve been putting off trying to support models by myself; mistakes take a long time to discover and a massive pain to clean up. Most commercial models come “pre-supported” – a professional has already done the work. But I still have plenty models in my library which are by hobbyists and come unsupported; if I want to print those, I have to learn how to do it, so I’m going to have try. I watched a couple of videos on YouTube to get an idea of what I need to do, then just gave it a shot in Lychee, checking the output in UVTools regularly to make sure I hadn’t missed any unsupported islands.

Despite this checking, and creating a supposedly perfect setup, my first print failed. Badly. I think it was because I didn’t raise the model up high enough from the raft, which combined with the suction force created by the type of raft I chose, compounded three problems – partial peeling away from the build plate, deformation caused by too few supports, and close-together parts fusing together when exposed (in this case the raft, supports, and model). Like I said, it came out like a solid block with bumps where the tops of the pads should be, after 1h 45 minutes in the printer. Much swearing, and spending my lunch break cleaning things up followed.

Going back to the drawing board: I raised the model up, added lots more – but thinner – supports (probably more than I needed), and changed the raft type to one which wouldn’t act like a suction cup. 2h 19 minutes later and I had a very successful print!

An upturned 3D printer build plate, showing a batch of 60 studded Space Marine shoulder pads, in the style of Mk 6  marines from the Horus Heresy: Age of Darkness boxset. They have been printed in a dark grey resin
An amateurly supported STL file, printed 60 times

This toot by Dave Winer reminded me I meant to write down how I’m trying to make sure I write more on this blog in 2023, even if it might be more trivial than what I’ve historically written here in the past.

Basically: if I catch myself writing a post somewhere else, and I’m approaching the character limit, putting in line breaks/formatting, or otherwise notice that with a bit of light editing it could be a short blog post, then I copy the text over to here and make it fit. I want the order of priority of where I post to to be:

  • Here, first and foremost, for anything that has even a modicum of thought put into it.
  • Mastodon, for anything that’s totally throwaway
  • My new micro blog for anything that fits anywhere between either those two (mostly I’m going to use it for tracking my reading progress, but it might get the odd link post or stray thought too )

Thanks to fediverse integration in all of the places I write, plus support for multiple feed formats, getting my words “out there” isn’t something I need to worry about, so I’m just going to try to concentrate on writing instead.

We found a cute, but unused “little library” while out on a walk. As she’s always got some to hand, Caley left a couple of books to get it started.

We’ll check backnext time we’re going that way, and hopefully the library has started to get some more use… otherwise, I’m sure we can find some more books to donate and grab people’s interest!

I posted a short while ago about my first prototype “MagPuck” base magnetising jig, and how I had some ideas to improve it. Well, I have v2 completed, and have been testing it out over the last week or so, and I love it (mostly – there are some bits that need refined still)

V2 moves away from the solid block, and instead uses 3 plates layered on top of each other. These are secured using M3 bolts. The bottom layer is the base plate, and is for support. The middle layer holds the alignment magnet(s), and comes in 3 configurations: single, double, or quad magnets. The top layer holds the base in place, and there are plates for bases sized from 25mm right up to 50mm.

v2 plus additional plates

Using the MagPuck is really simple: drop in the base, apply glue roughly where the magnets are on the 2nd layer, drop in your basing magnets, optionally apply some activator, then pop the base out – then repeat. I can now magnetise 10 25mm bases in just a couple of minutes – significantly faster, and with much less fuss and mess than before. Here’s a short demonstration video:

So what could still be better? Well, getting the base out is still a little tricky; I’ve added the small indent to make this easier, but the magnet in the base and the magnet in the jig are naturally pulling towards each other, so it needs more force than I’d like. Not much, but I have sent a base flying off my table more than once! V1 had sloping sides that made this easier, but that limited base support to just GW bases, and was more fiddly to get everything modelled correctly, so is less than ideal. Perhaps making the indent wider an/or deeper will solve the problem?

I just had an interesting issue where the ActivityPub plugin started reporting that my author page on both this site and Worlds In Miniature was no longer serving valid JSON, and so was inaccessible:

a screenshot of  part of the WordPress site health screen. It shows 1 Critical issue reported by the ActivityPub plugin:

"Author URL is not accessible

Your author URL https://worldsinminiature.com/author/chris/ does not return valid JSON for application/activity+json. Please check if your hosting supports alternate Accept headers."

Sure enough, checking the URL with cURL, or an HTTP client like Thunder gave a 200 response but no response body. It had been several days since I had last made any changes behind the scenes, and everything had been working in the interim, so I was a bit stumped.

Anyway, after a bit of digging around, I came upon this thread and specifically this post which pointed me to the problem: Jetpack Boost. It wasn’t the most recent plugin I’d installed, and – as I mentioned – things had been working fine since I had installed it… but something had happened in the background which had broken things, and turning off Jetpack Boost as a first test instantly solved the problem.

Later in the thread the problem is tracked down to specifically the “Defer non-essential JavaScript” option, so if you’re having trouble with ActivityPub, and have Jetpack Boost installed, turn this option off to fix the conflict.

A screenshot of the Jetpack Boost options screen, showing the 3 available settings. Optimize CSS Loading is turned on, and a progress bar shows it is generating "Critical CSS". Defer Non-Essential JavaScript is turned off. Lazy Image Loading is turned on

Warning: May contain mild spoilers for Assassin’s Creed: Valhalla.

I finally finished Assassin’s Creed: Valhalla (hereon AC: Valhalla, or just Valhalla) last night. I say finished – what I mean is I have completed all branches of the main narrative storyline: Norway, England, Asgard, Jotunheim, and the recently released Final Chapter update. Although I own and have played most of them, I’ve not completed all of the optional content and DLC packs. I might do so one day but for now I’m not in a rush to get back to the game.

So… Let’s get one thing out of the way first: AC: Valhalla is a good game. I’ve played roughly 110 hours of it, so it must have had something going for it…

It’s just that Assassin’s Creed: Odyssey was a much more fulfilling and enjoyable game – for me – on just about every level. Kassandra (I didn’t play as the brother, whatever his name is) was a much more “connectable” character than Eivor, and I found the story and setting of Odyssey more engaging. Combat was also more enjoyable and more varied, I found. The fact it also got me to sink days into the naval combat element, despite initially wanting to avoid it like the plague says something. I’ve put 150+ hours into Odyssey, and there’s still stuff I want to do in that game (when I eventually find time to get back to it).

One of the complaints about Odyssey I’d heard is that Kassandra was a “Mary Sue” character. I personally didn’t really get that from Kassandra, but Eivor gave me that feeling by the bucket load. No where was this more pronounced than in the optional Isle of Skye chapter where the two characters come face-to-face. Some of it can be put down to Eivor’s bravado and brashness, but a lot comes across as just Eivor is, well, The Chosen One™️. (Although I guess The High One would be more appropriate…)

So what did I like about Valhalla then? Well, the overall story was interesting, if you’ve been mildly paying attention to the meta-plot of the Assassin’s Creed games (if you haven’t, then you may not enjoy it as much). I do wish they had spent more time on some elements, less on others, and some elements seemed to come out of nowhere – more than once I felt like I’d missed some thread that explained why a thing was happening, or a character was doing what they did. But I digress. A lot of the character interactions were genuinely heart-warming, and you got a real sense of a “found family” feeling between the various inhabitants of Ravensthorpe. The setting was interesting – I enjoyed Dark Ages England overall, and each region felt just distinct enough to the others… but it didn’t feel there was as much to accidentally discover as there was in Ancient Greece. Combat was fine, if a little repetitive, and stealth gameplay didn’t always feel as viable as going full jomsviking – particularly in the early game. After a bit of progression, Eivor becomes a walking paragon of death-dealing and it doesn’t really matter how you play – you’re unlikely to die, and enemies very much will. It’s fun, in a power-fantasy way, but can get old.

One thing that came out of playing Valhalla was that I really wanted to get some fantasy Viking and Saxon miniatures to paint up. By “fantasy” I basically mean stylised and not historically accurate. But I haven’t been able to find a range that quite matches what I’m looking for, so that project is on hold for now.

It might seem like I’m negative on Valhalla, but like I said a couple of paragraphs ago, it is a good game. I think my problem is I had high hopes and expectations after Odyssey that it might be a great game, and it didn’t meet that threshold. But that’s on me, not Valhalla. If I hadn’t come into it without a game to compare to, I might have loved Valhalla more.

But – it has got me interested enough in the upcoming Assassin’s Creed: Mirage, that I’m definitely going to pick that game up. Basim was one of the highlights of Valhalla, so I’m looking forward to exploring both his back-story, in a return to more traditional Assassin’s Creed gameplay than the RPG-lite recent games, and hopefully find out a bit more of where he’s going in the future.

A row of 17 books, mainly hardback fiction, on a wooden sideboard top
My 2023 (physical) “TBR” shelf

For the first time in a long time, I have a physical shelf of books that form my “to be read” list. (aka TBR in bookish circles)

Over the last few years I’ve fallen out of the habit of reading regularly for fun. Which is odd, given I live with someone who has their own book review blog, YouTube channel, and read 210 books last year. This year I want to make a concerted effort to try and be more consistent, so I’ve put the books I want to read sometime soon front and centre in my office – they’re on top of the sideboard that sits to my right when I’m at my computer desk, or left when I’m at my hobby desk, and within arms-reach of both.

The list itself is a mix of old favourites I haven’t read in years, new fiction reads I’m sure I’ll like, some new authors or genres I’m not familiar with, and a couple of non-fiction books to round things out. I still have 3 books I’m waiting on physical copies of to arrive. The full list, in no particular order, is:

  1. Hallowed Ground – Richard Strachan
  2. The Hollow King – John French
  3. Rogal Dorn: The Emperor’s Crusader – Gav Thorpe
  4. The Hobbit – J.R.R. Tolkien
  5. The Fellowship of the Ring – J.R.R. Tolkien
  6. The Two Towers – J.R.R. Tolkien
  7. The Return of the King – J.R.R. Tolkien
  8. The Triumph of Saint Katherine – Danie Ware
  9. Helbrecht: Knight of the Throne – Marc Collins
  10. Reaper Man – Terry Pratchett
  11. Mort – Terry Pratchett
  12. Soul Music – Terry Pratchett
  13. Dune – Frank Herbert
  14. Dead Lies Dreaming – Charles Stross
  15. Miss Marple: The Complete Short Stories – Agatha Christie
  16. Hercule Poirot: The Complete Short Stories – Agatha Christie
  17. Briardark – C. L. Werner
  18. Haven’t You Heard? – Marie Le Conte
  19. Escape – Marie Le Conte

Hopefully these won’t be the only books I read through the year; I’m giving myself permission to pick up new books throughout the year as they pique my interest.

In terms of keeping track, I might use Micro.Blog, as it’s added several book-related features over the last couple of years, and has a nice and simple companion app for iOS, called Epilogue. Another option, that my partner recommended, is The Storygraph. Naturally, I’ll be posting updates to this blog too!

A 3D printed prototype of my 'MagPuck' jig for adding magnets beneath wargaming bases. It is a grey plastic block with a recess for a base. At the bottom of the recess is a further recess which holds a 6mm x 2mm magnet. A small area has been carved away at the edge of the base recess to allow for levering the base out

One of the things I hoped to do when I bought my FDM 3D printer was to use it to solve small problems I was having. Today I designed and printed my first prototype. It’s not much to look at, but it is just the first iteration!

Glueing small magnets under the bases of miniatures is a common job I have to do, as it’s useful for storage, transportation, and adding some weight. Unfortunately, it’s a job that can be unnecessarily fiddly and messy. Getting the magnet to stay in place while the glue dries is a pain. Recently I hit upon a trick of using a magnet on the other side of the base to help with this issue, but making sure everything was in the right place could be made easier.

Enter what I’m nicknaming the “MagPuck” – a simple jig that will align a base with a magnet that ensures that the base magnet is held perfectly centred while glue dries. It’s simple but effective – with the prototype I was able to magnetise a batch of ten bases in just a minute or two.

No first attempt is perfect though – no doubt you’ve noticed where I had to carve out an indentation to let me lever out the base. The next iteration will have that built-in. Another change will be to make the MagPuck modular, so as to make it more efficient to print, while supporting multiple base sizes and magnet configuration. Below is a sneak peek at the next iteration, which I’ll be printing out as soon as the printer finishes some terrain I kicked off before I’d had my ideas on how to improve on the prototype.