Categories
Work

Some Development Environment Notes

Because Docker have changed their licensing and subscription TOS overnight, I’ve had to rebuild my development environment so it doesn’t use Docker Desktop on Windows anymore. What follows are notes I’ve made along the way on how I got this working on my particular laptop. This is not a tutorial! While the notes below might help you, they’re mostly a reminder to myself, in case I need to rebuild again, or adapt this into documentation for the rest of the team.

Docker on WSL

Uninstall Docker Desktop. Make sure WSL2 and a distro are installed and updated, then follow this guide by Jonathan Bowman.

Install docker-compose:

sudo apt-get install docker-compose

Git configuration in WSL

Setup Git to use your email address and username:

git config --global user.name "Your Name"
git config --global user.email "youremail@yourdomain.com"

Use the Windows Credential Manager, to share credentials across WSL/Windows:

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-wincred.exe"

WSL Tweaks

Set the default WSL distro:

wsl -l --all #list your available distos
wsl --setdefault Ubuntu-20.04

Create the file %USERPROFILE%\.wslconfig, and add the following:

[wsl2]
memory=8GB              # How much memory to assign to the WSL2 VM.
processors=4        # How many processors to assign to the WSL2 VM.

Adjust the values as necessary. This limits the VMMEM process to a sensible amount of resource usage – it’ll consume everything it can otherwise.

Restart WSL:

wsl --shutdown

(Open a new WSL terminal to start it again)

Windows Terminal Tweaks

To create a command which opens a single tab which is split into four panes, with each pane set to a different service directory, open the settings.json file, and add the following in the commands array:

{
            "command":
            {
                "action": "wt",
                "commandline": "new-tab -p \"Ubuntu-20.04\" -d \"//wsl$/Ubuntu-20.04/home/chris/dev/graphql\" ; split-pane -V  -p \"Ubuntu-20.04\" -d \"//wsl$/Ubuntu-20.04/home/chris/dev/inbound-service\"; split-pane -H  -p \"Ubuntu-20.04\" -d \"//wsl$/Ubuntu-20.04/home/chris/dev/outbound-service\"; mf left; split-pane -H  -p \"Ubuntu-20.04\" -d \"//wsl$/Ubuntu-20.04/home/chris/dev/front-end\""
            },
            "name": "startdev"
}

The network-style formatting of the starting directory is necessary, otherwise the path won’t be parsed properly.

Other

Install Node, etc on WSL by following this guide in the Microsoft docs.

To get VS Code Remote working, open a WSL terminal, then run the following:

code .

This should automatically install the Remote server. Once done, a Remote editor can be opened in Code on the Windows side. Extensions for Remote are managed separately, so install any that are needed, such as Docker, etc.

To have the VS Code Remote window make sure Docker is started when it’s opened up, add the following to ~/.vscode-server/server-env-setup on the WSL side:

DOCKER_DISTRO="Ubuntu-20.04"
DOCKER_DIR=/mnt/wsl/shared-docker
DOCKER_SOCK="$DOCKER_DIR/docker.sock"
export DOCKER_HOST="unix://$DOCKER_SOCK"
if [ ! -S "$DOCKER_SOCK" ]; then
    mkdir -pm o=,ug=rwx "$DOCKER_DIR"
    chgrp docker "$DOCKER_DIR"
    /mnt/c/Windows/System32/wsl.exe -d $DOCKER_DISTRO sh -c "nohup sudo -b dockerd < /dev/null > $DOCKER_DIR/dockerd.log 2>&1"
fi
Categories
General/Life Work

Microsoft Certified: Microsoft 365 Fundamentals

Note to self: don’t book exams for very first thing on a Monday, as you might not get to finish your coffee beforehand! Bad scheduling aside, this morning I passed the Microsoft MS-900 exam. This takes me to five certifications this year, adding Microsoft Certified: Microsoft 365 Fundamentals to the list.

I hadn’t really planned to do this exam, and it was very much a spur-of-the-moment thing, largely driven by “well, I’ve done the others, so I might as well…” As I mentioned the other day, I found this one a bit odd to study for. Although I passed, I don’t feel I was as prepared for this exam as I was my others, even though I tried to approach it in the same manner I’ve approached my other certifications this summer. I really struggled to find resources which were both comprehensive and up-to-date. A lot of the non-MS resources were from 2019 and 2020, but the exam was updated in 2021. That said, enough of the core information was available, and my view is probably being tinted by my initial… disappointment(?)… at my own performance. Yes, I know that sounds odd to say after passing, but I guess I just feel I could do and should have done better.

