RSSAmplifier

Blog

Marquee de Sells: Chris's insight outlet

The feed of updates to 's blog.

&RSS feed ↗31 posts

Latest posts

Announcing Gas City 1.0!

You may have heard from Steve Yegge, the creator of Beads and Gas Town, that we’ve released Gas City 1.0! As the CEO of the newly minted Gas City, Inc. , I thought I’d provide some additional details on Steve’s excellent blog post. It’s hard to look back on the release of ChatGPT as anything but the firing of a starter pistol. In that time, we’ve completely changed how software engineers do their…

Orchestration Is All You Need

What agentic engineering looks like when you really mean it. In the last year, as our AI software engineering tools have evolved, so have our software engineering processes. We have learned to take advantage of the tools to cut down the latency of our SDLC and CI/CD processes. We’ve already learned that if we’re not careful, we’re going to vibe code AI “ slop,” the unchecked code and configuration…

We Pour — Chapter 3

A Cyberpunk Story in the Fifth Element Universe by Chris & Eli The street hits me like a wall. Steam and noise and the churning river of foot traffic that parts slightly around me the way it always does, because people see 6’8 ” coming and step aside without thinking about it. I walk. I don’t flag a cab. I need the movement. Mox. His real name is Maxwell Huang and he was four foot nothing until he…

We Pour — Chapter 2

A Cyberpunk Story in the Fifth Element Universe by Chris & Eli The express elevator drops 97 floors in eleven seconds. My ears pop at 40. The lobby is its usual zoo — a Mangalore in a maintenance uniform arguing with the building super, two kids chasing each other through the turnstiles, and a police drone hovering by the mailboxes, scanning packages with a blue fan of light. Nobody looks twice at…

We Pour — Chapter 1

A Cyberpunk Story in the Fifth Element Universe by Chris & Eli The alarm doesn’t wake me. The cat does. Not my cat. I don’t have a cat. But the orange tabby that lives two vents over has figured out my ductwork again, and it’s sitting on my chest like it owns the lease. Which, given what I pay for a 400-square-foot box on the 97th floor of Tower Block Chinatown, it might as well. I peel myself out…

Guest Post: Enabling Image Paste in Flutter

How a simple feature request led to a deep dive into AppKit, responders, and the creation of the mac_menu_bar plugin. By Emmanuel David Tuksa ( @DeTuksa ) Foreword Before we dive into the technical details, I want to extend a massive thank you to Chris Sells (@csells). This journey started with a single feature request on the flutter_ai_toolkit repo, and Chris’s guidance, curiosity, and “ what if”…

Dartantic 2.0: The Nano Banana Edition

tl;dr: If you’re new to dartantic, it’s a multi-provider agentic toolkit for Dart and Flutter developers that runs wherever Dart runs, i.e. Flutter web, desktop and mobile, CLI and server-side. Today there’s a new release, but you can skip all of that and head to the docs to get all you need to get started: https://docs.dartantic.ai . Welcome to Dartantic 2.0! Are you a Dart or Flutter developer…

The 5 Stages of AI Grief

“ The future is already here — it’s just not very evenly distributed.” –W. Gibson As a consultant and speaker, I talk to a lot of software engineers. As AI coding tools have gotten better (and they have gotten much better), I’ve watched engineers move through what feels a lot like the stages of grief. 1. Denial: “ AI is a fad. It’ll go away soon.” I still run into a large number of engineers who…

Welcome to dartantic_ai 1.0!

Dartantic is an agentic framework designed to make building client and server-side apps in Dart with generative AI easier and more fun! It works across providers (Google, OpenAI, Anthropic, etc) and runs anywhere your Dart code runs (Flutter desktop, Flutter mobile, Flutter web, CLI , server). It allows you to write code like this: // Tools that work together final tools = [ Tool( name:…

A Young Software Engineer’s Guide to AI

