apis

Where I write about pulling data from (and pushing it to) web APIs and services.

2026

— flation, rebuilt (and now on the Mac)

2024

— (In|De)flation

2020

— Setlist Events in Go

2012

— API Upgrades

2011

— Western Users of SAS Software 2011

2009

— Encoding Data Points for Use With Google Charts API Calls
— Frustrations With Dashboarding in SAS 9.1.3

apple

Where I write about iPhones, iPads, Macs, and the apps that run on them.

2024

— Thoughts from an Apple Vision Pro demo

2015

— Simplenote to Vesper

2014

— $329 Retina iPad Mini

2013

— Setting the Price Early

2012

— The Non-Letterboxed Keyboard
— Clearing Out the Cruft
— My k'nex iPhone Stand

2011

— Tweetbot
— Free App Idea
— Returning a Well-Formatted Date-Time

2010

— The Vertical App Listing

2008

— SAS on an iPhone

apps

Where I write about the apps I make.

2026

— flation, rebuilt (and now on the Mac)
— vesica: string art without the string
— caledger: calendar + ledger-cli

2024

— Text Player
— (In|De)flation

2022

— A Simple Card Trick
— Text Permutations on iOS/macOS

concerts

Where I write about the shows I go to and how I keep track of them.

2026

— Site updates: chapters, maps, and menus

2020

— Setlist Events in Go

conference

Where I write about conferences I've attended, mostly SAS user groups.

2012

— SAS Global Forum 2013
— Western Users of SAS Software 2012
— My SAS Global Forum 2012 Timeline

2011

— Western Users of SAS Software 2011

2009

— SAS Global Forum 2009

2008

— SAS Global Forum 2008

2007

— Comp'd at the Palace
— Pacific Northwest SAS Users Group 2007

2006

— SAS User Group International 31

data-step

Where I write about the SAS DATA step: loops, arrays, lags, and other row-by-row tricks.

2012

— resolve Function
— Macros and the DATA Step
— Vending Machine Math

2011

— Dates in Datetime Fields
— Continue-Looping
— Label Carryover

2009

— SAS Variable Lists

2007

— What's the Point of This?
— Calculating Period-to-Period Changes in SAS

dataviz

Where I write about charts, dashboards, and other ways of showing data.

2026

— Site updates: chapters, maps, and menus
— flation, rebuilt (and now on the Mac)

2024

— (In|De)flation

2009

— Encoding Data Points for Use With Google Charts API Calls
— Frustrations With Dashboarding in SAS 9.1.3

2007

— SAShboards = Dashboards in SAS?

dates

Where I write about wrangling dates, times, and datetimes, mostly in SAS.

2014

— Last Week of Quarter

2013

— Convert to a [hhmmss-Type Integer to a] SAS Time - (SO)

2012

— Dates From Datetimes

2011

— Dates in Datetime Fields
— Returning a Well-Formatted Date-Time
— Month of Quarter Variable

2010

— prxparse(dates)

2009

— An mmddyyyy hhmmss Informat. Kinda.
— Random Dates
— Calculating Average Time (Duration)
— %d: A Handy Little Macro For Dynamic Dating
— Reading Non-Standard Datetime Values
— Reading ISO Dates and Datetimes

2008

— The Missing Format: QYY

2007

— Converting YYYYMMDD-Type Integer to SAS Date Values

documentation

Where I write about documenting code and data, and the conventions that make it easier.

2014

— Finding Conventions, Establishing Standards

2013

— Pretty Note Blocks

2009

— SAS Global Forum 2009

2007

— Let That Be a Lesson to 'Ya!

2006

— SAS User Group International 31

excel

Where I write about getting data into and out of Excel.

2017

— Shifty Metadata

2009

— SAS Global Forum 2009
— %expExcel

family

Where I write about things done with, or for, my family.

2024

— Text Player

2012

— Why I Look Forward to Collection Calls
— Simulating Child's Play
— My k'nex iPhone Stand

files

