Programming Leftovers
-
A beginner's guide to Chrome tracing | Read the Tea Leaves
I’ve been doing web performance for a while, so I’ve spent a lot of time in the Performance tab of the Chrome DevTools. But sometimes when you’re debugging a tricky perf problem, you have to go deeper. That’s where Chrome tracing comes in.
Chrome tracing (aka Chromium tracing) lets you record a performance trace that captures low-level details of what the browser is doing. It’s mostly used by Chromium engineers themselves, but it can also be helpful for web developers when a DevTools trace is not enough.
-
The Inner Dev Loop
How fast does it take from a code change to an observable result in development? The inner loop is loosely defined as a local build and deploy. Optimizing this loop is one of the keys to developer productivity. But it’s one of the things that developers rarely think of. A good inner dev loop is both fast and correct. It’s easy in theory to get “correct”: work in an environment as close to production as possible and run a production build and deploy loop on every change. That’s usually too slow. “Correct” is so important because it prevents reproducibility bugs that are notoriously hard to track down and fix. “It works on my machine.”. You can get “fast” by syncing files and doing incremental compilation tricks. Webpack dev server is probably the best example of this. You can get even faster if you hook the entire loop up to a file-watching trigger — automatically debouncing and triggering background compilation and deploys. However, an optimized runtime that’s completely different than a production environment loses much of its benefit. Most of these “fast” tools are specific to a framework or language, which limits their usefulness.
-
Kubernetes Interfaces
Any good platform project needs to be extensible. Kubernetes accomplishes this through APIs.
A brief overview of the major interfaces in Kubernetes for extensibility.
-
How to Build GraphQL APIs Using Go
-
Concurrency in Go
By default, computer programs are executed sequentially, usually line-by-line. Although this is very efficient, you may need to run multiple processes simultaneously or control the flow and runtime of your programs for numerous reasons. Luckily, Go gives us a way to run various processes concurrently or in parallel. Concurrency comes in handy for speed, process synchronization, and resource utilization.
-
Supply Chain Management Strategies with R and Shiny - R programming
During the pandemic, the supply chain and its management strategy burst into the spotlight. Supply chain management (SCM) became a household topic as its disruptions began to directly impact people’s lives and the global economy.
-
The Reciprocal Value of Access to Maintainers
Last May I left Google to build a more sustainable model for Open Source maintenance. After a summer break, I resumed my maintenance work on the Go project in September, and I started offering my services to companies that rely on Go.
My vision is that of Open Source maintenance as a real profession, where maintainers offer ongoing contracts to the companies that critically rely on their projects. Maintainers get paid like the senior engineers they are, and companies get reassurances on the reliability of their dependencies, mitigating business risk.
-
Top 5 Shiny UI Add-On Packages
There are a growing number of Shiny users across the world, and with many users comes an increasing number of open-source “add-on” packages that extend the functionality of Shiny, both in terms of the front end and the back end of an app.
-
A Linux Live USB as a statistical programming dev environment
This blog post is divided in two parts: in the first part I’ll show you how to create a Linux Live USB with persistent storage that can be used as development environment, and in the second part I’ll show you the easiest way to set up RStudio and R in Ubuntu.
-
MySQL: Filter out specific tables from an existing mysqldump file with awk
-
The Prometheus timestamp() function can be used on expressions, sort of
Suppose, not entirely hypothetically, that you have a Prometheus metric that has been slowly drifting upward for some time. You would like to find out the last time that it has been below some value. In an ideal world this would be a simple Prometheus operation, because the raw data is there in the TSDB. In this actual world, Prometheus makes it hard to work with when metrics actually happened. However, you can do it in a relatively straightforward way because of something I had forgotten until I started to write this entry.