I was on an AI-focused podcast last week talking about how a new software engineer should work differently in this new era of AI . It reminded me of a conversation I had recently with a college grad in their first professional software engineering career. They were asking for advice from a wizened old coder (I was even wearing the suspenders). With the latest in AI coding tools, they were…

Critical Flutter OSS Projects Need Love! (aka Funding)

In a recent tweet , Dinko makes an excellent point about much of our Dart ecosystem being comprised of “ hobby project[s]” and having “ limited support.” He’s not wrong and that applies to Flutter as well. Most of the Flutter ecosystem is driven by passionate OSS developers. And that passion drives different devs to do different things — some like the code, some like the samples, some like the…

Flutter AI Tool Calling

A little while ago, I was inspired by Thorsten’s blog post on building an AI Agent using Rust to build an AI Agent using Dart . The combination of a conversation with Gemini and a set of tools allowed us to build an agent that could take some prompts from the user and turn them into not just responses (Ask mode), but actions (Agent mode!). In the spirit of Agentic Apps month for Flutter this…

Pedantic AI in Dart: dartantic_ai

The Python community has a library called pydantic that adds type checking at run-time to a dynamically typed language. The library allows them to be “ pedantic” about type validation in Python aka pydantic; get it? : ) We don’t need that for Dart. We have static type checking and it’s wonderful. Pedantic AI in Python: pydantic-ai On top of pydantic, the Python community has built pydantic-ai ,…

AI Agent with Dart + Gemini

To say that there has been a lot of activity in the AI space for developers lately would be an understatement. As we transition from “ Ask” mode in our AI-based dev tooling to “ Agent” mode, it’s easy to see agents as something magical. “ Any sufficiently advanced technology is indistinguishable from magic.” –A. C. Clarke And while the vendors of AI-agent-based tooling might like you to think of…

How to Write Actionable Bug Reports

I often find myself maintaining open source projects. I’ve contributed to many over the years, even hosting multi-person “ source available” projects on this very website in zip files before there were such things as GitHub or Pull Requests or Open Source Software. No matter what mechanism I’m using to manage the project, if it’s popular, I get issues filed against that project. Those issues break…

Building Generative AI for DartPad

Hello, again, and welcome to another installment of “ Flutter + AI = Joy.” In today’s episode, we’re taking a behind-the-scenes look at the design and implementation of the generative AI features in the latest version of DartPad . Before we get started, if you haven’t already read Amanda’s most excellent blog post for an overview of the new functionality, I recommend starting there. Streaming…

Building the Flutter AI Toolkit

It has been quite an exciting few years since I left Google in 2022. I had been on the Flutter team for 3 years by that point, helping it go from v1.0 to v3.0, from hundreds of thousands of users to millions. It was exciting, but time for a change. And boy did I get some! Over the next 3 years I did the following: Worked on the developer experience for VR/AR/XR at Meta in their Reality Labs…

Dart and Flutter packages need your Love!

Do you have some free time? Are you excited to get involved in the Dart and Flutter ecosystem? Then have I got a deal for you! Last week, the Founder and CEO of Shorebird , who is coincidentally also the Founder of the Flutter project at Google, had this to say about the current start of the state of the package ecosystem that lies at the core of Dart and Flutter: The reason that Eric was asking…

Understanding Flutter: deep links on the web

NOTE : This content has been subsumed by the package I wrote to support declarative routing via the Navigation 2.0 API : go_router . This package is what I use now for my own projects and I hope that you’ll find it useful for your projects as well. Enjoy. Lately I’ve been working on a little side project with a friend of mine and I’m the coder, so I get to pick the tech I want for the…

Fun with Curl and Dart

If you’re a Dart programmer, the curl command doesn’t really help you. Oh, it can tease you with of its wonderful functionality, but you still have to take anything you can do with curl and manually translate it into Dart code. Until now. Updating curlconverter.com for Dart For almost 5 years now, Nick Carneiro has maintained a wonderful site for converting curl commands into network code for your…

Returning to D&D

