RSSAmplifier

Blog

Charles Chen

Personal blog of Charles Chen (CharlieDigital, @chrslchn)

chrlschn.devRSS feed ↗40 posts

Latest posts

The Unexpected AI Stack: C# + .NET (Part 4)

Setting up the test foundations using Testcontainers and transactions for AI-enabled applications with C# and .NET

The Unexpected AI Stack: C# + .NET (Part 3)

Building an AI-enabled application using the Copilot SDK, C#, .NET, and Nuxt UI

The Unexpected AI Stack: C# + .NET (Part 2)

Scaffolding an AI-enabled codebase from the ground up to support agentic engineering.

The Unexpected AI Stack: C# + .NET (Part 1)

Exploring an unconventional and underrated sleeper stack for building AI- and agent-enabled applications: C# and .NET

MCP is Dead; Long Live MCP! - Revisited

6 months later, where does MCP stand today?

MCP is Dead; Long Live MCP!

Understanding the social media zeitgeist around CLIs and the premature death of MCP

TypeScript Conditional Types for Type Safety (Without Assertions)

Using conditional types to achieve type safety without having to use 'as'

Beware the Complexity Merchants

When smart people get their high from building complex systems to solve simple problems, you're not going to have a good time

The Inverted Reactivity Model of React

A quick take on the 'inverted' reactivity model of React compared to vanilla JS, Vue, and other frameworks.

Lessons Learned from Working at Startups

Self-note on some lessons learned from working at a variety of startups over my career

On Bakers, Ovens, and AI Startup Moats

Are new AI startups "just another wrapper for a 3rd party model"? Does having an oven make you a baker?

I'm a Gen AI Maximalist and Why You Should Be, Too

Putting things into perspective: many think that we are in the trough of disillusionment; but really, gen AI is just getting started.

Merging Objects in Google Cloud Storage with Compose and C#

Manage large sets of data using a nifty feature of Google Cloud Storage

C# Discriminated Unions and .NET Channels

For parallel processing of records, C# discriminated unions and .NET System.Threading.Channels make it easy.

Need for Speed: LLMs Beyond OpenAI with C#, .NET 8 SSE + Channels, Llama3, and Fireworks.ai

If your gen AI use case has a need for speed, then it might be time to move beyond OpenAI GPT and combine that with a backend capable of high-throughput concurrent processing.

A Conceptual Model of State in Vue 3.4

A guide to understanding how to think about state and components in Vue with the game changing defineModel

A Practical Guide to Modular Monoliths with .NET

Feeling too much friction from your microservices architecture? It's time to revisit monoliths.

Your Interview Process Is Too Damn Long (and How To Fix It)

Long interview processes have become a bane in the tech industry. Can we fix it?

End-to-End Type Safety with .NET7, TypeScript, and OpenAPI -- with Hot Rebuild

Supercharge your dev workflow with end-to-end type safety and hot rebuild!

.NET Task Parallel Library vs System.Threading.Channels

Wondering which concurrency library is right for you? Let's dive in!

Server Sent Events with .NET 7

An HTTP alternative to web sockets that makes it easy to push events from the server.

Programmatically Invoke Cloud Run Jobs with Runtime Overrides

Love Google Cloud Run but need to be able to programmatically invoke long running jobs?

TypeScript is not a Programming Language

If you're struggling with TypeScript, reshaping your perspective might help.

Mastodon is Rewinding the Clock on Social Media — in a Good Way

How Mastodon and the Fediverse are shifting the landscape of social media -- for the better.

5 Engineering Lessons from Early Stage Startups

Lessons learned from working at startups ranging from seed stage to series-B/C funding over the last 3 years.

Cheap and Easy Way to Scrape Sites for LLM Processing

If you need to extract text from websites to feed into LLMs, this easy solution will get you started with just a few lines of code.

.NET Source Generators with .NET 7

Exploring .NET source generators to reduce boilerplate code in everyday code!

Interviews in the Age of AI: Ditch Leetcode - Try Code Reviews Instead

In the emerging age of AI generated code, is leetcode really the best way to evaluate technical candidates (was it ever)?

To Comment or Not to Comment

Ruminations on the timeless debate of comments in code.

Nuxt 3 with SSR on Google Cloud Firebase Functions (2023)

If you're seeking a no-cost, low-ops, low-friction solution for deploying SSR workloads then look no further!

React is the New IBM

You’ll never get fired for picking it, but it’s going to be expensive, bloated, difficult to get right, and joyless every step of the way.

Using useMemo and useCallback to Save the Past from React Langoliers

If you're confused about useMemo and useCallback and you have 10 minutes and nostalgia for 90’s sci-fi? You came to the right place!

Vue 3x3 - A Mental Model for Building Fast

A mental model for helping you get oriented with with Vue3 and Composition API

3 Tips to Help Dev Teams Build Speed

My observations on practices that help all teams build speed.

Thoughts on React vs Vue vs Everything Else in 2023

My personal thoughts on front-end in 2023

Concurrent Processing in .NET 6 with System.Threading.Channels (Bonus: Interval Trees)

Using .NET System.Threading.Channels for concurrent processing with interval trees.

Use TypeScript Record Types for Better Code

TypeScript Record types have super powers that can help any team write better code.

Google Firebase with dotnet6

Find out why Google Firebase is a great platform for application development with .NET 6

The Boomer .NET Dev Skill Upgrade Guide — Part 2

The second part of my guide for how .NET developers need to re-orient in the modern dev landscape.

The Boomer .NET Dev Skill Upgrade Guide — Part 1

The first part of my guide for how .NET developers need to re-orient in the modern dev landscape.