In my last post on improving inputs in R Markdown/Shiny , I covered four improvements to quality of life in interactive reports and dashboards. In this blog post I have three more, all approaches I’ve used to add professionalism to self-service R Markdown files. In yet another plug for R Markdown: most of these techniques can be used in a single *.Rmd file, or can be included in many by putting…
Brent Ozar asks what makers us groan on reading in an SQL query, for this month’s T-SQL Tuesday. Nowadays I look after 3rd-party databases more than internally-developed ones, so I accept there’s a whole lot of ex-best practices, vendor preferences, and possibly shortcuts in queries I might come across - whether it’s a poorly-performing query, a blocker, or an error. (Although, when I developed…
Shiny - and R Markdown output to HTML - have a range of input controls available for data-driven interactive reports & dashboards: text, dropdowns, date, checkboxes, range sliders, and more. I’ve got a few posts on R Markdown and a whole repo with tips and tricks at https://github.com/thomasswilliams/r-markdown-snippets . Here’s why I keep plugging R Markdown and Shiny: it’s a free, open-source…
Recently I came across Sam Wilson’s Python heatmap map of Strava runs, and wanted to see if I could get a similar result using R Markdown. Check out the original for a great write-up of the ins and outs and mapping frequency of visits, pace and gradient at Sam’s GitHub repo https://github.com/moresamwilson/running-heatmap . Instead of using the Strava API (like I did in April for the 2026 chart…
In my work I support Linux servers, which means focusing on the command line; that starts with the SSH command. (I’ve previously blogged about personalising the Linux command line , and different SSH keys - this post continues this theme.) Parallel SSH (install with sudo apt install pssh ) is faster to run commands against multiple remote hosts from the command line, while using SSH under the…
Mermaid https://mermaid.ai/ is “Markdown inspired” diagrams as code. With the diagram defined as text, special/proprietary software isn’t needed to create or edit diagrams. The text defining the diagrams can be edited by anyone - so can be kept up-to-date. Diagrams can also be version controlled, like any other code. This matters because better diagrams improve documentation, and communication.…
Ten years ago, I started this blog. It’s my third or fourth blog - in 2010, I retired my personal blog https://thomasswilliams.blogspot.com as well as my second technical blog on abandoned site “TheRuntime”, now only on archive.org (side note: 2010 was a busy year, I started studying a Masters degree). In 2016 I started this blog with the aim to write at least one post a month. Ten years on, I’ve…
This is my entry for the 2026 #30DayChartChallenge https://bsky.app/profile/30daychartchall.bsky.social ; day 26 is all about trends. I wanted to understand: when do trends change? So, based on a hunch and using Strava data, I fired up RStudio and set to work (Claude and ChatGPT helped with the code, especially the Strava API stuff). The resulting R Markdown file and instructions are on GitHub,…
Linting helps catch potential issues in code before they cause problems, and helps keep coding style consistent, whether for yourself or as part of a team or project. Linting uncovers surprising issues: recently, I added lints which caught that I was passing the same parameter by name twice in a call - meaning one of the parameter values was silently ignored. Previously, using lintr for R, I…
I have different SSH keys for different purposes - one for GitHub, one for GitLab, Azure SSH, other servers etc. Keys for different accounts too - work or personal. Some Git hosting sites allow SSH keys for signing commits; a signing SSH key can be different than the authorisation SSH key. Reminder: an SSH key is basically you. If someone has access to an SSH private key, they can impersonate you,…