I guess if I had any advice to give about the exam it would be: study the chart of MS365 editions and what features are available in each one. There were a lot of very specific questions on this – more than I was expecting – and I wish I’d learned it in greater detail.

As far as resources go, I used my regular mix of Microsoft Learn’s free study material, and the Percipio video courses I have access to through my work. As there is no Whizlabs module for MS-900, I used MeasureUp for the first time, so I could have access to a reliable online practice test. It was good, following the format of the real exam pretty closely. I’ll be using their tests again when I’m going for the AZ-104, AZ-204, and AZ-400 exams.

Categories
Work

Appraisal

I had my yearly performance review/annual appraisal today. I know a lot of developers (and non-developers!) who treat these with a very dismissive or laid-back attitude. A lot of the time it’s because it’s seen as a “box ticking” exercise with little obvious benefit to the appraised. Another common attitude I’ve seen over the years is that the outcome is already decided before the meeting, often on personal or emotive reasons rather than an honest and clear-eyed look at how the preceeding twelve months have gone.

I’m not someone who sees the annual appraisal this way. As someone who has been on both sides of the table at different times, I view the appraisal as an important milestone in the year, and should be treated as such. If you don’t take your own appraisal seriously – particularly in the preparation for it – then how can you expect others to? In the rest of this post I want to talk about the appraisal, and my thoughts around how to approach it (from the point of view of the appraised in this case – maybe next time I’ll do the appraiser viewpoint)

In my experience the appraisal is a good opportunity to do three things:

  1. Confirm to yourself what you’ve achieved over the last year – and maybe more importantly – remind your manager of it. Managers are not omnipotent. They don’t necessarily know or remember every little victory you’ve had. So remind yourself, and remind them.
  2. Look at the trajectory you’re on and where you’re headed over the next year. Is that where you want to be? Is that where your manager wants you to be? What do you want to achieve?
  3. How do your colleagues see you? Where does that fit into the above two points? Make sure you get some honest, constructive, feedback from coworkers.

The important piece is that this isn’t just some onerous process which is mostly for the benefit of HR. An appraisal is guaranteed one-on-one time with your manager to have an open and frank discussion about you and your career. Not just the job you’re doing now, but also what you’ll be doing next and beyond. The appraisal can be thought of as the regular status check on your career ambitions.

This year, my appraising manager isn’t who I directly report to on a day-today basis. They used to be closer to me in the reporting structure, and they chaired my promotion panel earlier this year, so they’re not unfamiliar with me – but they don’t necessarily know the fine details. For example, they knew I had been looking into training and development activities, but didn’t specifically know I had completed four certifications in the last few months; they also didn’t know all of the impact I had been making on my current project – so I had to recount those stories, backed up by the feedback from my colleagues.

It’s supposed to be an honest discussion, so I make sure to touch on the things I feel didn’t go so well – not to dwell on them, but to acknowledge what could have been better and that I am or have been thinking about ways to improve for next year. Showing self-awareness and openness to identifying, accepting and working on your own failings is an underrated skill, in my opinion, and it’s generally stood me in good stead over the years

In return my manager highlighted some areas of feedback that I had glossed over in my own reading, chiefly around leadership skills and my capabilities as a leader. It’s odd; I’m a lead developer who can guide a team to a goal, but I never really see myself specifically as a leader. Cheerleader for the team members, maybe! Yet here I was being asked to think about my leadership style and if there were any leadership-oriented training I would like to do. I hadn’t considered it before the meeting, but maybe I do want to start thinking about what comes after the full-time technical roles.

Finally, I make sure round out each appraisal by asking the appraiser to tell me exactly where they see how I fit into the organisation and what it is they expect from me. Normally you’ll have a sense of this from throughout the discussion, and there’ll usually be a written version of this after the appraisal, but I find explicitly asking the question has some benefits:

  1. It lets you know immediately if you’ve been successful in getting your own message across about the year.
  2. Generally it will give you the more “unfiltered” version of your appraiser’s thoughts. We can’t always help it, but often there will be a difference in how people answer a question directly in conversation with someone, versus how we write it in a document which might be read by others.

You want to use your appraiser’s response to judge where you go from here. It should inform and set the tone for what you do in the year to come.

I won’t give you the response I got to this question, but I was definitely happy with it. It was positive, constructive, and gave me ideas for the coming twelve months. It told me that where I want to get to is well aligned with where the organisation would like me to go, while also suggesting steps to bridge into what comes after the shortterm plan.

