What's Good for the JR is Good for the SR
I’ve often found that it’s a good idea to share diagrams and documentation widely. I try my best to share whenever I create documentation. That said the team gets busy, and sometimes it feels like I’m adding noise to the team chat if I share out absolutely everything. This has led to me being more selective over time. I recently had a reminder that I should be sharing things more broadly.
Read MoreUsing PowerShell to Find Outdated Ubuntu Containers
With Ubuntu 20.04 LTS’s sunset on the horizon, my manager forwarded an email about the need to update all of our Docker images to version 22.04. He sent it out as an FYI, but I took a moment to context switch towards answering this question because I thought that I could figure this out quickly using a one-liner in PowerShell.
Read MoreStepping Back and Letting a JR Train a SR
At the end of 2024, my team hired a new SR developer. Soon after hiring the new SR, we started a new initiative to enhance our automated test coverage. My team in particular while having a good amount of coverage with unit tests, didn’t have key UI modules instrumented to use MockServer. We did have a pattern that the JR developer on my team developed with collaboration from the our Software Engineers in Test (SEIT). With all of this in mind, it seemed clear that we had two opportunities: 1) we can have the new SR on board into more of our UI components by instrumenting those modules for MockServer, and 2) we can have the JR engineer train the SR on a previous implementation to strengthen the skills of our JR engineer.
Read MoreTerraform Depends On Success
My team has been working on modernizing our data engineering and business intelligence processes. We have started to build Terraform modules for tracking the tables, stored procedures, scheduled queries etc that we deploy to BigQuery. Through iterating on these modules, our team forgot to capture the dependency information for the new entities that we were creating. Since we started with entities that already existed and mostly grafted on new entities we didn’t really track the dependencies. That meant that when we started deploying new modules with green field entities, we ended up having to double run our Terraform deployment to build out all of the entities that were missed in the first failing run.
Read MoreShop Time Part 6 - Accidental Wine
There are two guava trees on the property that my wife and I currently rent. Our first year living there we couldn’t handle how many guavas these two trees rained down on us. We were so unable to handle the mess that it made that I think the land lord noticed and asked us if we don’t like guavas. I liked them just fine, I just didn’t know how to handle over 50 pounds of guavas.
Read MoreTypeScript Code Smell Any instead of a type parameter
I was recently forking a TypeScript library at work. We had an existing library that does a lot of what we want that we want to refactor to use a new backend, but we want to leave the current implementation alone. I won’t completely unpack this, but we decided to create a fork and refactor.
Read MoreShop Time Part 5 - Breaking a Foot
One of the hurdles that I face with my woodworking hobby is that I have a rather small sedan and no roof-rack. That makes it a bit hard to transport wood for projects. When I built my farm table, I rented a van from U-Haul on a day when I gathered most of the materials. That works for when I have a large expensive project planned, but if I want material to stock up or just have on an ad hoc basis, I don’t want to have to schedule a rental vehicle.
Read MoreCreate Pull Request Script
A long while back I posted about my favorite git trick. I’ve continued to refine it since that post. I had two issues that I wanted to solve: I wanted to have a command that would open the repository in the browser without having to take any other action, and I wanted to be able to open the pull request form to the correct branch. The latter desire stemmed from a large monolith that could cause browser timeouts while switching target branches. With some experimentation, I found that I could open the pull request form with the target branch and it would just work. That eventually led me to the following one line power shell script:
-v | \
git remote ? { $_.contains("fetch") } | \
% { start-process "$($_.split()[1])/pullrequestcreate?sourceRef=$(git branch | \
? {$_.contains('*')} | \
% {$_.replace('*', '').trim()})&targetRef=release"}
- Get the remote URLs for the repository with the verbose switch. If you have more than one remote this would have to be changed to select the appropriate remote. I don’t commonly work with multihomed repositories so that’s not a problem for me.
- Use the where-object cmdlet to get the line that contains the fetch URL for the remote. This is the URL that git will use to get changes from the remote server. Since this is built with a single server in mind we’re just arbitrarily picking the fetch URL.
- Use the for-object cmdlet to execute a browser with the fetch URL interpolated into the URL for the pull request form in Azure DevOps.
- As part of the execution above, I use a piped command to get the current branch as the source reference.
I Hope You're Better
This has been rattling around in my head since last August. I just haven’t
found the time to sit down and write it. Last year my team had a summer intern
join us. We cycled him through some real world projects with various levels of
difficulties, and he had a chance to experience some headwinds. He admirably
rose to the challenge, and at the end of his time with us left very nice notes
for his two mentors and our manager.
The penultimate sentence of his note reads:
Read MoreI promise to be the same mentor you were for me when I get to that level in my career.
Bad Artifactory URL Causing build failers
At work we use a system called Artifactory. This system helps us have a unified repository for all of our build artifacts. That way we can story NPM packages, NuGet Packages, and Docker container images (as well as other build artifacts) in one convenient place. Unfortunately, in September of 2023 there was a malformed Artifactory URL that led to a local build error on my system. I couldn’t find anyone else experiencing this while I was trying to fix it, so I thought I’d write it up (yes, this sat on my to do list for quite a while).