GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Blog
  • Topics
  • GitHub

This view

  • Original page
  • New address

GeezerVison is showing friendlyuser.github.io — David Li — Software Developer | FriendlyUser

00Vancouver, BC

Hi, I'm David.

I build software, blog about it, and deploy tools for investing.

Software developer with eight years across startups, insurance, construction data and the public service. I like data pipelines, AI-assisted tools and interfaces that make complicated work feel simple.

> initializing environment...

> loading core_skills.sh

[OK] Advanced LLM usage & prompting

[OK] Data pipelines, OCR & automation

[OK] Front-end architecture

[OK] Robust back-end systems

> ready

See the workRead the blog (561 posts)

Scroll

01Foundations2018 – 2021

Blueprints first.

Software Developer · Stealth Startup

Computer engineering at UVic, then a fintech startup building mortgage questionnaires, integrations and mobile apps.

  • B.Eng. Computer Engineering, University of Victoria (class of 2019), with industry co-op terms.
  • Built a branching online mortgage questionnaire in React and Next.js.
  • Integrated third-party REST APIs, extended a Laravel API and wrote Postgres migrations.
  • Shipped React Native updates and tested Node.js services with Postman and Jest.
  • React
  • Next.js
  • React Native
  • Node.js
  • Laravel
  • PostgreSQL
  • MongoDB
  • AWS
  • Jest

2018

02Marketplace2021 – 2023

Search that moves.

Software Engineer · carSHAiR · Remote, BC

Led the web team of a peer-to-peer car sharing marketplace, from search and maps to booking flows.

  • Rebuilt map-based search in Next.js and TypeScript with URL state and modern data fetching.
  • Modelled booking and trip-extension flows as XState state machines.
  • Built REST endpoints in TypeScript and shipped React Native features for iOS and Android.
  • Reviewed pull requests and coordinated releases as web team lead.
  • TypeScript
  • React
  • Next.js
  • XState
  • React Native
  • Node.js
  • Sass
  • Elasticsearch
  • Rollbar

2021

03Construction data2023

Turning permits into data.

Software Engineer · Yellowsheet Construction Data · Remote, BC

Modernizing a construction-intelligence platform and automating how permits and tenders become searchable listings.

  • Built a Python and FastAPI ingestion service for 20+ BC municipalities: pdfplumber parsers, OCRmyPDF on Cloud Run, and Gemini for the hardest reports.
  • Automated tender and permit collection from 20+ public sources on scheduled GitHub Actions, with AI project-type classification and alerts.
  • Modernized a legacy PHP codebase with Docker, centralized logging, Playwright tests and Stripe billing.
  • Added SSO and data sync with a companion permits app, plus Typst-generated building-permit reports.
  • Python
  • FastAPI
  • PHP
  • MySQL
  • Gemini
  • OCRmyPDF
  • pdfplumber
  • GitHub Actions
  • Stripe
  • Playwright

2023

04Claims AI2024

Documents, unfolded.

Software Engineer · Royal Claims · Vancouver, BC

Built AI document analysis and internal tools for insurance claims.

  • Integrated OpenAI to parse and analyze claim documents and pre-fill forms from email.
  • Built claim forms, report generation with python-docx, and SOAP integrations with Zeep.
  • Ran Django migrations and SQL Server analysis; deployed Azure Functions and Blob Storage.
  • Python
  • Django
  • OpenAI
  • Azure
  • SQL Server
  • Tailwind CSS

2024

05Public service2025 – present

Software for the public service.

Software Developer (IT-02) · Canada School of Public Service · Vancouver, BC

Building and modernizing internal tools, from Vue and Laravel apps to AI search and chat.

  • Migrated Laravel + Vue 2 applications to Vue 3 and Element Plus, and upgraded a Quasar app to v2 with French search.
  • Worked on a LangChain chatbot on Azure OpenAI and an Azure AI Search index of federal regulations.
  • Ported a scraper to a C#/.NET API published through Azure API Management.
  • Maintain Power Apps tools and keep dependencies and security fixes current with GitHub Copilot.
  • Vue 3
  • Laravel
  • PHP
  • C#/.NET
  • Azure
  • LangChain
  • Power Apps
  • MySQL

2025

06Writing & tools561 posts

Hundreds of posts, one sky.