And that’s great. Because it meant that the work I put in for this appraisal – and the previous appraisals too – meant that I’ve been able to carve out a space where I can be fulfilled in the sense of controlling my own career progression and what I want to do, while also keeping myself in tune with what the organisation wants and needs from me.

So I implore you: don’t write off the annual appraisal process. Engage with it, learn from it, and use it to your advantage as another tool you can use to build your career.

Categories
General/Life Work

Microsoft Certified: Security, Compliance, and Identity Fundamentals

Microsoft Certified: Security, Compliance, and Identity Fundamentals award badge

This evening I completed (and passed) the Microsoft SC-900 exam, earning my fourth certification this year – Microsoft Certified: Security, Compliance, and Identity Fundamentals.

This certification was interesting in a few different ways – first, it was kind of done “spur of the moment”; I’d passed my other exams and wanted to keep the momentum going, so I booked it without much forethought. Secondly, I’ve done loads of Secure Software Development Lifecycle training and documentation over the last few years, so I feel I might have had a leg-up on at least some of the fundamentals of this topic (pardon the pun). Finally, I genuinely found some of the tools referenced in the training to be quite interesting in and of themselves – something I hadn’t appreciated before diving in.

As per usual, I used my regular mix of Microsoft Learn’s free online resources, supplemented by access to Percipio resources through my work, and this great “cram” video by John Saville.

I’m planning to have a bit of a break before I’m back on the exam trail; I next have some virtual classroom training in September and October, followed by Associate-level exams in October and November, which will be my last for the year.

Categories
General/Life Work

Microsoft Certified: Power Platform Fundamentals

This afternoon I passed the Microsoft PL-900 exam, earning my second certification this year – Microsoft Certified: Power Platform Fundamentals.

Let me be upfront by saying: I really did not enjoy this certification. For whatever reason, I just could not connect with the subject matter, and the last few weeks have felt like an uphill struggle the whole way through. Even when I tried getting hands-on with the various pieces of the Power Platform, a lot of it was just plain unenjoyable. Power Automate and Power Virtual Agents seem interesting enough, but Power BI and Power Apps are areas I’d be happy to not have to be around again.

Maybe it was because I didn’t know much about Power Platform before starting (other than a nugget of Power BI exposure in my Azure Data Fundamentals certification), but I really did not expect so much of the course and exam to be taken up by Microsoft Dynamics. At times it felt like a big disadvantage to not have prior knowledge and experience of Dymanics and Dataverse.

Still, sometimes you just have to power through (pardon the pun). To pass the exam I used Microsoft Learn’s free online resources, and both the Whizlabs video course and practice tests. I’m pretty sure I wouldn’t have passed if I hadn’t made such heavy use of those practice tests. In the end, they were the only thing it felt was making the topic “stick”.

With PL-900 out of the way, I just have one more exam to do from my Summer of Certifications list. AI-900 is up next, and it’s probably the certifiation I’m most looking forward to.

Categories
General/Life Work

Microsoft Certified: Azure Data Fundamentals

This evening I completed (and passed) the Microsoft DP-900 exam, which makes – Microsoft Certified: Microsoft Azure Data Fundamentals the first certification I can cross off my Summer of Certifications list.

The exam itself was fairly straightforward. It felt like the natural follow-on to the general Microsoft Azure Fundamentals (AZ-900) certification I passed last year, and follows the same multiple-choice/select-the-right-phrase format as AZ-900. For the most part it meant knowing which Azure data service should be used in a given scenario, or what feature in a solution fulfils the need; for the most part it’s usually straightforward to spot, but occaisionally there’s a subtlty in the question which means the seemingly-obvious answer is not the correct one. But may that was just me.

To prepare for the exam I used mix of Microsoft Learn’s free online resources, supplemented by access to Percipio resources through my work, and WhizLabs practice tests. As someone who has been neck-deep in databases for years, I feel I had a bit of a leg-up on some of the more general topics – which meant it was really just the finer points of the specific Azure data solutions I had to learn.

Part of the exam syllabus covered Business Intelligence reporting using Power BI, which might be a good starting point for the next exam in my calendar: Power Platform Fundamentals (PL-900)!

Categories
General/Life Work

Summer of Certifications

Since last year I’ve made a point that whenever I feel a bit “neurofunky”, I try to do something to invest in myself. The last few days have been a thing so I’ve planned the pathways to my next certification(s), and set myself up with some of the resources I’ll need to get there.

Right now, the plan is to complete the following exams over the next 6 weeks:

  • Azure Data Fundamentals (DP-900)
  • Power Platform Fundamentals (PL-900)
  • Azure AI Fundamentals (AI-900)

