NAC Virtual Accompanist
A mobile app that plays full organ accompaniments for hymns, so congregations without an organist can still sing.
Somerset West, South Africa
Software developer
I build software that has to keep working long after the excitement wears off: line-of-business systems in F# and .NET by day, and apps for the church and running-club communities I belong to the rest of the time.
type Developer = { Name : string Based : string Day : string Evenings : string list Languages : string list } let terence = { Name = "Terence Hinrichsen" Based = "Somerset West, South Africa" Day = "line-of-business systems that must keep working" Evenings = [ "church hymn tooling"; "running-club software" ] Languages = [ "F#"; "C#"; "Dart"; "TypeScript" ] } terence |> shipIt // since 2017I build software that has to keep working long after the excitement wears off. F# and .NET by day; Flutter and Astro for the communities I belong to the rest of the time.
A mobile app that plays full organ accompaniments for hymns, so congregations without an organist can still sing.
An Android app for musicians: a real-time chromatic tuner and a pitch pipe in one, built around a hand-written YIN pitch detector.
The New Apostolic Church Music Information & Resource System: hymn scheduling, service programmes and music resources for congregations across Southern Africa.
Stock control and field jobs for HVAC and refrigeration teams: parts on every van, jobs assigned to a technician, and a signed job report from the client's site, even with no signal.
{ Languages : "F#" | "C#" | "TypeScript" | "Dart" | "SQL" | "Python" Frameworks: ".NET" | "SAFE Stack" | "Fable" | "Flutter" | "Astro" | "Next.js" | "React" Data : "SQL Server" | "PostgreSQL" | "Supabase" | "Sage Evolution" Tooling : "Git" | "GitHub Actions" | "Vercel" | "cPanel" | "Android"}Why I finally set up a personal site, what lives here, and what it is built with.