Each star is a post on this blog, grouped by topic. Hover or focus a topic to light up its constellation.

  • Managing Rust Projects and Dependencies with CargoRust's Concurrency and Parallelism Libraries A Guide to Writing Concurrent and Parallel CodeLeveraging Rust's Trait System for Writing Generic CodeAll 77 Rust posts →
  • Using Gin Framework in GolangFile Handling and Error Handling in Go.History of golang.All 58 Go posts →
  • Replicating Laravel's Crypt::decryptString Logic in PythonHow to build a contact book cli application in PythonBuilding Fast and Efficient Web APIs with FastAPI in PythonAll 78 Python posts →
  • Maintaining a Legacy PHP CodebaseRebuilding FriendlyUser: A Three.js Homepage and a Starlight BlogThe Benefits of Using WebAssembly for Web DevelopmentAll 79 JavaScript & web posts →
  • Building Afterlight, a 2D-HD JRPG, with Claude CodeRevolutionizing Web Performance: Using Gemini 3.1-Pro-Preview for AI-Generated SVGsAI Training Platforms Compared: Outlier vs. Appen vs. Aligner - Why the Newcomer Wins in 2025All 24 AI & data posts →
  • Docker and Local Dev EnvironmentsBeyond the Whale: The Architecture, Trade-Offs, and Implementation of Post-Docker Container FrameworksAdvanced Git - Cherry-picking, Merge Strategies, and Release ManagementAll 26 DevOps & tooling posts →
  • Android Room Persistence Library A Comprehensive GuideAndroid ButterKnife View Binding Library A Comprehensive OverviewHow to Publish a Package in SwiftAll 74 Mobile & Android posts →
  • An Introduction to ASP.NET A Powerful Web Development FrameworkUnderstanding the .NET Core Framework A Comprehensive OverviewReview of Polygot NotebooksAll 21 .NET & C# posts →
  • C++ Type Traits and Metaprogramming A Deep DiveC++ Move Semantics and Rvalue References A Deep DiveC++ Object-Oriented Design Patterns A Practical GuideAll 30 C++ & systems posts →
  • Advanced Topics in LaTeXCollaborating on Documents with LaTeXGetting started with tikzAll 11 LaTeX posts →
  • How I implemented a stock screener in python Part IIHow I implemented a stock screener in python part IHow to Download Investor Presentation Audio Files from Conference Hosting SoftwareAll 28 Investing posts →
  • Using WebAssembly for Serverless ComputingLeveraging WebAssembly for Game DevelopmentA Comprehensive Guide to Newtonsoft.JsonAll 55 Everything else posts →

Latest posts

  1. Nov 7, 2026Docker and Local Dev Environments
  2. Nov 7, 2026Maintaining a Legacy PHP Codebase
  3. Nov 7, 2026Building Afterlight, a 2D-HD JRPG, with Claude Code
  4. Nov 6, 2026Rebuilding FriendlyUser: A Three.js Homepage and a Starlight Blog
  5. Jun 30, 2026Beyond the Whale: The Architecture, Trade-Offs, and Implementation of Post-Docker Container Frameworks
  6. Feb 22, 2026Revolutionizing Web Performance: Using Gemini 3.1-Pro-Preview for AI-Generated SVGs

All 561 posts →

Investing tools dli-invest

  • halts_and_news trading halts & news to Discord
  • fdrtt live transcription of YouTube livestreams
  • conscrap Yahoo Finance & CEO.ca conversation scraper (C#)
  • price-prediction Prophet forecasts on GitHub Pages
  • cse_file_downloader SEDAR filings downloader
  • earnings-ipos-stock-calendar earnings & IPO calendars
  • stock_parser TSX ticker parser
  • reccomendation-engine stock recommendation engine
  • finreddit finance subreddit tracker (Go)
  • stonk_updates periodic ticker updates to Discord
  • halts_and_news trading halts & news to Discord
  • fdrtt live transcription of YouTube livestreams
  • conscrap Yahoo Finance & CEO.ca conversation scraper (C#)
  • price-prediction Prophet forecasts on GitHub Pages
  • cse_file_downloader SEDAR filings downloader
  • earnings-ipos-stock-calendar earnings & IPO calendars
  • stock_parser TSX ticker parser
  • reccomendation-engine stock recommendation engine
  • finreddit finance subreddit tracker (Go)
  • stonk_updates periodic ticker updates to Discord

Projects

  • LaTeX DiagramsDiagrams generated for university work and collected from around the internet.LaTeX · Nextra
  • vuepress-theme-coolA starter theme for VuePress, originally named vuepress-theme-school.VuePress · Vue
  • Flipp flyer parserScrapes grocery flyers to track deals.Python · Scraping
  • Financial news NLPNatural-language processing over financial news headlines.spaCy · NLP

07Contact

Let's build something.

Open to interesting problems in data, AI tooling and web development.

Skills

  • Python
  • TypeScript
  • JavaScript
  • PHP
  • Laravel
  • Vue
  • React
  • Node.js
  • Go
  • Rust
  • Java
  • Flutter
  • Android
  • Docker
  • AWS
  • Microsoft
  • Google
  • Linux
  • Git
  • GitHub
  • Stripe
  • OpenAI
  • Claude
  • Tailwind CSS
  • Sass
  • HTML5
  • CSS
  • Markdown
Languages
Python · PHP · TypeScript · JavaScript · C# · SQL · Go · Rust · Java · Kotlin · Dart · C++ · TeX
Frontend
Vue 3 · Quasar · React · Next.js · React Native · Flutter · Astro · Tailwind CSS · Sass
Backend
Laravel · FastAPI · Django · Flask · ASP.NET · .NET Web API · Node.js · Spring Boot · REST & OpenAPI · SOAP
AI & data
Gemini · OpenAI / Azure OpenAI · LangChain · Azure AI Search · pandas · spaCy · NLTK · pdfplumber · OCRmyPDF · Streamlit
Automation
Browser automation · BeautifulSoup · GitHub Actions · Scheduled pipelines · Discord alerts
Data stores
MySQL / MariaDB · SQL Server · PostgreSQL · Cosmos DB · MongoDB · Elasticsearch
Cloud & DevOps
Azure · Google Cloud Run · AWS · Docker · IIS · Linux · Railway
Testing
pytest · Playwright · PHPUnit · Jest
Low-code
Power Apps · Microsoft Lists · Dataverse
AI-assisted dev
Claude Code · GitHub Copilot · Prompt engineering
  • GitHub FriendlyUser
  • LinkedIn David Li
  • Investing tools dli-invest
  • Blog 561 posts
  • RSS feed
  • Store Redbubble
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.