30 years ago, I paused a 5-year love of D&D to attend college. About six months ago, I picked it up again with my adult sons, who’d gathered for my birthday. We started with $20 on the D&D 5e Starter Set , which includes everything you need for a group to play: a subset of the 5th Edition D&D rules, a starter module, a set of pre-rolled characters and dice. My youngest son had learned all of the…

WebAssembly explodes client-side programming

Back in the olden days, you could use whatever programming language you wanted to write your client-side code: ASM , C, C++, BASIC , Java, C#, etc. Hell, every language had a client-side UI framework attached (often more than one ). Then the web hit and we used those same languages to generate HTML on the server-side. It was a polyglot world for client-side development right up until mobile made…

Building a modern, mobile-first app

A while ago, I started building a brand new client app . I wanted to use all of the modern techniques to make it a great app and to make sure it had maximum reach. For me, that meant a Progressive Web App that would work from desktop and mobile browsers. And so that meant JavaScript. That was OK ; I’d been through the 5 stages of grief for JavaScript years ago but the real question is, which…

Viking Me

Today, I was asked about the story behind my viking avatar: The avatar is years and years old. Peter Stern, a graphic designer friend of mine, put together a set of avatars for me for something (I forget what) and the viking is the one that resonated with me the most because of my Norwegian heritage, my physical stature and my general demeanor (those of you who know me have never asked why I…

Backgammon and Using Your Own Products

Have you ever used a product of any kind — an app, a device, a plunger — and thought to yourself “ Do these people even use their own product?” As a Product Manager at Google and a long-time software product guy, I think this all the time. Sure, Donald Norman , Steve Krug and countless others have written well on the topic of product design, but that’s not enough. You actually have to use your own…

Google Cloud Storage Hierarchy in .NET

Google’s Cloud Storage Browser perpetrates a fiction of files and folders that doesn’t exist. The Google Cloud Storage ( GCS ) API only has two concepts: buckets and objects. A bucket is a container of objects and needs a globally unique name. An object has a name, a content type and content. The name can be simple, e.g. “foo.txt” or it can have slashes in it, e.g. “foo/bar.txt” or even just “…

Breaking Into the Industry

I got an email the other day from an old friend that said he’d met a young developer named Ben and that he was impressed with his “ acumen, initiative and hunger to learn,” which made me want to help him if I could. He also said that “ his Dad followed your blogs for years,” which made me want to eat right and exercise. In the meantime, Roger introduced me to Ben via email and Ben had some…

Access Google Cloud Source Repositories from Visual Studio

Cloud Source Repositories ( CSR ) provides support for multiple Git repositories for each project. To log into your CSR repos from within Visual Studio, you’ll need credentials that Visual Studio expects, i.e. a username and password pair. CSR calls these “ manually generated credentials” (as opposed to the Google Cloud SDK generated credentials which are the default). Manually Generated…

Solitaire Redux

I’ve done a bunch of stuff related to Solitaire on my blog for some reason. I guess I’m a fan, although mostly these days I focusing my listening in boring meetings with 2048 or Border Siege (the real reason I have an Android phone). Still, the interest must still be there, because when I saw 10 SOLITAIRE Facts You Probably Didn’t Know scroll by on my Flipboard feed, I was curious. I didn’t find…

Moved to Blot

You’re reading this on the 5th version of my blog. Some History The first was a set of static text files I managed in FrontPage. The editing was nice (once it get the HTML-on-the-disk problems right), but I dropped everything into the same file, using anchor tags to separate posts in one giant file, which didn’t scale. The second version was ASP.NET code to pull in my static content (I did not…

Choose HTML for UI Development

On Sept. 10, 2015, Winston Kodogo writes : Hey Chris, if you’re feeling happy enough to blog, how about a post giving us your current thoughts on UI development. A friend of mine has asked me for advice on moving an in-house app from VB6 to something he can find people to modify if he needs to, and I can’t for the life of me think of what to tell him. I have your most excellent books on Windows…