At least 2 of those topics are pretty much brand new to me, so it’s going to be an interesting time…

I’ve already booked the exams, to give myself a set timeframe and deadline for each. My employer offers vouchers towards taking these exams, so it doesn’t cost me anything over and above the time and effort investments. Even if the exams hadn’t been free, then I’d have probably booked at least one of these (or maybe more, just spread out over months rather than weeks)

So we’ll see how it goes. I’m excited to learn some new things, but I am conscious I’m going to be under a bit of stress due to the timing.

Categories
Work

Promotion Panel Post-Mortem

So it’s done. I had my promotion panel interview yesterday. It went great, apart from one little tiny detail – I went over time. Pretty much the one hard-and-fast rule you’re given, and I broke it. Granted, it was really close – I was partway through my final slide – but it leaves a bitter taste to have come so close to getting through the part I was most worried about.

I know why I ran over. In one of my more content-heavy slides I stumbled a bit with some last minute suggested additions, adding a little too much detail off-the-cuff as I hadn’t practiced these points as much as the rest. Those few seconds made all of the difference, and while I tried to mask the dissappointment of being stopped as quickly as I could before going into the Q&A, I’m sure there would have been a split-second where my body language or facial expression gave it away, if any of the panel were looking at my camera feed and not the slide deck.

The Q&A part was fine. It was a little bit of a blur due to trying to recover, but I had the overall impression it was easier than I expected, and shorter. I received one question relating to my last slide which basically let me finish off what I would have said, and a couple of questions around Agile working practices and specifically on leading Agile teams, which required more longform answers… but overall I came out of the Q&A feeling much more confident again.

So that was it. If I had met the 15 minute criteria I’d be feeling very sure that I’d been successful. As it is, I just have to wait until I get the feedback and ultimate decision to find out how much that worked against me. That will be some time in late March/early April. I’m hopeful that everything else was above and beyond what they expected me to deliver, but that’s not going to make the wait any easier!

Categories
Work

Talking to Myself

I have a love-hate relationship with presenting. I feel I’m fair-to-decent at delivering an ad-libbed presentation backed up by a loosely structured slide deck. I can project a decent amount of confidence even though I’m nervous and hate being the centre of attention, and can talk at length if I can control the timing of the presentation.

Unfortunately, this is one of those times where the timing is out of my hands and the format is fairly set. As I mentioned, I have a strict 15 minute limit, and there’s also a template I need to start from – although there is creative freedom allowed within the parameters of the template. Keeping to the time limit remains my biggest hurdle. I have a lot I need to cover, and nerves tend to make me throw in little extra bits of information as I’m talking. Because I know this I have spent a lot of time practicing my delivery since my first disasterous attempt.

As well as having multiple review + feedback sessions with colleagues, I’ve basically spent every spare minute repeating the script over and over – both in my head and out loud. I’m still struggling to hit the 15 minute mark, but I’m really, really, close. I’ve come in under time in a few practice runs so it seems to depend on how much detail I give to just one or two areas of the slide deck. My thinking is that if I can basically memorise a version which comes in under time, and stick to only that in the real thing, then I should be OK.

As far as the slides go, these are now set. I’ve had some great feedback on the visuals, which is a nice boost. The deck needs to be sent off to the panel by the end of today, so there’s no more time to make any substantive changes – probably for the best! I won’t be able to post the full deck, but I will leave you with a small extract from the “about me” slide:

a screenshot from my presentation, showing white, bullet-pointed text, on a red gradient background. Point one reads 'Brain haemorrhage + stroke survivor', point two readds 'Interested in the intersections of privacy, ethics, and technology', point three reads 'Unrepentant Warhammer nerd'.
A snippet from my draft presentation
Categories
Work

8 Minutes

I had my first practice run of my promotion presentation with a work colleague today, and it was nothing short of a disaster.

I arrived to the meeting already flustered. The current sprint is hard going, things have been going wrong, and I had been fire-fighting all morning. I also hadn’t had any opportunity to practice my slides on my own. I had a rough idea of what I wanted to say, but no idea of the timings or anything.

Several times I just lost my train of thought, had to stop, then restart the presentation. When I did finally manage to get off of the first slide, I’d talked for over half of my allotted 15 minutes. In the end I felt like I was wasting my colleague’s time, so I apologised for being so ill prepared and ended the session early so as to not waste any more. I was embarrassed, annoyed at myself, and even more flustered than when I started. Thankfully my colleague offered to “reschedule” our session to a later date, when hopefully I’ll be in a better mindset.

Must do better.