Shing Lyu

Disclaimer: This content reflects my personal opinions, not those of any organizations I am or have been affiliated with. Code samples are provided for illustration purposes only, use with caution and test thoroughly before deployment.

Serverless Rust on Azure: Deploying a Rust Azure Function

This is the first post in my new series on serverless Rust on Azure. We’ll start simple by following the official Azure tutorial, with my notes on the caveats and tweaks I’ve made along the way. Having worked with AWS for the past 6 years, I’ll also highlight key differences from AWS Lambda.

You can find the complete code on GitHub: https://github.com/shinglyu/serverless-rust-on-azure.

(continue reading...)


Why the % Sign Breaks Your Website (And How to Fix It)

A frontend developer friend recently reached out to me for help. Her React app was mysteriously breaking, and she couldn’t figure out why. After some investigation, we discovered the culprit: a single % character in a URL was causing the entire application to crash.

When you see a URL (Uniform Resource Locator), it often contains characters like letters, numbers, and some special symbols. However, not all characters are allowed directly inside a URL because some have special meanings, and some fall outside the allowed range of characters. This is where percent-encoding comes into play.

(continue reading...)


How I Wrote a Book with AI

After spending over a year each on my previous two books, I decided to experiment with AI assistance for my latest project: Learning to Learn AWS. The goal wasn’t to generate another AI-filled book flooding Amazon, but to maintain intellectual ownership while dramatically reducing the time investment. Here’s how I completed a quality technical book in just 5 months, working only 1-2 hours per week.

(continue reading...)


From DevTools Detective to Automation Hero: My Quest for Dutch Subtitles

I’ve been working on improving my Dutch by watching NOS Journaal in Makkelijke Taal (NOS News in Simple Language). It’s perfect for language learners - the vocabulary is accessible, the pronunciation is clear, and the topics are current and relevant.

But here’s the thing: while listening helps with comprehension, I wanted to read the subtitles after watching to catch vocabulary I missed during the video. The built-in video player has subtitles, but constantly pausing to point my phone’s Google Translate camera at the screen proved incredibly disruptive. I’d get tired of watching within minutes.

I already use Readlang extensively for my Dutch studies. It’s a language learning tool where you can import articles, then click on any word or phrase to get AI-powered translations with contextual explanations. The UX is phenomenally smooth, removing most of the friction from reading foreign language content. This would be a great tool to study the subtitles right after I watched the video. However, there is a problem.

(continue reading...)


Vibe coding a PII Anonymizer CLI: how gen AI makes me build tools faster than ever

I use AI chatbots and agents extensively in my daily workflow. Sometimes I need to provide them with documents converted to markdown, but I don’t want to give away too much personal information. Markitdown is an excellent tool for converting PDFs and Word documents to markdown, but I lacked a CLI tool that could redact PII from the output. There are existing tools out there, and cloud services too, but I wanted something completely offline that wouldn’t raise any IT security team’s eyebrows. Then I stumbled upon Microsoft’s Presidio library, which can anonymize Personally Identifiable Information (PII) easily. So I decided to flex my vibe coding muscles and code a CLI myself.

(continue reading...)