Profile avatar
mbleigh.dev
Building the servers for serverless at Firebase. Web platform aficionado.
144 posts 457 followers 127 following
Regular Contributor
Active Commenter

It's now super easy to create eval datasets using Genkit. You can just click "Add to Dataset" straight from a debug *or* production trace.

Hot take: every programming language should support union types where the value is ambiguously typed until some kind of narrowing/type check is performed. The API ergonomics unlocked by union types are vast. It's the main reason why TypeScript is my fav language.

Having good security on developer products doesn't just mean locking things down by default, it also means making the UX of security good enough that people actually do it. If people can't figure out how to do it securely, they'll do it insecurely and it's only partially their fault.

What can you do with multimodal LLMs? How about identifying objects by name, description, color, and even drawing a bounding box around them? 🖼️ ➡️ 📄 Gemini makes it possible, Genkit makes it simple.

There's going to be a Genkit community meeting next week...I'll be there, come hang out! https://lu.ma/3d1c2134

Where do you go to find good LLM prompts for various things? More interested in prompts to use in an application than e.g. things to paste into an LLM assistant app.

What would you want a Firebase MCP server to be able to do?

Serious question: why is there not a standardized way to turn FormData into an object? I understand that there are nuances (e.g. multiple form fields named the same thing) but surely there can be some judgment calls made and the raw data is still there for edge cases.

Observation: LLM output reliability is inversely correlated with the variance one would expect if the prompt were "executed" by humans. If you break your problem down enough that 10 random people would give reasonably similar answers to any given step, the LLM probably will too.

When I joined Google I came to appreciate its design doc culture -- a way to ferret out issues and align without throwaway work. I'm not sure it works in the AI era. You *have* to prototype things, you can't know what will work just by thinking about it anymore.

What's the SotA method for efficiently modifying medium-to-large code files when interacting with LLMs? What approaches work reasonably well? Any open source refs? - Find / Replace Block? - Any version of diffs actually work? - Just do the whole file?

Genkit JS just hit 1.0! It's the open source SDK for GenAI you don't want to sleep on. 🔄 Extensible to any model provider 🏗️ Structured output and streaming 📝 Rich text-based prompt templating 📱 Designed to integrate well with apps

Has anyone built an LLM app to analyze proposed legislation, executive orders, etc and provide both Q&A and automatic analysis? Seems like AI could be a genuinely useful tool for helping the average citizen be more informed without relying on headlines or reading 300pg docs.

Counter-intuitive UX win: if your app sends email notifications for updates to a conversation (e.g. issue tracker), send an email for the user's own updates. But I sent it, why do I need email about it? Because later, when you scan the email thread, all the context is there.

I think about tech impact in terms of "what was hard that becomes easy" or "what was impossible that becomes possible". It is impossible to deny AI is enormous on these terms. Automation, data analysis, content creation, software dev... For better or worse, it's not empty hype.

I really wish TypeScript generics were kwargs instead of positional, or at least could be optionally. I sometimes need generics with 4-5 different types (usually inferred from options args) that each may or may not be present. Would be nice if they could just be named keywords.

Or, hear me out, shut down the whole memecoin industry and nothing of value will be lost.

Has anyone ever seen a library/framework (not managed service) with feature flags on experimental features? Like literally something like: import SomeLibrary from "some-library" import { enableExperiment } from "some-library/experiments"; enableExperiment("cool-new-feature");

Middleware is maybe the most powerful extensibility pattern in all of software. It provides lifecycle hooks, input/output transformation, and clean encapsulation with a very approachable interface for the consumer of the middleware.

There are two features coming to the next version of Genkit that feel like we've finally "clicked" on the right abstraction for some really important use cases. Can't wait to get it out there... 😁

It's petty but this one command sums up my dislike of Python: pip install -r requirements.txt Not having a default for -r, the 99.999% use case, does not demonstrate an investment in ergonomics. Similarly, it took me 7 years to swallow JSX className in React (it's still bad).

One of the interesting things about living through the future is how quickly it feels normal. I tell a computer to write a bunch of code and not only does it do it, I get annoyed when it doesn't do it perfectly. The world is different, but it all feels normal.

I find the line-blurring between server and client on Next.js frustrating more than magical most of the time tbh. Oops, I imported a type from a server library in a client component and now the entire build blows up in a hard-to-debug way because that lib has a transitive dep with `require("fs")`.

I feel like two years from now I'll still be finding amazing shows with impressive casts made for unpopular streaming services during the peak TV bubble. Recent example: Pantheon, animated AMC show now on Netflix. Absolutely hooked me in one episode but didn't even hear of it til now.

This really is key to success in a big company. I think of it as cultivating equanimity and learning that not every hill is the one to die on.

Has anybody built a Tweetdeck for Bluesky yet? A "Skydeck" as it were?

Me: I'm ten feet away from the screen, can you clearly indicate which tile on the screen I have selected? Apple TV+: You absolute moron, it's obviously the one that is 4% larger than the tiles around it and has a slightly larger drop shadow.