Where I write about working with files and folders: listing, reading, and finding them.

2014

— Current File Path

2011

— How Do I Read a File's Creation Date?

2009

— DirList macro
— Reading Overlapping Text Segments

formats

Where I write about SAS formats and informats, built-in and homemade.

2013

— Convert to a [hhmmss-Type Integer to a] SAS Time - (SO)

2011

— The vvalue Function--Like a Quick PUT Function

2009

— An mmddyyyy hhmmss Informat. Kinda.
— Reading ISO Dates and Datetimes

2008

— The Missing Format: QYY

2007

— Converting YYYYMMDD-Type Integer to SAS Date Values

fun

Where I write about things I did mostly for the fun of it.

2026

— vesica: string art without the string

2022

— A Simple Card Trick

2012

— Classical SAS
— Simulating Child's Play
— Vending Machine Math
— My k'nex iPhone Stand

games

Where I write about games, from board games to card tricks.

2022

— A Simple Card Trick

2012

— Simulating Child's Play

ios

Where I write about the iPhone and iPad: their apps, including mine, and how they work.

2026

— flation, rebuilt (and now on the Mac)
— vesica: string art without the string

2024

— Text Player
— (In|De)flation

2022

— A Simple Card Trick
— Text Permutations on iOS/macOS

2015

— Simplenote to Vesper

2012

— Too Complex to Edit
— The Non-Letterboxed Keyboard
— Clearing Out the Cruft

2011

— Tweetbot
— Free App Idea

2010

— The Vertical App Listing

2008

— SAS on an iPhone

jekyll

Where I write about Jekyll, the static site generator behind this site.

2024

— Some Jekyll Tools

2013

— A New Home

mac

Where I write about the Mac: its apps, including mine, and the command line underneath.

2026

— flation, rebuilt (and now on the Mac)
— vesica: string art without the string
— caledger: calendar + ledger-cli

2022

— A Simple Card Trick
— Text Permutations on iOS/macOS

2011

— Returning a Well-Formatted Date-Time

macros

Where I write about the SAS macro language: utility macros, macro variables, and their quirks.

2022

— Text Permutations on iOS/macOS

2014

— Finding Conventions, Establishing Standards
— getOption
— Benchmarking the sasload Statement
— Rebuilding Wide Macros
— Setting %array Values Through %do_over

2013

— Pretty Note Blocks

2012

— SAS Global Forum 2013
— Blocks, Not Lines
— resolve Function
— Western Users of SAS Software 2012
— Self-Purging Macros?
— Getting Feedback on Macro Parameters
— Macros and the DATA Step
— API Upgrades

2009

— The Utility of Generic Macros
— DirList macro
— %d: A Handy Little Macro For Dynamic Dating
— SAS Global Forum 2009
— %expExcel

2008

— Introducing meandfreq
— The Ugly Truth About Call Execute

maps

Where I write about maps and working with geography: zip codes, states, and venues.

2026

— Site updates: chapters, maps, and menus

2007

— ZipsNear

metadata

Where I write about data about data: dictionary tables, system options, and column attributes.

2017

— Shifty Metadata

2014

— getOption
— Rebuilding Wide Macros

2009

— SAS Global Forum 2009

money

Where I write about money: prices, budgets, and inflation.

2026

— flation, rebuilt (and now on the Mac)

2024

— (In|De)flation

2014

— $329 Retina iPad Mini

2013

— transactions.pl: A Mint Parser
— Setting the Price Early

2012

— Why I Look Forward to Collection Calls
— A Small Portion of a Large Number…

music

Where I write about music, including the shows I go to and the tools I use to keep track of them.

2026

— Site updates: chapters, maps, and menus

2023

— New (To Me) Music - 2022

2020

— Setlist Events in Go

2012

— Classical SAS

2007

— iTunes XML Parser

ods

Where I write about SAS's Output Delivery System.

2008

— SAS Global Forum 2008

2007

— Pacific Northwest SAS Users Group 2007

opinion

Where I share my opinions, for whatever they're worth.

