Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by Kane Lim
DDD and Typelevel cookbook
Hello everyone. Scala's a programming language I've enjoyed learning on the side not only because I think it's stylish but because it's made me a better developer. Some of the gripes you encounter once you try to go intermediate or beyond, it's the Typelevel stack complexity. You just want to bootstrap a server and start writing some routes, and tbh sometimes the docs aren't that friendly.
I Thought Research Was About Finding Answers. I Was Wrong.
I've been working on a product where a surprisingly large part of the work comes down to answering questions. At the beginning, I thought the difficult part would be getting the data. Connect the different sources, make sure the numbers are available, figure out how to pull everything together, and then the rest should be relatively straightforward. That assumption didn't last very long. The more I worked on it, the more I noticed something that felt slightly backwards.
How to Implement Customer Identity Verification Jobs in a Node.js Service — 2026
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. This is a solid architecture because you treat document processing as a correctness problem rather than simply a queueing problem. I would strengthen it with workflow orchestration using durable state transitions, transactional outbox events, and idempotency keys enforced at the storage boundary.
Unsecured Low-Code Apps Expose Sensitive Data: Implementing Security Oversight to Mitigate Risks
Introduction: The Proliferation of Unsanctioned Low-Code/No-Code Applications Consider a recent incident: A customer intake form, developed within minutes using Lovable, was deployed directly to a live production database without authentication, security review, or access controls. This application remained undetected by the operations team until an external audit uncovered its public exposure.
How to Cut Regression Testing from Weeks to Hours Without Automating Everything
A healthcare platform I worked with needed two and a half weeks to complete a regression pass. Smoke testing alone took seven days. The obvious recommendation — the one everyone reaches for — was "automate everything." It would also have been the wrong place to start. Here's the trap. If you point automation at a bloated, outdated, UI-heavy suite, you don't get fast regression.
What Is a Canonical Tag (and the Mistakes That Deindex Pages)
A canonical tag tells search engines which URL is the master copy of a page. Used correctly it consolidates your ranking signals; used wrong it silently removes pages from search. Here's how it works and the mistakes that deindex pages. What a canonical tag does When the same content is reachable at more than one URL, the canonical tag names the one true version, so search engines consolidate signals onto it instead of splitting them.
Your Next.js Website Feels Slow? Check These 7 Things Before Blaming the Server
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. I strongly agree with the debugging order. One additional layer I would add is correlating browser telemetry with server traces instead of profiling each boundary independently.
Deploy What Changed: Nx affected + Cloud Run + Workload Identity Federation
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. The strongest idea here is treating deployment as a property of the Nx graph rather than a GitHub Actions concern. WIF also gives the pipeline a clean security boundary with ephemeral credentials and repository scoped federation. I would push this further with deployment manifests generated from the Nx project graph.
Meta Muse Spark 1.2 vs Grok 4.6: Autonomous Coding Benchmarks and Developer Workflows
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. The benchmark framing is useful, but autonomous coding agents need evaluation beyond SWE bench percentages. I would measure repository level task completion, tool call accuracy, patch validity, regression rate, test pass rate, recovery from failed commands, and tokens consumed per successful fix.
How long does it take for you to write a dev.to article?
It takes me 2 hours. I am not joking. Usually, I don't have it "planned" before I started to write. Sometimes I do when it comes to technical related topics, but anything usually comes down to me jotting it down on dev.to and refining it from there. When it comes to writing anything but technical, I tend to have an idea of what I want to write during the weekend, but nothing written down. I just hope I remember it in a couple days. If not, oh well I figured something out lol.
Cross compilation in Rust
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. The comparison between native Cargo linking, cross, and matrix based CI is practical. I would take the pipeline further by treating target triples as reproducible build contracts rather than simple compilation parameters.
How to Build a Secure Google OAuth 2.0 Login Using React & Node.js
Learn how to build a fast and safe "Log in with Google" system for your website! In this step-by-step tutorial, we use React, Node.js, Express, and MongoDB to create a complete Google OAuth 2.0 login feature from scratch. You will learn how to get your API keys from the Google Cloud Console, write the backend code, and connect it to your frontend screen.
Drawing Probability Trees by Hand Is Annoying, So I Built This
Probability trees look simple. You start with an event, add a few branches, write probabilities next to them, and calculate the probability of each path. Easy, right? That was what I thought too. Then I started thinking about what it would take to generate a probability tree automatically from something like: A bag contains 5 red balls and 3 blue balls. Two balls are drawn without replacement. Suddenly, it was no longer just a drawing problem.
TF-IDF: A matemática dos anos 70 que expõe a farsa do seu RAG de milhões
Nos últimos artigos da série, cobrimos desde a geometria da busca vetorial e os custos astronômicos de infraestrutura até a criação de Evals automatizados no CI/CD com a Tríade do RAG.
The Schema Was Valid. The Translation Was in Chinese
Constraining a model's output with a JSON schema feels like the moment the LLM stops being a text generator and becomes a function. You declare the fields, the server enforces the grammar, and what comes back parses every time. After months of regex-scraping JSON out of prose, it's a genuine relief. Then you ship it, and you find out what a schema actually promises. It promises a shape. Everything you care about is content, and content is on you.
Calling All Cloud Providers: Let’s Build a Sustainable Funding Model for Open Source
Calling All Cloud Providers: Let’s Build a Sustainable Funding Model for Open Source Open source powers an enormous part of the modern internet. Apache HTTP Server, Linux, Kubernetes, PostgreSQL, Python, NGINX, and thousands of other projects form the foundation of the applications and infrastructure that run on cloud platforms.
PostgreSQL INCLUDE indexes: what problem are they trying to solve?
Franck Pachot Developer Advocate at čöĚMicrosoft (PostgreSQL on Azure), developer-focused expertise in databases, like čÉś PostgreSQL, čÜÇ YugabyteDB, čŹâ MongoDB, čůż´ŞĆ Oracle (Certified Master), and čö AWS Data Hero Location Lausanne, Switzerland Education Master MIAGE, Universit├ę Paris-Sud, France Work Developer Advocate at Microsoft (PostgreSQL on Azure) Joined
I Built an AI Companion for Grief, Loneliness, and the Days No One Listens
Two years ago, I watched someone I love struggle through grief alone. Not because they didn't have people around them — they did. But because grief doesn't always know how to ask for help. And sometimes, the people closest to us don't know how to listen in the way we need. That stayed with me. I started thinking: what if there was something — not a replacement for human connection, but a bridge to it — that could be there at 3 AM when memories hit hardest?
How to design safe tool permissions for AI agents in production apps
The model is not the authority An AI agent can choose a tool, fill in arguments, and explain what it intends to do. None of those things make it authorized to perform the action. That distinction matters as soon as an agent can access customer records, create invoices, update a project, send a message, or call an external service. A helpful demo often gives the model a broad function such as runAction and trusts the model to decide when it is appropriate.
Five things that break when a user pastes ๐๐๐๐๐ช text into your app
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. This is exactly the kind of Unicode edge case that exposes weaknesses between application logic, database semantics, security, and accessibility. I especially like the separation between display text and a canonical comparison key.
What does an LLM actually believe about your website?
Every website grader on the internet is the same tool wearing a different logo. Someone writes a checklist — page speed, headings, mobile friendliness, keyword density — and the tool marks your site against it. The checklist is the product. The judgment was never the machine's; it was the author's, encoded in a rubric and shipped with a nice progress bar on top. I wanted the opposite, so I built 3drake.com. The question Not "is your meta description filled in".
HOW I BUILT MY FIRST MOBILE APP WITH REACT NATIVE AND EXPO
Building my first mobile application was both challenging and rewarding. As a tech intern learning mobile application development, I wanted to move beyond tutorials and create a project that could solve a real problem. That motivation led me to build DahveedCalc, a mobile application designed to help students calculate, track, and predict their academic performance.
Should You Still Learn to Code If AI Can Do It?
Every beginner is quietly asking the same thing in 2026: why learn to code when the AI model can write it? The fear is fair, the entry path really is narrower than it was. But the part of coding that got cheap was the typing, and the part that's left, knowing what to ask for and telling right from almost right, is worth more than it ever was.
Building a Responsive Flutter UI That Never Breaks
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. This is exactly the right mindset for Flutter responsiveness. The deeper issue is not responsive widgets, but treating constraints as part of the architecture rather than presentation details. I would take your approach further by making breakpoints semantic and component driven.
I Built a Free Developer Toolkit Where Your Data Stays in Your Browser
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. The browser first architecture is exactly the right direction for this category. I would strengthen the privacy model further by making the application fully offline capable with a service worker, IndexedDB for optional local history, strict Content Security Policy, zero third party telemetry, and explicit memory cleanup after sensitive operations.
Evidence-Grade Telemetry: Sensor Sync, Time Bases and Idempotent Ingestion
If you are building the ingestion side of a cold chain or asset tracking platform, there is a category of bug that does not show up in staging, does not show up in the first pilot, and shows up for the first time when a customer asks you to produce a defensible record of a shipment that went wrong. It is not a bug in your code. It is a bug in your data contract. This post is about the three places it hides. 1.
Before You Reinstall an Android Emulator on Windows, Name the Failure State
“The emulator will not open” sounds specific, but it can describe several different failures. Sometimes no process starts. Sometimes a process appears for two seconds and exits. Sometimes the process stays alive while the window opens off-screen. A blank renderer, a frozen Android boot screen, and a launch blocked by virtualization all look similar from the user’s side, but they do not belong to the same diagnostic branch. That distinction matters because reinstalling only changes program files.
My Mother Became a Licensed Cook at 70. It Changed How I Design for Older Users.
My mother became a licensed cook at the age of 70. She studied, prepared for the exam, took it — and passed. At the same time, she sometimes asks me questions about smartphones and the internet. “How do I do this?” “Is it okay to click this?” That contrast made me question something we often assume when designing software: Are older users really “bad at technology”? I don't think that's a very useful way to think about it anymore.
OpenAI Cuts Cursor Loose as the Altman-Musk Feud Finally Hits Developers
The rivalry between Sam Altman and Elon Musk has burned through lawsuits, poached talent, and years of public sniping. Now it's landing somewhere developers will actually feel it. OpenAI announced this week that it's pulling its models out of Cursor, one of the most popular AI coding editors on the market, following Cursor's acquisition by Musk's SpaceX.
Building RAG Applications with Spring AI: Connect LLMs to Your Own Data
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. This is a solid foundation, especially the emphasis on authorization and observability. I would push the architecture further by treating retrieval as a measurable subsystem rather than simply a vector lookup.
tiny: Claude Code & Codex sessions on your own Kubernetes cluster.
Tired of fans constantly spinning while Claude Code is nailing your project (for an unknown amount of time)? Well, Clusters were made exactly for this! Run Claude Code / Codex in any Kubernetes cluster. Watch sessions grow. Switch between them, broadcast prompts to all at once and much more. Interesting? Great! Then you must to check out our add-ons. Internal artefact store, container image caching, and a GitHub runner that starts tasks based on GitHub issues labelled with a specific label.
Anatomy of a Nim Infostealer
Tracing exfiltration and self-deletion through static, dynamic and advanced static analysis Vasilis Mantas — Threat Detection Engineer Verdict: A 64-bit Windows infostealer written in Nim. It reads a target file from disk, encrypts the contents with RC4 using a key it collects at runtime, and exfiltrates the ciphertext in chunks over plain HTTP GET requests to a hardcoded C2 domain. It establishes no persistence.
Java 25 vs Java 27: Real Evolution or Just Hype?
Sometimes—or rather, most of the time—I don't understand the obsession with tech trends. Lately, there’s been a lot of hype around a new Java release: Java 27, a non-LTS version launching this coming September. With rock-solid, long-term support options like Java 25 (or even Java 21) already available, why rush to migrate just for the sake of it? Upgrading simply to follow a trend brings unnecessary risks.
Claude Code Job Search: 69 Applications, 20 Interviews, 1 Offer
A laid-off geophysicist turned his job hunt into an agentic workflow and open-sourced it. The project, ai-job-search, has blown past 29,000 stars on GitHub — and it's a blueprint for how AI turns a messy, subjective process into an executable pipeline. ▸ From 69 applications to an offer (source: @aigc1024).
Rust Runtime to Give AI Agents Real DevOps Tools
I’ve been building tooler, an open-source runtime written in Rust designed to give developers, DevOps workflows, and AI agents a consistent set of real-world tools. Instead of letting an agent rely on arbitrary shell commands, tooler provides structured capabilities for HTTP requests, databases, filesystems, processes, logs, Git/GitHub, deployments, health checks, systemd, cron, remote hosts, and reusable playbooks.
Debounce and Throttle in JavaScript: The Complete Guide
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. The distinction between temporal suppression and execution scheduling is explained very well here. One advanced issue I would add is that debouncing network calls should be coupled with request cancellation and response versioning.
How I Scaled Zero Lifestyle to 2M+ Users: A Shopify Developer's Case Study
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. The strongest part of this case study is that you established measurable baselines before touching the production storefront. That is exactly how performance engineering should work.
I built a free browser-based image & utility toolkit — here's what I learned
Why I Built ToolZip A few months ago, I needed to compress some images for a client project. I searched for a free online tool, found one, uploaded my files — and then realized I had no idea what they were doing with those files on their servers. That bothered me. So I built ToolZip — a collection of browser-based tools where everything runs locally. No files ever leave your device.
How Do You Actually Evaluate Your RAG App?
You built a RAG chatbot. It answers questions from your documents. You test it a few times. The answers look good. So… can you ship it? No. One good answer doesn't tell you whether your RAG system works. A RAG application has multiple moving parts. The retriever can fail. The generator can fail. They can both work individually and still fail when combined. And once the application goes live, your users will ask questions you never tested. So how do you actually evaluate a RAG system?
How to Reduce Time to Revoke for Exposed Credentials
This is the second article in a series on time to revoke, following our piece on The Hacker News. The first explains how to measure the amount of time an exposed credential remains usable. This article focuses on the operational changes security teams can make to shrink that exposure window. TL;DR: Reducing time to revoke means addressing the operational blockers that keep exposed credentials valid after detection.
SOC 2, CRA, NIS2: they all ask your cluster the same five questions
In eleven days, on 11 September 2026, the reporting obligations of the EU Cyber Resilience Act start applying to anyone who puts a product with digital elements on the European market. Not the full regulation. Just the part where, if you find out an actively exploited vulnerability is in your product, you have 24 hours to tell ENISA about it. I have watched a lot of engineering teams meet this class of deadline for the first time. It usually goes the same way.
Grok 4.6 Is Now in Foundry — Here’s What It Means If You Write C#
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. The strongest part is treating Grok 4.6 as an agentic execution component rather than another chat completion model. For serious .NET systems, I would put an orchestration layer around IChatClient with typed tool contracts, state persistence, idempotent operations, cancellation tokens, circuit breakers, and distributed tracing.
Automating Excel Merges with Power Automate: A Deep Dive into Workflow Automation and Data Cleaning
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. The hybrid architecture is the right direction, but I would avoid letting an LLM become the source of truth for data transformation. I would build a schema inference layer first, generating a canonical contract with typed fields, normalization rules, provenance, and confidence scores.
Moving a password to another device without syncing your vault
The password is in your password manager, exactly where it should be. The login prompt is on a different device. Perhaps you are preparing an Android device for a maintenance task. It needs one service password. You do not want to sign it into your email account or give it access to the rest of your password vault just to fill in that field. Typing the password manually is an option. Sending it to yourself is another.
Mainstreaming RakuAST
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. RakuAST reaching the default path is a significant compiler architecture milestone. The most interesting aspect is not simply replacing the backend, but creating a cleaner intermediate representation that can support future optimization passes without depending on legacy grammar internals.
J’ai mis un Agent Claude dans ma CI pendant 3 mois , voici ce qu’il a vraiment fait
Retour d’experience sur l’automatisation de déploiements avec un agent LLM et sur les gardes-fous qu’il a fallu inventer en cours de route L’idée est venue d’un frustration banale. Sur mon projet terraform , je passais beaucoup de temps à refaire la même chose : lire un plan qui échoue , comprendre pourquoi , corriger des lignes de configurations , toujours trop long.
When Your AI Reviewer Remembers Too Much: A Two-Phase Memory Probe
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. This is a particularly strong evaluation design because it treats persistent memory as an additional stateful failure surface rather than assuming every review is independent. I would push it further by making the probe temporally adversarial.
I Wired Google Search Console Into My Publishing Pipeline and Immediately Hit Someone Else's Google Account
I'd been checking my blog's search traffic by hand -- log into Search Console, click the property, read two numbers, close the tab -- often enough that wiring it into a script felt like an obvious next step. What I didn't expect was to spend the first ten minutes of that "obvious next step" locked out of my own property by a Google account I'd forgotten I was signed into.
Test-First AI Documentation: A Workflow That Keeps Generated Docs Honest
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. The strongest idea here is treating documentation as an executable artifact rather than generated prose. I would extend the pipeline with contract testing and AST based signature diffing instead of relying primarily on textual heuristics.
Diff Every Tool Call: Replaying Agent Runs from a JSONL Trace
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. This is exactly the direction agent observability needs. I especially like treating the trace as the source of truth instead of repeatedly invoking a nondeterministic agent.
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with Kane
Contact Kane, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack