Category: Data Analytics and AI

Subscribe for updates

Get new posts directly in your inbox

Getting the pipe shortcut to work in Positron

For the life of me, I couldn't get Ctrl+Shift+M to work for inserting pipes (|>) when editing a Quarto document in Positron visual mode. After countless hours fiddling with keybindings.json, I developed a functional, but obtuse workaround for Windows. It's not pretty, but it works. This post outlines the approach in case it helps others facing the same problem.

X Reasons for policy professionals to get into programming in 202X

In 2019 I wrote a post with seven reasons policy professionals should learn to code. Now that AI can write reasonable code, I’ve had a number of people ask me if it’s still worth learning to program. Based on the evidence I’ve seen, AI appears to be a an amplifier, rather than a substitute for human intelligence in the policy space: meaning the people that get the most out of AI are likely to be those that know how to instruct AI to tackle a problem and tell good output from bad. So my answer is yes, learning to code still makes sense. Not necessarily so you can write the code yourself, but to expand the quantity, scope and quality of what you're capable of.

O*NET ratings, job descriptions and classification codes as measures of occupational similarity

The last post identified potential transition pathways for truck drivers based on how closely other occupations matched them on skills, abilities and knowledge. This post follows the same basic approach across a wider range of occupations and asks whether two proxies could stand in for the ratings where no O*NET exists: a small language model comparing the meaning of job descriptions and the distance between two jobs' US Standard Occupational Classification (SOC) codes.

Identifying skills-based occupational transition pathways with the O*NET

This post estimates potential labor market transition pathways based on the similarity of skills, abilities and knowledge required by occupations. The approach broadly follows Bratanova et al. (2026). Like their research, the considered transition pathways are for workers currently employed as truck drivers. Unlike their approach, we've used a more recent version of the O*NET database and a different SOC-to-ANZSCO crosswalk. Although the point wasn't to precisely replicate their results, our approach largely did, with differences in similarity scores likely stemming from our different mapping of the SOC to the ANZSCO rather than from the method itself.

The boring part first: Building a crosswalk from O*NET-SOC to ANZSCO

There's no official crosswalk between the ONET's occupational taxonomy and ANZSCO, which is awkward, because Australian researchers use ONET data all the time. This post builds one, explains why you should be suspicious of relying on it and then suggests a better methodology is probably what was applied by the European Commission.

Institutions Are a Package Deal: What a Correlation Can’t Tell You About the Rule of Law

This post asks how institutions should be conceptualized and analyzed: can the rule of law (and other institutions) sensibly be examined one at a time, or do they need to be treated as parts of an interdependent system?

Level With Me: Can the WGI Predict the WJP’s Rule of Law Scores?

The first post established that the WGI and WJP rule of law measures agree on how they rank countries. This follow-up tests the stricter question of whether the WGI can predict the WJP’s levels, rather than just the relative ranking / relative position of countries. It can: forecasting errors appear to be minimal and don’t vary significantly over time.

Close Enough? Using the WGI as a Proxy for the WJP Rule of Law Index

This post examines whether the Worldwide Governance Indicators' (WGI) rule of law measure provides a reasonable proxy for the World Justice Project's (WJP) Rule of Law Index, such as when analysis might benefit from the WGI's availability for more countries over a longer period. Results suggest the two measures broadly agree with one another when making cross-country comparisons, but care is warranted for country-level estimates where it's likely to be more difficult to differentiate measurement noise from genuine changes in the quality of institutions.

Running local LLMs on your NPU from R with Foundry Local and ellmer

This post summarizes how I was able to leverage my Surface Pro 11's Neural Processing Unit (NPU) to chat with Large Language Models (LLMs) from R (for some reason).

Using science to find the best decaf

To test whether my wife and I could tell the difference between decaf and caffeinated coffee, I conducted a highly scientific double-blind taste test (subject to funding constraints).