2014

— We Blew It

2012

— The Non-Letterboxed Keyboard
— The Paywall, the Backdoor, and Twitter
— A Small Portion of a Large Number…

2010

— The Vertical App Listing

2009

— Frustrations With Dashboarding in SAS 9.1.3

parsing

Where I write about reading messy text and files into something usable.

2013

— transactions.pl: A Mint Parser

2010

— prxparse(dates)

2009

— An mmddyyyy hhmmss Informat. Kinda.
— Reading Overlapping Text Segments
— Reading Non-Standard Datetime Values
— Scraping the SAS Training Pages

2007

— iTunes XML Parser

perl

Where I write about the Perl scripts I've written.

2014

— Finding Conventions, Establishing Standards

2013

— transactions.pl: A Mint Parser

quatch

A slightly more-focused precursor to this site. All (almost?) all about living with SAS. It had an awesome header banner:

2010

— prxparse(dates)

2009

— An mmddyyyy hhmmss Informat. Kinda.
— %d: A Handy Little Macro For Dynamic Dating
— Reading Overlapping Text Segments
— Frustrations With Dashboarding in SAS 9.1.3
— A Sudden Spike
— %expExcel

2007

— SAS, SVN, and Google Code
— iTunes XML Parser
— What was quatch?

regex

Where I write about regular expressions, in SAS (the PRX functions) and elsewhere.

2020

— A Function to Mask Strings

2010

— prxparse(dates)

2009

— An mmddyyyy hhmmss Informat. Kinda.
— DirList macro
— Scraping the SAS Training Pages

research

Where I collect the research I did and published in school.

2005

— Using the ACT to Predict College Graduation

2002

— Science, Technology, & Engineering Preview Summer 2002
— UW-Stout Journal of Student Research Volume 2
— UW-Stout Research Day
— UW-Stout Journal of Student Research Volume 1

2000

— The Relationship Between Job Satisfaction and Job Performance

review

Where I review products and apps I've used.

2024

— Thoughts from an Apple Vision Pro demo

2017

— Wallets

2013

— In the Future, I'll Only Buy Memorex Optical Media

2012

— Too Complex to Edit
— Clearing Out the Cruft

2011

— Tweetbot

sas

Where I write about my trials and tribulations working with SAS, which is primarily a data processing language.

2022

— Text Permutations on iOS/macOS

2017

— Shifty Metadata

2014

— Current File Path
— Finding Conventions, Establishing Standards
— getOption
— Benchmarking the sasload Statement
— Rebuilding Wide Macros
— Last Week of Quarter
— Setting %array Values Through %do_over

2013

— Convert to a [hhmmss-Type Integer to a] SAS Time - (SO)
— Pretty Note Blocks

2012

— SAS Global Forum 2013
— Blocks, Not Lines
— Dates From Datetimes
— Classical SAS
— resolve Function
— Western Users of SAS Software 2012
— Windows Environment Variables
— My SAS Global Forum 2012 Timeline
— Self-Purging Macros?
— Simulating Child's Play
— Getting Feedback on Macro Parameters
— Macros and the DATA Step
— API Upgrades
— Vending Machine Math
— The Positive Side of Keeping All Your Eggs in One Basket

2011

— Western Users of SAS Software 2011
— Dates in Datetime Fields
— Continue-Looping
— The vvalue Function--Like a Quick PUT Function
— Label Carryover
— Month of Quarter Variable
— How Do I Read a File's Creation Date?

2010

— prxparse(dates)

2009

— The Utility of Generic Macros
— An mmddyyyy hhmmss Informat. Kinda.
— DirList macro
— Random Dates
— Calculating Average Time (Duration)
— %d: A Handy Little Macro For Dynamic Dating
— Encoding Data Points for Use With Google Charts API Calls
— Reading Overlapping Text Segments
— Reading Non-Standard Datetime Values
— Reading ISO Dates and Datetimes
— Frustrations With Dashboarding in SAS 9.1.3
— SAS Global Forum 2009
— %expExcel
— SAS Variable Lists
— Scraping the SAS Training Pages

2008

— PROC PWDECODE
— SAS on an iPhone
— The Missing Format: QYY
— Introducing meandfreq
— Wiping USB Drives
— SAS Global Forum 2008
— Autosave My Day
— The Ugly Truth About Call Execute

2007

— Let That Be a Lesson to 'Ya!
— Converting YYYYMMDD-Type Integer to SAS Date Values
— SAS, SVN, and Google Code
— What's the Point of This?
— iTunes XML Parser
— SAShboards = Dashboards in SAS?
— Calculating Period-to-Period Changes in SAS
— Comp'd at the Palace
— What was quatch?
— Pacific Northwest SAS Users Group 2007
— ZipsNear

2006

— SAS User Group International 31

security

Where I write about passwords, wiping drives, masking data, and other ways of keeping things private.

2020

— A Function to Mask Strings

2013

— In the Future, I'll Only Buy Memorex Optical Media

2008

— PROC PWDECODE
— Wiping USB Drives

shell

Where I write about the command line: shell scripts, bash, and Terminal.

2024

— Some Jekyll Tools

2011

— Returning a Well-Formatted Date-Time

site

Where I write about this site: its history, its moves, and how it's built.

2026

— Site updates: chapters, maps, and menus

2024

— Some Jekyll Tools

2013

— A New Home

2012

— Too Complex to Edit

2009

— A Sudden Spike

2007

— What was quatch?

social

Where I write about social media and how we interact online.

2014

— We Blew It
— On Interruptions

2012

— The Paywall, the Backdoor, and Twitter

2011

— Tweetbot

sql

Where I write about SQL, from SQLite to cloud warehouses.

2020

— A Function to Mask Strings

2015

— Simplenote to Vesper

stats

Where I write about statistics, from research projects to simulations.

2014

— On Interruptions

2012

— Simulating Child's Play

2009

— Random Dates
— Calculating Average Time (Duration)

2008

— Introducing meandfreq

2007

— Calculating Period-to-Period Changes in SAS

2005

— Using the ACT to Predict College Graduation

2002

— Science, Technology, & Engineering Preview Summer 2002

surveys

Where I write about surveys and polls: designing them, collecting them, and analyzing the results.

2014

— On Interruptions

2012

— API Upgrades

2011

— Western Users of SAS Software 2011

2007

— What's the Point of This?

2002

— Science, Technology, & Engineering Preview Summer 2002
— UW-Stout Journal of Student Research Volume 2
— UW-Stout Research Day

tips

Where I share small tips and tricks, mostly for SAS.

2014

— Current File Path

2013

— Writing Fractions in html

2012

— Windows Environment Variables
— Getting Feedback on Macro Parameters
— The Positive Side of Keeping All Your Eggs in One Basket

2011

— Continue-Looping
— Returning a Well-Formatted Date-Time
— The vvalue Function--Like a Quick PUT Function
— Label Carryover

2009

— SAS Variable Lists

2008

— PROC PWDECODE
— Autosave My Day

tools

Where I write about tools and scripts I've made or used to get things done.

2026

— caledger: calendar + ledger-cli

2024

— Some Jekyll Tools

2020

— Setlist Events in Go

2015

— Simplenote to Vesper

2014

— Finding Conventions, Establishing Standards

2013

— transactions.pl: A Mint Parser

2008

— Wiping USB Drives

2007

— SAS, SVN, and Google Code

web

Where I write about building for the browser: HTML, JavaScript, and scraping pages.

2013

— Writing Fractions in html

2012

— SAS Global Forum 2013

2009

— Scraping the SAS Training Pages

windows

Where I write about working with Windows, usually from SAS.

2012

— Windows Environment Variables

2011

— How Do I Read a File's Creation Date?

2009

— DirList macro
— Reading Overlapping Text Segments

2008

— Wiping USB Drives
— Autosave My Day
tags - Richard Koopmann