#  @zirkelc_ Chris
Chris posts on X about open ai, ai, redis, lambda the most. They currently have [---] followers and [---] posts still getting attention that total [---] engagements in the last [--] hours.
### Engagements: [---] [#](/creator/twitter::341705089/interactions)

- [--] Week [------] -40%
- [--] Month [-------] +58%
- [--] Months [-------] +32,774%
- [--] Year [-------] +2,239%
### Mentions: [--] [#](/creator/twitter::341705089/posts_active)

- [--] Week [--] -33%
- [--] Month [--] -37%
- [--] Months [---] +328%
- [--] Year [---] +187%
### Followers: [---] [#](/creator/twitter::341705089/followers)

- [--] Week [---] +3.10%
- [--] Month [---] +14%
- [--] Months [---] +158%
- [--] Year [---] +183%
### CreatorRank: [---------] [#](/creator/twitter::341705089/influencer_rank)

### Social Influence
**Social category influence**
[technology brands](/list/technology-brands) [stocks](/list/stocks) [social networks](/list/social-networks)
**Social topic influence**
[open ai](/topic/open-ai), [ai](/topic/ai), [redis](/topic/redis) #21, [lambda](/topic/lambda), [vercel](/topic/vercel), [azure](/topic/azure), [shutdown](/topic/shutdown), [if you](/topic/if-you), [javascript](/topic/javascript), [in a](/topic/in-a)
**Top accounts mentioned or mentioned by**
[@aisdk](/creator/undefined) [@mattpocockuk](/creator/undefined) [@murshudoff](/creator/undefined) [@tanstack](/creator/undefined) [@theburningmonk](/creator/undefined) [@openai](/creator/undefined) [@zirkelc](/creator/undefined) [@trpcio](/creator/undefined) [@opentelemetry](/creator/undefined) [@lgrammel](/creator/undefined) [@nicoalbanese10](/creator/undefined) [@beta](/creator/undefined) [@redsquare](/creator/undefined) [@ravisojitra](/creator/undefined) [@tobiaspetry](/creator/undefined) [@rvbhadja](/creator/undefined) [@goserverless](/creator/undefined) [@mugilanragu](/creator/undefined) [@ssalbdivad](/creator/undefined) [@youyuxi](/creator/undefined)
**Top assets mentioned**
[Cloudflare, Inc. (NET)](/topic/cloudflare) [Microsoft Corp. (MSFT)](/topic/microsoft) [Shopify Inc (SHOP)](/topic/$shop)
### Top Social Posts
Top posts by engagements in the last [--] hours
"#TypeScript lets you extract the properties and methods of a given class. This in turn allows you derive to an interface from a class that can then be implemented in another class. This is quite useful for mock classes that should have the same members as the original class"
[X Link](https://x.com/zirkelc_/status/1673269207985790977) 2023-06-26T09:58Z [---] followers, [--] engagements
"I wrote a more detailed post on #DEVCommunity about this"
[X Link](https://x.com/zirkelc_/status/1673269210137477120) 2023-06-26T09:57Z [---] followers, [--] engagements
"The TypeScript Playground for the previous example is here: https://tsplay.dev/Nr3K1m https://tsplay.dev/Nr3K1m"
[X Link](https://x.com/zirkelc_/status/1673269211685171203) 2023-06-26T09:57Z [---] followers, [--] engagements
"Deploying a Browser in the Cloud ☁ I built a small PoC that runs a headless Chrome browser within a Serverless function I wanted to create a Reader View that takes a link to an article and extracts the readable content from it no ads no navigation just the actual content"
[X Link](https://x.com/zirkelc_/status/1707341253623394588) 2023-09-28T10:27Z [---] followers, [--] engagements
"Here's a piece from NBC News concerning NASA's asteroid sample return mission. It's actually a bit slow so please allow a few moments for it to load 😉 Or head to the start page and input your own link in the provided field"
[X Link](https://x.com/zirkelc_/status/1707341255745626521) 2023-09-28T10:27Z [---] followers, [--] engagements
"I've published the 3rd part of my series on website hosting with Amazon S3 and CloudFront. The latest post is about S3 website hosting with a private S3 bucket - so no more hassle with block public access and all those warnings. #DEVCommunity"
[X Link](https://x.com/zirkelc_/status/1709183053581451317) 2023-10-03T12:26Z [---] followers, [--] engagements
"@BrendanFalk @fig Cool I love Fig Congrats on the great work"
[X Link](https://x.com/zirkelc_/status/1726797788409991511) 2023-11-21T03:00Z [---] followers, [--] engagements
"Lets say two systems are connected. Usually they must speak the same language (protocol) to send/receive data. But instead of defining an interface schema one system could ask what format the other system expects. Kind of like a TCP-style handshake for APIs if you will"
[X Link](https://x.com/zirkelc_/status/1731341541300642258) 2023-12-03T15:56Z [---] followers, [--] engagements
"Both systems agree on their protocol on the fly during handshake. They could either agree on one common format or each systems tells the other which format it expects. Acknowledgements and retries are supported through natural language by default"
[X Link](https://x.com/zirkelc_/status/1731547369442017481) 2023-12-04T05:33Z [---] followers, [--] engagements
"Has someone implemented @trpcio with websockets on AWS api gateway and lambda"
[X Link](https://x.com/zirkelc_/status/1742449084672168026) 2024-01-03T07:33Z [---] followers, [--] engagements
"I made a fascinating discovery this morning. TypeScript allows you infer generic type parameters from objects even if these generics are not used in the actual definition of the object"
[X Link](https://x.com/zirkelc_/status/1743551379765948679) 2024-01-06T08:33Z [---] followers, [--] engagements
"The same happens for strings and presumably also to other primitive types like number or boolean"
[X Link](https://x.com/zirkelc_/status/1743551383679201396) 2024-01-06T08:33Z [---] followers, [--] engagements
"Maybe @mattpocockuk can help me solve that mystery"
[X Link](https://x.com/zirkelc_/status/1743551385629507766) 2024-01-06T08:33Z [---] followers, [--] engagements
"The AWS Community Builder application has just gone live. I highly recommend anyone building on or writing about AWS to check it out and apply. It offers a lot of great perks and top-notch support from the builder community"
[X Link](https://x.com/zirkelc_/status/1746799366994632970) 2024-01-15T07:39Z [---] followers, [--] engagements
"When using Lambda function URLs with IAM authorization and CloudFront I always got a signature error for SignatureV4. Without CloudFront it worked fine. I finally figured out the root cause and wrote a detailed description. I hope it helps some of you"
[X Link](https://x.com/zirkelc_/status/1752228130691973276) 2024-01-30T07:11Z [---] followers, [--] engagements
"@astuyve @_maxday That we go back to the point of checking which API is supported in which version of the runtime. Like is fetch() available How about ESM Oh and what is the right module and moduleResolution for TS to target runtime X"
[X Link](https://x.com/zirkelc_/status/1756205294319747545) 2024-02-10T06:35Z [---] followers, [--] engagements
"@ohmypy I had the same opinion then I used Tailwind for a personal project and never looked back. Its a compilation of styles into useful and reusable classes. In a sense its like CSS without the OOP aspect. No inheritance just functional"
[X Link](https://x.com/zirkelc_/status/1759301520531562822) 2024-02-18T19:39Z [---] followers, [---] engagements
"@TkDodo @typescript Cool I didnt know about this library. Looks like a good alternative to Lodash"
[X Link](https://x.com/zirkelc_/status/1766434471388025192) 2024-03-09T12:02Z [---] followers, [---] engagements
"@theburningmonk @AWS I created the aws-sigv4-fetch npm package which wraps the fetch() function to automatically sign all HTTP requests"
[X Link](https://x.com/zirkelc_/status/1772627058134225119) 2024-03-26T14:09Z [---] followers, [--] engagements
"@theburningmonk @goserverless Here's how to make Serverless work with ESM and TypeScript: https://github.com/zirkelc/serverless-esm-ts https://github.com/zirkelc/serverless-esm-ts"
[X Link](https://x.com/zirkelc_/status/1773015809431925173) 2024-03-27T15:54Z [---] followers, [---] engagements
"Serverless works with ESM but it can't handle TypeScript in an ESM project aka loading serverless.mts config. Here's a PR I created awhile ago that explains it in more details. Unfortunately it never made it into Serverless because Node.js ESM was still experimental back then"
[X Link](https://x.com/zirkelc_/status/1773241851027271924) 2024-03-28T06:52Z [---] followers, [--] engagements
"I got Playwright with Python running on AWS Lambda thanks to a great post by @MugilanRagu. My next step would be to keep the browser open between Lambda function invocations. For whatever reason the browser is automatically closed after the first Lambda invocation. Someone an idea what's going on"
[X Link](https://x.com/zirkelc_/status/1778703870576754761) 2024-04-12T08:37Z [---] followers, [--] engagements
"Here's the great blog post by @MugilanRagu https://www.cloudtechsimplified.com/playwright-aws-lambda-python/ https://www.cloudtechsimplified.com/playwright-aws-lambda-python/"
[X Link](https://x.com/zirkelc_/status/1778703872065679800) 2024-04-12T08:37Z [---] followers, [--] engagements
"I did a deep dive into #aws signature v4 request signing process and created a pull request to fix a possible bug in the typescript implementation. The PR got merged yesterday yeah 🥳 https://github.com/smithy-lang/smithy-typescript/issues/1224 https://github.com/smithy-lang/smithy-typescript/issues/1224"
[X Link](https://x.com/zirkelc_/status/1778713102470508992) 2024-04-12T09:13Z [---] followers, [--] engagements
"@thdxr Does SST v3 also deploy Lambda container images"
[X Link](https://x.com/zirkelc_/status/1784243376906179037) 2024-04-27T15:29Z [---] followers, [--] engagements
"When importing CJS files into TypeScript why does TS only look for type declarations with .d.cts extension and ignore the .d.ts files right next to it I have stumbled upon exactly this issue for the 3rd time now on very popular packages. Just opened a bug report for happy-dom: https://github.com/capricorn86/happy-dom/issues/1430 https://github.com/capricorn86/happy-dom/issues/1430"
[X Link](https://x.com/zirkelc_/status/1788105087392313619) 2024-05-08T07:14Z [---] followers, [--] engagements
"@theburningmonk Uuuh nice I've been using Lambda Function URLs mostly because the increased timeout"
[X Link](https://x.com/zirkelc_/status/1793624951414526165) 2024-05-23T12:48Z [---] followers, [---] engagements
"@mattpocockuk Hey @mattpocockuk could you take a look at this feature request I just submitted to TypeScript. It shows an issue I noticed when combining internal packages with TypeScript path aliases. Did you ever run into similar issues https://github.com/microsoft/TypeScript/issues/58657 https://github.com/microsoft/TypeScript/issues/58657"
[X Link](https://x.com/zirkelc_/status/1794435542152524167) 2024-05-25T18:29Z [---] followers, [---] engagements
"The path alias work quite well as long as you don't use cross-package imports. For example I'm using tRPC and I import the router types from the server package into the client package. Using aliases on the server package breaks the client. My current workaround was to define all aliases globally in a root tsconfig.json. Big disadvantage is that you suddenly expose every package to every other package"
[X Link](https://x.com/zirkelc_/status/1794619009188454721) 2024-05-26T06:38Z [---] followers, [--] engagements
"pnpm solved monorepos: - workspaces for local dependencies between packages in the project and for running tasks in topological order - publishConfig for overriding the main and exports during npm publish so you can use TypeScript at dev time and JavaScript at run time It's kind of insane that TypeScript Monorepos aren't a solved problem yet. Microsoft straight up gave up on their attempt (Lerna) and now we're desperately trying to figure it out as a community It's kind of insane that TypeScript Monorepos aren't a solved problem yet. Microsoft straight up gave up on their attempt (Lerna) and"
[X Link](https://x.com/zirkelc_/status/1799805166943932920) 2024-06-09T14:06Z [---] followers, [--] engagements
"I created a @raycastapp script command to quickly download files from amazon S3 using the object URL. It's literally just a few keystrokes to download any S3 URL. It even works with entire directories"
[X Link](https://x.com/zirkelc_/status/1804166156388880618) 2024-06-21T14:55Z [---] followers, [----] engagements
"Is there a way to get rid of the generic constraint TName extends string for the interface and class while still keeping the static autocomplete for and"
[X Link](https://x.com/zirkelc_/status/1820067019322020214) 2024-08-04T11:59Z [---] followers, [--] engagements
"Maybe the TypeScript wizards @ssalbdivad and @mattpocockuk can help me with this"
[X Link](https://x.com/zirkelc_/status/1820067022262206634) 2024-08-04T11:59Z [---] followers, [--] engagements
"@ssalbdivad @mattpocockuk Yes it often feels a bit suspect when you have to cast. It leaves me feeling like I've overlooked some other issues. In my case the generic param already felt unnecessary (even if it is necessary) and the cast made it worse 😁"
[X Link](https://x.com/zirkelc_/status/1820085506580893751) 2024-08-04T13:12Z [---] followers, [--] engagements
"@theburningmonk Do you also have checklist for Lambda Function URL + CloudFront"
[X Link](https://x.com/zirkelc_/status/1820771705637204001) 2024-08-06T10:39Z [---] followers, [--] engagements
"I have overridden the Logger.error() function for the power tools for AWS Lambda to return an error object that I can simply throw. This avoids me having to repeat the message for logging and throwing. In my opinion the only downside to this approach is the overhead of creating errors if they are not being thrown afterwards"
[X Link](https://x.com/zirkelc_/status/1823668438679630054) 2024-08-14T10:30Z [---] followers, [---] engagements
"@adridder I want to have the flexibility to swap model providers from OpenAI to Anthropic without rewriting a lot of code. I've been on langchain for a while and it works but the experience for building agents is suboptimal. Do you have any recommendations"
[X Link](https://x.com/zirkelc_/status/1825801558761652303) 2024-08-20T07:46Z [---] followers, [--] engagements
"@AWSbrett Adding the costs would be a very useful metric to add"
[X Link](https://x.com/zirkelc_/status/1835267239257272325) 2024-09-15T10:39Z [---] followers, [--] engagements
"If you ever have to search for that one issue on @github which you manually subscribed to: I wish they would add it as search syntax. http://github.com/notifications/subscriptions http://github.com/notifications/subscriptions"
[X Link](https://x.com/zirkelc_/status/1838167349372784915) 2024-09-23T10:43Z [---] followers, [--] engagements
"Is there an @OpenAI issue with the embedding model API I'm getting the following error for text-embedding-3-large with [----] dimensions: Error: [---] This model does not support specifying dimensions This error was also reported on the community forum: https://community.openai.com/t/intermittent-error-an-unexpected-error-occurred-error-code-400-error-message-this-model-does-not-support-specifying-dimensions-type-invalid-request-error-param-none-code-none/955807"
[X Link](https://x.com/zirkelc_/status/1838952522129514811) 2024-09-25T14:43Z [---] followers, [---] engagements
"@OpenAI @RossAMurphy the issue has been fixed"
[X Link](https://x.com/zirkelc_/status/1839189317106762053) 2024-09-26T06:24Z [---] followers, [--] engagements
"@__tinygrad__ @AMD @lexfridman should do an interview with @realGeorgeHotz and @LisaSu to get this thing sorted out"
[X Link](https://x.com/zirkelc_/status/1839262232305115424) 2024-09-26T11:14Z [---] followers, [----] engagements
"@colinhacks Doesn't it also work with separated values like: "typescript javascriptjson":"
[X Link](https://x.com/zirkelc_/status/1841437777419718908) 2024-10-02T11:19Z [---] followers, [---] engagements
"@youyuxi @t3dotgg Not relevant to this post but VoidZero is such a cool name I like how it relates to bundlers using void [--] instead of undefined because its shorter and immutable 😄"
[X Link](https://x.com/zirkelc_/status/1841736957283446834) 2024-10-03T07:08Z [---] followers, [----] engagements
"The journey to human level intelligence will involve xml tags Can @AnthropicAI Claude [---] sonnet outperform @OpenAI o1 in reasoning Combining Dynamic Chain of Thoughts reflection and verbal reinforcement existing LLMs like Claude [---] Sonnet can be prompted to increase test-time compute and match reasoning strong models like OpenAI o1. https://t.co/vzdgszizx1 Can @AnthropicAI Claude [---] sonnet outperform @OpenAI o1 in reasoning Combining Dynamic Chain of Thoughts reflection and verbal reinforcement existing LLMs like Claude [---] Sonnet can be prompted to increase test-time compute and match"
[X Link](https://x.com/zirkelc_/status/1843148610705236277) 2024-10-07T04:37Z [---] followers, [--] engagements
"@_philschmid @AnthropicAI @OpenAI [--] million tokens for [--] questions sounds like a lot now but in a few months it will probably be negligible"
[X Link](https://x.com/zirkelc_/status/1843219119526842717) 2024-10-07T09:17Z [---] followers, [---] engagements
"@Dima_heyqq Heres what you need to validate for: Hidden gem from @gmail: Append any string of chars with + to your email address to create new unique addresses that will be forwarded to your inbox. For example if your email john.doe@gmail.com you can send emails to john.doe+twitter@gmail.com or john.doe+x@gmail.com and Hidden gem from @gmail: Append any string of chars with + to your email address to create new unique addresses that will be forwarded to your inbox. For example if your email john.doe@gmail.com you can send emails to john.doe+twitter@gmail.com or john.doe+x@gmail.com and"
[X Link](https://x.com/zirkelc_/status/1843247362199949388) 2024-10-07T11:09Z [---] followers, [---] engagements
"@elie2222 @rauchg I also sold my other cards including Charizard. No one what they are worth now 😄"
[X Link](https://x.com/zirkelc_/status/1843527954137264507) 2024-10-08T05:44Z [---] followers, [--] engagements
"@FilipPyrek And can you share some of your problems with CDK Im on Serverless and looking for alternatives"
[X Link](https://x.com/zirkelc_/status/1845070931871285412) 2024-10-12T11:56Z [---] followers, [--] engagements
"Now there is one This plugin allows you to have an ErrorLog query across your Lambda functions which you can easily add to your CloudWatch dashboard. If a new function is added to your service this plugin will automatically add it your all your defined queries. Is there a @goserverless plugin to create a CloudWatch Log Insights query for all log groups from one serverless.yml file Ideally keeping the log groups in sync with the functions when added/removed. Is there a @goserverless plugin to create a CloudWatch Log Insights query for all log groups from one serverless.yml file Ideally keeping"
[X Link](https://x.com/zirkelc_/status/1846458048304275778) 2024-10-16T07:47Z [---] followers, [---] engagements
"GitHub: https://github.com/zirkelc/serverless-cloudwatch-logs-insights https://github.com/zirkelc/serverless-cloudwatch-logs-insights"
[X Link](https://x.com/zirkelc_/status/1846458050997059664) 2024-10-16T07:47Z [---] followers, [--] engagements
"@dreamorosi I currently use SST ion only for hosting website but Ill plan to move some work projects from Serverless to SST. I really like their linking of resources e.g. making the bucket name accessible in a Lambda even at build and run time"
[X Link](https://x.com/zirkelc_/status/1848017909290856786) 2024-10-20T15:06Z [---] followers, [--] engagements
"I'm figuring out how to properly shutdown the NodeSDK when using @LangChainAI's new @opentelemetry tracing for LangSmith in a Serverless environment like Lambda. It loos like a graceful shutdown for Lambda is the recommend approach: Here's an example until the official docs drop https://t.co/JoJEAzRLwm Here's an example until the official docs drop https://t.co/JoJEAzRLwm"
[X Link](https://x.com/zirkelc_/status/1850884650228502598) 2024-10-28T12:57Z [---] followers, [--] engagements
"AWS uses the graceful shutdown in their own examples of @opentelemetry for Node.js on Lambda https://github.com/aws-observability/aws-otel-community https://github.com/aws-observability/aws-otel-community"
[X Link](https://x.com/zirkelc_/status/1850884652656943132) 2024-10-28T12:57Z [---] followers, [--] engagements
"However it looks like this feature is only available if you use Lambda Extensions such as Lambda Insights: https://x.com/zirkelc_/status/1850204982726816006 https://x.com/zirkelc_/status/1850204982726816006"
[X Link](https://x.com/zirkelc_/status/1850884654833819979) 2024-10-28T12:57Z [---] followers, [--] engagements
"As an alternative I created a simple Middy middleware to start and stop the NodeSDK before and after each Lambda invocation. I assume that instantiating the SDK on each request will incur some overhead compared to outside the handler but I need to do some profiling to see how much"
[X Link](https://x.com/zirkelc_/status/1850884656729559147) 2024-10-28T12:57Z [---] followers, [--] engagements
"@Hacubu @vercel @__dqbd Thanks for pinging me I did some tests on Lambda today. I have used sdk.shutdown() to flush the logs after every request but I'll check if client.awaitPendingTraceBatches() works as well. https://x.com/zirkelc_/status/1850884650228502598 I'm figuring out how to properly shutdown the NodeSDK when using @LangChainAI's new @opentelemetry tracing for LangSmith in a Serverless environment like Lambda. It loos like a graceful shutdown for Lambda is the recommend approach: https://t.co/qNZscago3K https://x.com/zirkelc_/status/1850884650228502598 I'm figuring out how to"
[X Link](https://x.com/zirkelc_/status/1850956245722714606) 2024-10-28T17:42Z [---] followers, [--] engagements
"@romainlanz @nodejs Cool I didnt know that By the way the screenshot looks stunning. Which tool do you use"
[X Link](https://x.com/zirkelc_/status/1857094937130467524) 2024-11-14T16:15Z [---] followers, [----] engagements
"@ryanflorence You actually don't need an extension or node:test for this. vscode has a built-in javascript debug terminal that you can start from a launch.json for the current file. it wokrs with any js or ts file"
[X Link](https://x.com/zirkelc_/status/1864644136814387543) 2024-12-05T12:13Z [---] followers, [---] engagements
"Is there a VSCode extension like CodeSnap to take screenshots of code snippets but with built-in support for TypeScript TwoSlash comments https://github.com/microsoft/TypeScript-Website/tree/v2/packages/ts-twoslasher https://github.com/microsoft/TypeScript-Website/tree/v2/packages/ts-twoslasher"
[X Link](https://x.com/zirkelc_/status/1867849355224657944) 2024-12-14T08:29Z [---] followers, [--] engagements
"AWS Powertools for Lambda has released a new version that allows you to easily add custom functions. I have implemented a log buffering example for which I recently shared an RFC. https://dev.to/aws-builders/buffer-logs-and-flush-automatically-on-error-with-powertools-for-lambda-k1m https://dev.to/aws-builders/buffer-logs-and-flush-automatically-on-error-with-powertools-for-lambda-k1m"
[X Link](https://x.com/zirkelc_/status/1869359164038009114) 2024-12-18T12:28Z [---] followers, [--] engagements
"@mattpocockuk Any diff to your total-typescript config"
[X Link](https://x.com/zirkelc_/status/1873031583776817296) 2024-12-28T15:41Z [---] followers, [----] engagements
"@MarcKlingen Do you find a notably difference between o1 and o3"
[X Link](https://x.com/zirkelc_/status/1935288877402530116) 2025-06-18T10:49Z [---] followers, [--] engagements
"Bookmarklets are back 🔖 I've created Lambdalet for the AWS Lambda hackathon. It's an AI-powered bookmarking and read-it-later service. It saves any page you're reading into your own Notion database full text fully searchable zero fuss. Built for the AWS Lambda Hackathon"
[X Link](https://x.com/zirkelc_/status/1944247635763745031) 2025-07-13T04:08Z [---] followers, [--] engagements
"It uses a small JS snippet saved as a bookmark to POST the current page's HTML to an API Gateway. If a sites CSP blocks fetch the code falls back to an old-school form submit in a temp window. Simple trick but it works on most pages"
[X Link](https://x.com/zirkelc_/status/1944247638334882052) 2025-07-13T04:08Z [---] followers, [--] engagements
"Flow in a nutshell: [--] Lambda #1 uploads the HTML to S3 and queues requests [--] SQS FIFO for async processing and deduplication [--] Lambda #2 downloads HTML converts to Markdown extracts content via Bedrock and saves to Notion"
[X Link](https://x.com/zirkelc_/status/1944247640327180771) 2025-07-13T04:08Z [---] followers, [--] engagements
"It's so funny that we went from terminal interfaces to graphical interfaces and now back to interactive terminal interfaces"
[X Link](https://x.com/zirkelc_/status/1944981859328299318) 2025-07-15T04:46Z [---] followers, [--] engagements
"What if bring-your-own-keys (BYOK) will be a thing in open source. Your anthropic/openai/. keys are saved in your GitHub account. If you find an open issue and want it fixed you can decide to spend the "token usage" towards an agent fixing it"
[X Link](https://x.com/zirkelc_/status/1945048346537681035) 2025-07-15T09:10Z [---] followers, [--] engagements
"I added a markdown button to my blog to open a post in raw markdown. I had to create an API route in Next.js to return the markdown with appropriate headers. So the button switches from /posts/slug to /api/posts/slug.md"
[X Link](https://x.com/zirkelc_/status/1945139502592180495) 2025-07-15T15:12Z [---] followers, [--] engagements
"Original post: Markdown: https://zirkelc.dev/api/posts/flatten-array-of-arrays-using-jsonata-for-aws-step-functions.md https://zirkelc.dev/posts/flatten-array-of-arrays-using-jsonata-for-aws-step-functions https://zirkelc.dev/api/posts/flatten-array-of-arrays-using-jsonata-for-aws-step-functions.md https://zirkelc.dev/posts/flatten-array-of-arrays-using-jsonata-for-aws-step-functions"
[X Link](https://x.com/zirkelc_/status/1945139504567734686) 2025-07-15T15:12Z [---] followers, [--] engagements
"@ethanniser doesn't it simply launch the terminal with claude"
[X Link](https://x.com/zirkelc_/status/1945756798390042761) 2025-07-17T08:05Z [---] followers, [--] engagements
"I used Cursor to debug a nasty error on linux. Afterwards I asked it to summarise the entire conversation into a quick note and added it to Notion / my blog. Next time I can fetch the note as markdown and add it to the context https://x.com/zirkelc_/status/1945390346969514235 I found a way to serve the markdown-only page on the same path with a .md suffix /posts/slug = html version /posts/slug.md = markdown version I used Next.js middleware to intercept requests and return early. https://x.com/zirkelc_/status/1945390346969514235 I found a way to serve the markdown-only page on the same path"
[X Link](https://x.com/zirkelc_/status/1947624143228227634) 2025-07-22T11:45Z [---] followers, [--] engagements
"I can't keep up with all the .dot folders and different ways to define LLM rules and prompts Configuring Claude agents is extremely similar to Cursor's ".mdc" rules. Looks like the future of the configuration is frontmatter (I never would have guessed) https://t.co/ML4bQDcEZp Configuring Claude agents is extremely similar to Cursor's ".mdc" rules. Looks like the future of the configuration is frontmatter (I never would have guessed) https://t.co/ML4bQDcEZp"
[X Link](https://x.com/zirkelc_/status/1948671139250921747) 2025-07-25T09:06Z [---] followers, [--] engagements
"@paradite_ @_opencv_ I think AWS just invested into their own IDE Kiro https://kiro.dev/ https://kiro.dev/"
[X Link](https://x.com/zirkelc_/status/1948699296057930103) 2025-07-25T10:58Z [---] followers, [---] engagements
"@NoBackspaceCrew thanks for your article on Lambda cold starts so many new learnings packed into one article 🤯 I noticed you're using for measuring; I think Node.js performance might give you even more accurate numbers https://nodejs.org/api/perf_hooks.html#performancenow http://Date.now https://nodejs.org/api/perf_hooks.html#performancenow http://Date.now"
[X Link](https://x.com/zirkelc_/status/1948956448991375769) 2025-07-26T04:00Z [---] followers, [--] engagements
"TIL from @mhart that Lambda always uses at least two vCPU during cold starts regardless of the allocated memory"
[X Link](https://x.com/zirkelc_/status/1948964210462867518) 2025-07-26T04:30Z [---] followers, [--] engagements
"So essentially weve established that the init stage has the same performance as a [----] MB Lambda even if were only running a [---] MB one. https://hichaelmart.medium.com/shave-99-93-off-your-lambda-bill-with-this-one-weird-trick-33c0acebb2ea https://hichaelmart.medium.com/shave-99-93-off-your-lambda-bill-with-this-one-weird-trick-33c0acebb2ea"
[X Link](https://x.com/zirkelc_/status/1948964211901538419) 2025-07-26T04:30Z [---] followers, [--] engagements
"TIL you can use @entity.Attributes.Lambda.Function to group messages from multiple different log groups. Useful when you need to analyze cold starts from many Lambdas with a single cloudwatch query"
[X Link](https://x.com/zirkelc_/status/1949860319641157918) 2025-07-28T15:51Z [---] followers, [--] engagements
"Need to deploy some resources on azure and can't decide which IaC tool I should use: bicep terraform pulumi . I would love something as easy as serverless framework"
[X Link](https://x.com/zirkelc_/status/1950518209549062508) 2025-07-30T11:25Z [---] followers, [--] engagements
"@mattpocockuk IMO Tool Calling is the primitive operation that enables to build Agents. Agents are Tool Calls executed in loop with conditions to break"
[X Link](https://x.com/zirkelc_/status/1952028693557022995) 2025-08-03T15:28Z [---] followers, [---] engagements
"TIL you can use CMD+Z (undo) to delete a message you just sent in slack (aka unsend)"
[X Link](https://x.com/zirkelc_/status/1952348865765745048) 2025-08-04T12:40Z [---] followers, [--] engagements
"Looks like AGI will be built with TypeScript types 😀 We've long known that internally OpenAI uses a token-efficient typescript format describe available tools instead of the super bloated JSON schema other models use. And finally they've shared their serializer. I expect this to catch on with many future OSS models https://t.co/7Yc0XyqMlA We've long known that internally OpenAI uses a token-efficient typescript format describe available tools instead of the super bloated JSON schema other models use. And finally they've shared their serializer. I expect this to catch on with many future OSS"
[X Link](https://x.com/zirkelc_/status/1952997438186504494) 2025-08-06T07:37Z [---] followers, [--] engagements
"@Chikor_Zi Not really saw a few tweets of you about scraping Amazon results"
[X Link](https://x.com/zirkelc_/status/1953814533530591378) 2025-08-08T13:44Z [---] followers, [--] engagements
"@cramforce Regarding Lambda I guess this is something that could be solved through a graceful shutdown https://github.com/aws-samples/graceful-shutdown-with-aws-lambda https://github.com/aws-samples/graceful-shutdown-with-aws-lambda"
[X Link](https://x.com/zirkelc_/status/1956204859088163326) 2025-08-15T04:02Z [---] followers, [--] engagements
"I'm currently switching from json mode (via an output formatter tool call) to structured outputs but the model didn't generate reliable json I finally found the issue in this little warning at the end of the @aisdk docs OpenAI structured outputs only works with required fields. Using .optional() omits a fields from the required array while .nullable() keep the field required and forces the model choose between two types"
[X Link](https://x.com/zirkelc_/status/1956595618438160547) 2025-08-16T05:55Z [---] followers, [--] engagements
"OpenAI mentions this limitation in the docs already. They use a union type of string or null to emulate an optional property. I couldn't reproduce this json schema from a simple Zod z.union(z.string() z.null()) as this will generate the same schema as .nullable() By the way OpenAI's example seems to be wrong because the enum should include null as well https://platform.openai.com/docs/guides/structured-outputs#all-fields-must-be-required https://platform.openai.com/docs/guides/structured-outputs#all-fields-must-be-required"
[X Link](https://x.com/zirkelc_/status/1956595621273411720) 2025-08-16T05:55Z [---] followers, [--] engagements
"@TobiM I had similar thoughts at the beginning about CLI mode but using the model through the terminal feels more natural tbh"
[X Link](https://x.com/zirkelc_/status/1956724159221747861) 2025-08-16T14:26Z [---] followers, [--] engagements
"Someone from @ShopifyDevs or @ShopifyEng able to get me into the new beta for the Next-Gen Dev Platform https://shopify.dev/docs/beta/next-gen-dev-platform/shopify-app-dev https://shopify.dev/docs/beta/next-gen-dev-platform/shopify-app-dev"
[X Link](https://x.com/zirkelc_/status/1958088046324187428) 2025-08-20T08:45Z [---] followers, [---] engagements
"@martindonadieu @pavelsvitek_ @bunjavascript There are other examples like require(ESM) which were a really good thing and pushed Node into the right direction by supporting it as well"
[X Link](https://x.com/zirkelc_/status/1963979052659671092) 2025-09-05T14:54Z [---] followers, [--] engagements
"Working on the API for an retryable model for the @aisdk Inspired by the design of the AI SDK that let's us compose complex agents with simple primitives like stepWhen and stepCountIs(10) It should have a few primitives for specific retry scenarios like content filter and type validation errors Love model composability of the @aisdk I'm constantly plagued by the very sensitive content filter on Azure If a certain prompt triggers the filter I want to automatically switch the provider to OpenAI This fallback approach can literally be implemented in less than [--] LOC https://t.co/Uo1SXp2dNO Love"
[X Link](https://x.com/zirkelc_/status/1967156454311203240) 2025-09-14T09:20Z [---] followers, [----] engagements
"Schema mismatch errors happen frequently with weaker models like gpt-4o-mini I just learned that @aisdk exposes a repairText callback function to fix invalid json Then we can simply use jsonrepair to fix it jsonrepair just saved my bacon Generating structured outputs from Haiku but kept getting invalid JSON back. Sticking in a jsonrepair step put the success rate back to 100%. Even the image below is considered valid: https://t.co/4XqeRH1qJN jsonrepair just saved my bacon Generating structured outputs from Haiku but kept getting invalid JSON back. Sticking in a jsonrepair step put the success"
[X Link](https://x.com/zirkelc_/status/1973972369451684093) 2025-10-03T04:44Z [---] followers, 43.8K engagements
"ai-retry for @aisdk now supports embedding models If your embeddings fail due to timeouts or other errors you can now easily switch to another provider Fallbacks should always use same model across different providers like OpenAI and Azure or Anthropic and AWS Bedrock"
[X Link](https://x.com/zirkelc_/status/1975137385865486364) 2025-10-06T09:53Z [---] followers, [---] engagements
"@uria_franko @aisdk Thats exactly what I said in my last sentence 😅 OpenAI embedding models are available on Azure and Anthropics on AWS. As you can see in the screenshot it is only switching the provider not the model"
[X Link](https://x.com/zirkelc_/status/1975488224383672831) 2025-10-07T09:07Z [---] followers, [--] engagements
"The @aisdk does not have an example for AWS Lambda yet Here's how you can stream text from your Lambda function"
[X Link](https://x.com/zirkelc_/status/1975509184423571473) 2025-10-07T10:31Z [---] followers, [--] engagements
"Working on getting the @aisdk UI stream to work on Lambda It's actually way easier that I initially thought: - use toUIMessageStreamResponse() - copy the UI headers to the response stream - pipe the UI stream via Node.js pipeline() to Lambda's response stream"
[X Link](https://x.com/zirkelc_/status/1975854199650054550) 2025-10-08T09:22Z [---] followers, [----] engagements
"@lgrammel @nicoalbanese10 @aisdk Unfortunately Lambda doesn't work with Node's ServerResponse so we can't pipeUIMessage. directly. But we actually only need the headers from the ServerResponse object so we can simply add them statically and use result.fullStream"
[X Link](https://x.com/zirkelc_/status/1975953844078264607) 2025-10-08T15:58Z [---] followers, [--] engagements
"Vitest v4 is still in beta here's how you can try it: pnpm add vitest@beta" https://main.vitest.dev/api/expect.html#expect-schemamatching https://main.vitest.dev/api/expect.html#expect-schemamatching"
[X Link](https://x.com/zirkelc_/status/1978472114169545010) 2025-10-15T14:44Z [---] followers, [---] engagements
"Super interesting content about the performance of mutable. vs. immutable JS operations when dealing with very large arrays. A fun deep dive into the performance characteristics of rendering a large grouped data set in Tanstack Table and a PR leading to a 1000x speed up https://t.co/ma163CnSgR A fun deep dive into the performance characteristics of rendering a large grouped data set in Tanstack Table and a PR leading to a 1000x speed up https://t.co/ma163CnSgR"
[X Link](https://x.com/zirkelc_/status/1682033843279376387) 2023-07-20T14:24Z [---] followers, [--] engagements
"@Jaaneek @trpcio @tan_stack @DrizzleORM @nextjs @vercel @lmsqueezy @shadcn Do you mind to share the links to PRs when youve submitted them"
[X Link](https://x.com/zirkelc_/status/1763825397878165696) 2024-03-02T07:15Z [---] followers, [--] engagements
"@mattpocockuk I've created chunkdown a tree-based markdown text splitter focusing on semantically dense chunks. You can even visualize the chunks against various LangChain splitters to compare the results https://github.com/zirkelc/chunkdown https://github.com/zirkelc/chunkdown"
[X Link](https://x.com/zirkelc_/status/1978835054563323982) 2025-10-16T14:46Z [---] followers, [----] engagements
"I created Chunkdown a text splitter implemented in TypeScript and optimized for markdown. I've been using LangChain's splitter which is very good but I think focusing on markdown we can use its hierarchical structure to create semantically meaningful chunks. Chunkdown parse markdown into an abstract syntax tree (AST) and operates on nodes instead of using regexes on raw text. Chunkdown is built around a few core ideas: Anyone know any TS utility library for RAG I mean chunking algorithms documented in TypeScript. Langchain has them but all the docs are in Python. Anyone know any TS utility"
[X Link](https://x.com/zirkelc_/status/1980598868514337212) 2025-10-21T11:35Z [---] followers, [---] engagements
"I'm thinking about allowing to override @aisdk providerOptions during retry so you can change common settings like reasoning effort or switching service tiers Here's an example switching @GroqInc service tier However I am not sure if this is useful"
[X Link](https://x.com/zirkelc_/status/1980642740640866806) 2025-10-21T14:30Z [---] followers, [---] engagements
"It would be nice if we had benchmarks for chunking algorithms like we have for LLMs. For example you have one document and let an LLM create the optimal chunks. Next you run different chunking algorithms on this document and embed every chunk. Finally you compare the distance of every chunk (from every algorithm) with the optimal chunks created by the LLM. The winning algorithm is the one that produces the most chunks closest to the optimal chunks"
[X Link](https://x.com/zirkelc_/status/1984279310157459702) 2025-10-31T15:20Z [---] followers, [--] engagements
"The best part is that the output type is inferred as the union of all yielded values The @aisdk is really a piece of art Preliminary tool results are incredible You can just yield things @aisdk handles the rest https://t.co/KRUqEbqaYS Preliminary tool results are incredible You can just yield things @aisdk handles the rest https://t.co/KRUqEbqaYS"
[X Link](https://x.com/zirkelc_/status/1984942068528017833) 2025-11-02T11:14Z [---] followers, 12.9K engagements
"I finished a big @aisdk refactoring for our chat switching from multiple generateText calls to a single streamText with multiple tools I had to overcome a few hurdles since I'm running on Lambda with TRPC which makes the entire streaming part a bit more complex"
[X Link](https://x.com/zirkelc_/status/1986012939212542226) 2025-11-05T10:09Z [---] followers, [---] engagements
"When you run @aisdk on Lambda with open telemetry integration you can easily add valuable metadata The Lambda runtime exposes the function name region and x-ray trace id as environment variables Observability platforms can then filter and group your traces by these values"
[X Link](https://x.com/zirkelc_/status/1986771013304988053) 2025-11-07T12:21Z [---] followers, [----] engagements
"OpenAI structured outputs don't support optional properties It took me a while to figure out why I was getting schema mismatch errors from @aisdk despite the schema being super simple If you're using Zod you need to use nullable() instead of optional() The important difference is that the resulting JSON schema contains the required key which OpenAI needs"
[X Link](https://x.com/zirkelc_/status/1988159445776347621) 2025-11-11T08:18Z [---] followers, 14K engagements
"Link to OpenAI docs: https://platform.openai.com/docs/guides/structured-outputs#all-fields-must-be-required https://platform.openai.com/docs/guides/structured-outputs#all-fields-must-be-required"
[X Link](https://x.com/zirkelc_/status/1988159450176496117) 2025-11-11T08:18Z [---] followers, [---] engagements
"@nicoalbanese10 @aisdk The reason it was difficult to find the actual root cause is that OpenAI returns an incomplete JSON result and 'content-filter' as finish reason In my example I used simply set the name key on the schema to optional"
[X Link](https://x.com/zirkelc_/status/1988209473832579357) 2025-11-11T11:37Z [---] followers, [---] engagements
"Here's a simple type guard to check if a Zod schema is valid for OpenAI You can wrap it around your schema when passing it to @aisdk generate calls with structured outputs It will show an error if the provided schema contains optional instead of nullable properties Link below OpenAI structured outputs don't support optional properties It took me a while to figure out why I was getting schema mismatch errors from @aisdk despite the schema being super simple If you're using Zod you need to use nullable() instead of optional() The important https://t.co/hcZ4fudhZO OpenAI structured outputs don't"
[X Link](https://x.com/zirkelc_/status/1988519094086217926) 2025-11-12T08:07Z [---] followers, [----] engagements
"TypeScript Playground to copy:"
[X Link](https://x.com/zirkelc_/status/1988519096963522739) 2025-11-12T08:07Z [---] followers, [--] engagements
"I think here's some potential to improve the DX when using OpenAI structured outputs with @aisdk If a given schema is valid for OpenAI could validated twice: - at compile-time through TypeScript types - at run-time through JSON schema validation OpenAI structured outputs don't support optional properties It took me a while to figure out why I was getting schema mismatch errors from @aisdk despite the schema being super simple If you're using Zod you need to use nullable() instead of optional() The important https://t.co/hcZ4fudhZO OpenAI structured outputs don't support optional properties It"
[X Link](https://x.com/zirkelc_/status/1988902877562102233) 2025-11-13T09:32Z [---] followers, [---] engagements
"Could you give me an example regarding experimental_context I think prepareStep (also ctx-zip) will change the input to the model but that should be kept as-is. I'm looking for a way filter out parts that should not be visible to the client. Maybe piping the UI stream through a TransformStream similar to textStream only yields text parts"
[X Link](https://x.com/zirkelc_/status/1988928055373385981) 2025-11-13T11:12Z [---] followers, [--] engagements
"Client side tools in @aisdk Has anyone found a reliable way to generate the message explaining a client-side tool call In my experience the model generates often a tool call with a message (tool input) AND a second text message. I tried to tune it so it would only generate one message but haven't found reliable way yet"
[X Link](https://x.com/zirkelc_/status/1989705286643228899) 2025-11-15T14:41Z [---] followers, [----] engagements
"No no what I mean: the model generates a client-side tool call with a message as input param to show on the client e.g. asking for confirmation. But often it also generates a second message (part.type=text) also asking for confirmation. That means you the client it renders two almost identical messages: [--]. tool-input message [--]. text message"
[X Link](https://x.com/zirkelc_/status/1989707360869244935) 2025-11-15T14:49Z [---] followers, [---] engagements
"@red___square @aisdk Thanks that might be a good idea"
[X Link](https://x.com/zirkelc_/status/1989924463522300155) 2025-11-16T05:12Z [---] followers, [--] engagements
"I built an extension to open a file from S3 in the fewest possible clicks: P "S3: Open File" "s3://." Enter Works with any s3:// or https:// URI. Uses your local AWS credentials so no complex setup"
[X Link](https://x.com/zirkelc_/status/1989948339690115428) 2025-11-16T06:47Z [---] followers, [--] engagements
"Working on an @aisdk filter stream for selective streaming of UI message parts by type This allows you to skip streaming certain parts to the client like tool calls to your database The part types are inferred from the UI message and are fully type-safe"
[X Link](https://x.com/zirkelc_/status/1990718694264070640) 2025-11-18T09:48Z [---] followers, 10.7K engagements
"Introducing ai-filter-stream for @aisdk Filter out certain UI message parts like tool calls that should not be visible to the client Full type-safe with message parts inferred from your tools and data schema Working on an @aisdk filter stream for selective streaming of UI message parts by type This allows you to skip streaming certain parts to the client like tool calls to your database The part types are inferred from the UI message and are fully type-safe https://t.co/pr8rGtWrdy Working on an @aisdk filter stream for selective streaming of UI message parts by type This allows you to skip"
[X Link](https://x.com/zirkelc_/status/1991097498728063321) 2025-11-19T10:53Z [---] followers, [----] engagements
"I don't know why but grok-4-fast-non-reasoning constantly has problems generating structured output. Far worse than gpt-4.1-mini even though the schema is quite simple Using it with @aisdk are there any ways to optimize it"
[X Link](https://x.com/zirkelc_/status/1991525081663860838) 2025-11-20T15:12Z [---] followers, [---] engagements
"@red___square @aisdk Was using the default values from AI SDK have to check"
[X Link](https://x.com/zirkelc_/status/1991531921223094376) 2025-11-20T15:39Z [---] followers, [--] engagements
"Amazon S3 doesn't support TTL to delete objects like DynamoDB does for items S3 has a concept of lifecycle rules to expire certain objects matching e.g. a key prefix or tags I found out about way to replicate the TTL behavior somehow by using TagFilters You define multiple rules for various expiration durations like [--] [--] and [--] days each matching the same tag key but with different tag value It's still limited to full days but gives you some flexibility"
[X Link](https://x.com/zirkelc_/status/1991851218361065586) 2025-11-21T12:48Z [---] followers, [---] engagements
"The tools description format I'm currently using: - short description - when to use this tool - when NOT to use this tool - usage notes I adopted this format in a claude code prompt leak (may be outdated). I'm thinking whether it would be more effective to keep the tool description shorter and move some parts into the actual system prompt. What's the experience like on this topic"
[X Link](https://x.com/zirkelc_/status/1992114667263533196) 2025-11-22T06:15Z [---] followers, [---] engagements
"@red___square Thats also what Im leaning towards to at the moment"
[X Link](https://x.com/zirkelc_/status/1992188546765947362) 2025-11-22T11:08Z [---] followers, [--] engagements
"Chunkdown now compacts markdown tables thanks to a one-line PR Markdown tables can be pretty formatted with additional dashes and spaces to align the columns vertically This makes them easier for humans to read but wastes tokens and embedding space on useless characters Since chunks should be optimized for embedding models we can sacrifice readability for less tokens and better embeddings This is yet another advantage of an AST-based splitter over a simple recursive character splitter: the markdown input does not necessarily need to match the markdown output"
[X Link](https://x.com/zirkelc_/status/1992520261325771153) 2025-11-23T09:07Z [---] followers, [----] engagements
"I should have mentioned that this is still valid markdown. You can paste it into GitHub and it will render a table. The GFM spec that defines markdown tables states: The delimiter row consists of cells whose only content are hyphens (-) and optionally a leading or trailing colon (:) or both to indicate left right or center alignment respectively. https://github.github.com/gfm/#delimiter-row https://github.github.com/gfm/#delimiter-row"
[X Link](https://x.com/zirkelc_/status/1992629362772918545) 2025-11-23T16:20Z [---] followers, [---] engagements
"I added a comparison option to my chunk visualizer You can add multiple text splitter libraries to compare the chunks side-by-side Currently it supports chunkdown langchain and llamaindex. Mastra's text splitter is implemented but not usable due to a browser bug"
[X Link](https://x.com/zirkelc_/status/1993241068490703171) 2025-11-25T08:51Z [---] followers, [---] engagements
"I had a few problems with grok-4-fast generating structured outputs. One trick that seems to work is embedding the schema as TypeScript type in the prompt. I think it helps because the TS type more closely mirrors what the model actually generates. With a package like zod-to-ts you can stringify the Zod schema to keep the type in sync"
[X Link](https://x.com/zirkelc_/status/1993273466770841649) 2025-11-25T11:00Z [---] followers, [---] engagements
"I've released the beta version of ai-retry that supports @aisdk v6 It mainly consist of type changes for the new language model embedding model specs It's available on the v6 branch on github and beta tag on npm npm install ai-retry@beta"
[X Link](https://x.com/zirkelc_/status/1993363834191458557) 2025-11-25T16:59Z [---] followers, [----] engagements
"@ravisojitra_ @aisdk I just released a new version that supports @aisdk v6 with language model v3 https://x.com/zirkelc_/status/1993363834191458557s=20 I've released the beta version of ai-retry that supports @aisdk v6 It mainly consist of type changes for the new language model embedding model specs It's available on the v6 branch on github and beta tag on npm npm install ai-retry@beta https://x.com/zirkelc_/status/1993363834191458557s=20 I've released the beta version of ai-retry that supports @aisdk v6 It mainly consist of type changes for the new language model embedding model specs It's"
[X Link](https://x.com/zirkelc_/status/1993364165344309572) 2025-11-25T17:00Z [---] followers, [--] engagements
"Anthropic sends overloaded errors in streaming as the first chunk so that makes it hard to catch and retry ai-retry for @aisdk can handle this kind of error because it inspects the stream and silently retries it if no content has been streamed to the client anthropic api be like https://t.co/aj4ra55kiE anthropic api be like https://t.co/aj4ra55kiE"
[X Link](https://x.com/zirkelc_/status/1993934963637387636) 2025-11-27T06:48Z [---] followers, [----] engagements
"I was asked to support retrying requests that ended with finish reason unknown I never had that issue is this a common issue @aisdk users Since result-based retries are already supported for generation calls you can already retry a request for a particular finish-reason"
[X Link](https://x.com/zirkelc_/status/1994270345369395505) 2025-11-28T05:01Z [---] followers, [---] engagements
"I worked on a PR to support the AI Gateway natively in ai-retry with full type-safety You can pass a model string and it will automatically infer it as a language model Behind the scenes it uses the gateway provider from the @aisdk package to resolve it to a model instance"
[X Link](https://x.com/zirkelc_/status/1994398774270345530) 2025-11-28T13:31Z [---] followers, [----] engagements
"Chunkdown has split rules to control if a markdown element is split For example links are never split by default regardless of their size because splitting an URL will create useless chunks Chunkdown uses content sizing and considers only visible rendered text for length calc"
[X Link](https://x.com/zirkelc_/status/1995535031083631007) 2025-12-01T16:46Z [---] followers, [---] engagements
"Introducing ai-stream-utils for @aisdk A type-safe map and flatMap function for your UI message stream to filter and transform chunks while streaming to the client Map operates on chunks while flatMap buffers all chunks until the part is complete to give you more control"
[X Link](https://x.com/zirkelc_/status/1996151387105735150) 2025-12-03T09:35Z [---] followers, [----] engagements
"@mattpocockuk @nicoalbanese10 @alexdotjs @aisdk I thought so but this is not available on createUIMessageStream() https://ai-sdk.dev/docs/reference/ai-sdk-ui/create-ui-message-stream https://ai-sdk.dev/docs/reference/ai-sdk-ui/create-ui-message-stream"
[X Link](https://x.com/zirkelc_/status/1996220997872062845) 2025-12-03T14:12Z [---] followers, [--] engagements
"My favorite trick when using overloaded functions in typescript with varying number of arguments Instead of defining the second argument as thisOrThatType I use rest params to collect all args in an array Then I can use the number of args as a switch to narrow down the type"
[X Link](https://x.com/zirkelc_/status/1996638875016728914) 2025-12-04T17:52Z [---] followers, [---] engagements
"@lgrammel I had some trouble finding it in the anthropic docs Is this something you would "patch" for providers not having this API or wait until the models API support"
[X Link](https://x.com/zirkelc_/status/1996931781983871256) 2025-12-05T13:16Z [---] followers, [--] engagements
"@getpochi @aisdk It's reading from the original UI stream returned by streamText() so it depends on the AI SDK behavior. I never had this issue so not idea how it is handled by default"
[X Link](https://x.com/zirkelc_/status/1996991487335154023) 2025-12-05T17:14Z [---] followers, [--] engagements
"@ravisojitra_ @aisdk That's probably not possible because it only has access to the chunks / parts. What you need is probably custom data parts so you would write a data part in each execute function: https://ai-sdk.dev/docs/ai-sdk-ui/streaming-data https://ai-sdk.dev/docs/ai-sdk-ui/streaming-data"
[X Link](https://x.com/zirkelc_/status/1996992361285709853) 2025-12-05T17:17Z [---] followers, [---] engagements
"TypeScript monorepo IMO the most conveniet monorepo setup without needing a build step: - pnpm workspaces and install from workspace:* - internal packages that export *.ts files - (optional) pnpm publishConfig to change exports to *.js on publishing How do you set up monorepos and keep TypeScript fast without requiring local builds all the time I'm very confused Let's say you are building a monorepo with multiple packages and an example app within the monorepo that consumes the packages. The packages have a build step How do you set up monorepos and keep TypeScript fast without requiring"
[X Link](https://x.com/zirkelc_/status/1998706376361783748) 2025-12-10T10:48Z [---] followers, 72K engagements
"@cnakazawa This post might be relevant it also uses custom conditions https://x.com/colinhacks/status/1796595123595378822s=20 new blog post 👇 it breaks down a few approaches to configuring "live types" in TypeScript monorepos. you should never need to run build while developing [--]. tsconfig paths [--]. custom export conditions [--]. publishConfig (*my recommended solution) https://t.co/sf6F3CfcsQ https://x.com/colinhacks/status/1796595123595378822s=20 new blog post 👇 it breaks down a few approaches to configuring "live types" in TypeScript monorepos. you should never need to run build while"
[X Link](https://x.com/zirkelc_/status/1998712341429391643) 2025-12-10T11:12Z [---] followers, [----] engagements
"Yes there's some truth to that even though I think we already have a somewhat coupling of your project and package manager due to lockfiles (pnpm lock bun.lock yarn .) and scripts (pnpm run x bun test .). And we can guard against using the wrong package manager by using the packageManager field in package.json"
[X Link](https://x.com/zirkelc_/status/1999121952217145612) 2025-12-11T14:19Z [---] followers, [---] engagements
"@murshudoff I just released v3 supporting breadcrumbs: https://x.com/zirkelc_/status/1999371007384031568s=20 Chunk breadcrumbs Chunkdown now collects breadcrumbs for each chunk it splits In a hierarchical markdown document with multiple nesting levels each chunk contains an array of parent headings This can provide additional context when embedding chunks https://t.co/k1LZUniOSQ https://x.com/zirkelc_/status/1999371007384031568s=20 Chunk breadcrumbs Chunkdown now collects breadcrumbs for each chunk it splits In a hierarchical markdown document with multiple nesting levels each chunk contains"
[X Link](https://x.com/zirkelc_/status/1999371991028043879) 2025-12-12T06:53Z [---] followers, [--] engagements
"@ravisojitra_ Even deploying to Vercel you can use a monorepo and one package is deployed to vercel and the others somewhere else IMO turborepo is always a good choice but if you only have a few packages you can use just use pnpm run -r https://vercel.com/docs/monorepos#add-a-monorepo-through-the-vercel-dashboard https://vercel.com/docs/monorepos#add-a-monorepo-through-the-vercel-dashboard"
[X Link](https://x.com/zirkelc_/status/1999454961256865954) 2025-12-12T12:23Z [---] followers, [--] engagements
"Protect code blocks from splitting Chunkdown now supports split rules for fenced code blocks and inline code Splitting code into meaningful chunks is usually not needed for most RAG pipelines With this setting you can avoid useless code chunks"
[X Link](https://x.com/zirkelc_/status/2000847712884068755) 2025-12-16T08:37Z [---] followers, [---] engagements
"My current opinionated set up for @aisdk tools is: - define interface for all tools with common fields (tenant session user.) and ui stream writer - extract each tool into its own file - coupling of tool name and tool (useful for tool accuracy evals) - one tool set function @zirkelc_ @aisdk Extracting tools into createToolSet is nice because it forces you to think in capabilities instead of scattered functions. Curious how you handle per-request tool config like rate limits or multi-tenant scopes inside that pattern without leaking it all over the UI types. @zirkelc_ @aisdk Extracting tools"
[X Link](https://x.com/zirkelc_/status/2001211542767878549) 2025-12-17T08:43Z [---] followers, [----] engagements
"Using Context in Tools The @aisdk provides an experimental context option to pass arbitrary values from generate/stream to the tools The context is of type unknown and must be casted but this could potentially be typed with typescript module augmentation @zirkelc_ @aisdk You can use the experimental context to access the writer and tenant from within the execute function @zirkelc_ @aisdk You can use the experimental context to access the writer and tenant from within the execute function"
[X Link](https://x.com/zirkelc_/status/2001575625396551986) 2025-12-18T08:49Z [---] followers, [----] engagements
"Repair invalid JSON output I can't get Grok to reliably return JSON-only for structured outputs It often returns the JSON object followed by an explanation what it generated Using jsonrepair alone didn't work but a final check on start and end braces works wonders"
[X Link](https://x.com/zirkelc_/status/2001926616247931390) 2025-12-19T08:04Z [---] followers, [----] engagements
"@JannikWempe I usually skip the LLM for fixing the invalid output and instead switch to a more powerful model and repeat the request"
[X Link](https://x.com/zirkelc_/status/2001968743740846506) 2025-12-19T10:51Z [---] followers, [--] engagements
"Publishing npm packages My currently favored tooling for bundle and publishing npm packages: - tsdown: bundle esm/cjs updates exports and runs attw and publint - pkg-pr-new: publishes previews for PRs and commits - release-please: creates release PRs and changelog"
[X Link](https://x.com/zirkelc_/status/2002398199089123602) 2025-12-20T15:18Z [---] followers, [----] engagements
"Expanding @aisdk UI chunks and parts Both map() and flatMap() now support returning an array of chunks or parts This is useful for use cases like buffering chunks (eg. smooth streaming) or splitting a part into multiple parts Example: split tool-call into multiple parts"
[X Link](https://x.com/zirkelc_/status/2003065481570238825) 2025-12-22T11:30Z [---] followers, [----] engagements
"@tobi ShopifyQL is great Is there a reason it doesnt support ISO datetime conditions and instead uses offsets like -12h -3d etc"
[X Link](https://x.com/zirkelc_/status/2003400124010299814) 2025-12-23T09:39Z [---] followers, [---] engagements
"My preferred workflow when upgrading to a new major version like @aisdk v6: Start your coding agent in **plan mode** and give it the URL of the change log as input. It will search all changed APIs in your codebase and show you what needs to be refactored and how Sometimes the default behavior of an API has changed like for example the provider azure('model') now uses the Response instead of Chat completion API by default In this case the coding agent will help you infer the right upgrading path based on your usage like switching to This gives you insight into the impact of the upgrade before"
[X Link](https://x.com/zirkelc_/status/2003440632832864577) 2025-12-23T12:20Z [---] followers, [----] engagements
"Some people seem to think you have to host on vercel to use the @aisdk on the frontend and backend But you can easily run it on any other backend (e.g. Lambda) and even use TRPC for your API and streaming It only takes a couple of lines to use TRPC with useChat in the client"
[X Link](https://x.com/zirkelc_/status/2005964583039562093) 2025-12-30T11:30Z [---] followers, 23.5K engagements
"@pasupol1x @aisdk In regards to AI SDK or in general Im running on Lambda (in streaming mode) which is now well supported by TRPC and even API Gateway recently. The DX is superb"
[X Link](https://x.com/zirkelc_/status/2006339192859849044) 2025-12-31T12:18Z [---] followers, [--] engagements
"@JannikWempe Let me know when youre around the Mannheim area. Would love to chat about AWS and Shopify stuff 🙌🏻"
[X Link](https://x.com/zirkelc_/status/2006339738324906186) 2025-12-31T12:20Z [---] followers, [--] engagements
"Interesting idea for resumable LLM streams on Lambda: Mount EFS shared across all instances Lambda streams from LLM and tees it: write to EFS and stream to client If client disconnects and needs to resume the ongoing stream new Lambda reads from shared file at byte offset"
[X Link](https://x.com/zirkelc_/status/2007044206670614685) 2026-01-02T11:00Z [---] followers, [---] engagements
"I rarely see code with await using despite being available for some time It automatically disposes resources when they go out of scope like closing database connections after the function ends This is especially useful on Lambda where hanging connections are a common issue"
[X Link](https://x.com/zirkelc_/status/2007073017323774268) 2026-01-02T12:54Z [---] followers, 31K engagements
"@tobias_petry Good to know. Since it's available since TS [---] did TS polyfill it before"
[X Link](https://x.com/zirkelc_/status/2007317945467490808) 2026-01-03T05:07Z [---] followers, [---] engagements
"@Sung_Leveling TypeScript will polyfill for target = ES2024 https://www.typescriptlang.org/play/#code/GYVwdgxgLglg9mABBATgUwIZTQJTQZzhBQjQAowMBbNALkXyhRjAHMBKRAbwChFkEhADZoAdELisyAAwCCEAI4gY6ACb0AJF0o0AvtPYBuHn0TooxJL378daADSn+GfAE9IiANoBlV1QBGcEKiLu4QACIw+AAOcPhoALpknNY2-BCCQWISUtKRMXEsrJra1Gj6Rk42GADuGDBQiGBoNYgACihwVFHkZOjCAG5onAC8AHwMaFAAKjA0RFB9BEFD9ogAjAAMm+yVaemZIuKSMvmx8eqIWnYVxmm6jvy6xromoR6gkLAIiFT1YMluKYMmBhNkTtIAEJoYBwdCIWr1RogfBFAx3BF1BqIFFFMzLYikRAjZDoLC4AkkcjSKiuPCEQlodHAw7g3IAVVRbHxDKpJX6RCpohuzIOoKyx1yAFEwKpEHBgAwMtEmZVXjw-ixkoYgA"
[X Link](https://x.com/zirkelc_/status/2007322449923461361) 2026-01-03T05:25Z [---] followers, [--] engagements
"@tobias_petry I verified it TypeScript added helpers for dispose for targets = ES2024 https://www.typescriptlang.org/play/#code/GYVwdgxgLglg9mABBATgUwIZTQJTQZzhBQjQAowMBbNALkXyhRjAHMBKRAbwChFkEhADZoAdELisyAAwCCEAI4gY6ACb0AJF0o0AvtPYBuHn0TooxJL378daADSn+GfAE9IiANoBlV1QBGcEKiLu4QACIw+AAOcPhoALpknNY2-BCCQWISUtKRMXEsrJra1Gj6Rk42GADuGDBQiGBoNYgACihwVFHkZOjCAG5onAC8AHwMaFAAKjA0RFB9BEFD9ogAjAAMm+yVaemZIuKSMvmx8eqIWnYVxmm6jvy6xromoR6gkLAIiFT1YMluKYMmBhNkTtIAEJoYBwdCIWr1RogfBFAx3BF1BqIFFFMzLYikRAjZDoLC4AkkcjSKiuPCEQlodHAw7g3IAVVRbHxDKpJX6RCpohuzIOoKyx1yAFEwKpEHBgAwMtEmZVXjw-ixkoYgA"
[X Link](https://x.com/zirkelc_/status/2007322879852212534) 2026-01-03T05:27Z [---] followers, [---] engagements
"Some people mention that await using is not supported by Node.js yet Here's a quick summary with links in the reply: Explicit resource management (ERM) was added in V8 v13.6 and it landed in Node.js v24 (May 2025) TypeScript introduced await using in TS v5.2 (August 2023) ESBuild supports ERM since v0.18.7 (June 2023) I verified it if you're compiling TS with a target = ES2024 TS automatically adds dispose helper functions to polyfill the behavior ESBuild also emits dispose helper functions depending on the target So I guess it's fair to say it depends how you run/compile your TS code - tsc:"
[X Link](https://x.com/zirkelc_/status/2007354984258580832) 2026-01-03T07:34Z [---] followers, [----] engagements
"TypeScript playground: https://www.typescriptlang.org/play/#code/GYVwdgxgLglg9mABBATgUwIZTQJTQZzhBQjQAowMBbNALkXyhRjAHMBKRAbwChFkEhADZoAdELisyAAwCCEAI4gY6ACb0AJF0o0AvtPYBuHn0TooxJL378daADSn+GfAE9IiANoBlV1QBGcEKiLu4QACIw+AAOcPhoALpknNY2-BCCQWISUtKRMXEsrJra1Gj6Rk42GADuGDBQiGBoNYgACihwVFHkZOjCAG5onAC8AHwMaFAAKjA0RFB9BEFD9ogAjAAMm+yVaemZIuKSMvmx8eqIWnYVxmm6jvy6xromoR6gkLAIiFT1YMluKYMmBhNkTtIAEJoYBwdCIWr1RogfBFAx3BF1BqIFFFMzLYikRAjZDoLC4AkkcjSKiuPCEQlodHAw7g3IAVVRbHxDKpJX6RCpohuzIOoKyx1yAFEwKpEHBgAwMtEmZVXjw-ixkoYgA"
[X Link](https://x.com/zirkelc_/status/2007354986846663040) 2026-01-03T07:34Z [---] followers, [---] engagements
"Node.js v24 that upgraded V8 to enable ERM support: https://github.com/nodejs/node/releases/tag/v24.0.0 https://github.com/nodejs/node/releases/tag/v24.0.0"
[X Link](https://x.com/zirkelc_/status/2007354988671185306) 2026-01-03T07:34Z [---] followers, [---] engagements
"Node.js PR enabling ERM: https://github.com/nodejs/node/pull/58154 https://github.com/nodejs/node/pull/58154"
[X Link](https://x.com/zirkelc_/status/2007354990965449170) 2026-01-03T07:34Z [---] followers, [---] engagements
"TypeScript v5.2 added ERM in 2023: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html"
[X Link](https://x.com/zirkelc_/status/2007354992882266248) 2026-01-03T07:34Z [---] followers, [---] engagements
"TypeScript PR enabling ERM: https://github.com/microsoft/TypeScript/pull/54505 https://github.com/microsoft/TypeScript/pull/54505"
[X Link](https://x.com/zirkelc_/status/2007354994933268544) 2026-01-03T07:35Z [---] followers, [---] engagements
"@tobias_petry I searched through some links in this post: https://x.com/zirkelc_/status/2007354984258580832s=20 Some people mention that await using is not supported by Node.js yet Here's a quick summary with links in the reply: Explicit resource management (ERM) was added in V8 v13.6 and it landed in Node.js v24 (May 2025) TypeScript introduced await using in TS v5.2 (August 2023) https://t.co/myNQVK7HAe https://x.com/zirkelc_/status/2007354984258580832s=20 Some people mention that await using is not supported by Node.js yet Here's a quick summary with links in the reply: Explicit resource"
[X Link](https://x.com/zirkelc_/status/2007355161979797658) 2026-01-03T07:35Z [---] followers, [---] engagements
"New example: TRPC streaming mutations with @tan_stack query on the frontend The main purpose is demonstrating how to interrupt and resume an ongoing stream and auto-resume on page reload Its built agnostic so you could easily use @aisdk or something else on the backend"
[X Link](https://x.com/zirkelc_/status/2008147626706063401) 2026-01-05T12:04Z [---] followers, 10.1K engagements
"GitHub repo: https://github.com/zirkelc/react-query-trcp-streaming https://github.com/zirkelc/react-query-trcp-streaming"
[X Link](https://x.com/zirkelc_/status/2008147629369331993) 2026-01-05T12:04Z [---] followers, [---] engagements
"Buffer URL chunks during streaming Models will usually emit URLs in multiple chunks when streaming That means they might be invalid or incomplete when rendered on the client This example demonstrates how to buffer chunks containing URLs and only emit them when completed"
[X Link](https://x.com/zirkelc_/status/2008477433960284307) 2026-01-06T09:55Z [---] followers, [----] engagements
"I will expand this example with combinations of different tolling like AI SDK + TRPC on the backend and TanStack query on the frontend I think build your own useChat with stream and resume-stream might be beneficial for some folks New example: TRPC streaming mutations with @tan_stack query on the frontend The main purpose is demonstrating how to interrupt and resume an ongoing stream and auto-resume on page reload Its built agnostic so you could easily use @aisdk or something else on the backend https://t.co/H78RTT0N5m New example: TRPC streaming mutations with @tan_stack query on the"
[X Link](https://x.com/zirkelc_/status/2008857395158536412) 2026-01-07T11:05Z [---] followers, [----] engagements
"@EmmettMaher @lgrammel The Claude provider seems to support skills if that's what you meant: https://github.com/vercel/ai/pull/9597 https://github.com/vercel/ai/pull/9597"
[X Link](https://x.com/zirkelc_/status/2009239176424902872) 2026-01-08T12:22Z [---] followers, [--] engagements
"Good idea I'm wondering if using a random ID for the placeholder might cause some problems for stronger LLMs that recognize the ID is valid as for example an email For example I'd ask the LLM to generate a response in markdown like john@example.com(mailto:john@example.com) Using [---------] as placeholder might change the behavior too much so it generates a different response. However I'm not not sure about this just an assumption https://twitter.com/i/web/status/2009605144267149587 https://twitter.com/i/web/status/2009605144267149587"
[X Link](https://x.com/zirkelc_/status/2009605144267149587) 2026-01-09T12:36Z [---] followers, [--] engagements
"Google's Release Please is currently my favorite action for automating releases on GitHub - push or merge (PRs) into main triggers CI workflow which creates/updates a release PR - merging the release PR triggers the release workflow and publishes to npm + updates the changelog"
[X Link](https://x.com/zirkelc_/status/2010652987023384610) 2026-01-12T10:00Z [---] followers, [---] engagements
"One more helpful addition for Problem: Claude often defaults to web search when checking SDK implementations Fix: "When working with a library and you need to look at the code clone the repo to the temp directory" http://CLAUDE.md Here are my CLAUDE.md additions for making plan mode 10x better Before: unreadably long plans After: concise useful plans with followup questions https://t.co/di4N7UGiaB https://t.co/Wva1MZqLjy http://CLAUDE.md Here are my CLAUDE.md additions for making plan mode 10x better Before: unreadably long plans After: concise useful plans with followup questions"
[X Link](https://x.com/zirkelc_/status/2011108487359770888) 2026-01-13T16:10Z [---] followers, [---] engagements
"@brankopetric00 That's a typical trap. Always set the log retention for dev/prod. Do you use an IaC like Serverless Framework or CDK It's usually easy to set defaults for all functions for a stack"
[X Link](https://x.com/zirkelc_/status/2013297123681333721) 2026-01-19T17:06Z [---] followers, [---] engagements
"Sort of. The main purpose of this example is: [--]. to demonstrate how the AI SDK can be used in combination with TRPC on the server. The AI SDK is usually deployed on something like Vercel CloudFlare etc. where you deal with raw HTTP Request/Response objects. TRPC is a different transport layer that also brings type-saftey [--]. to test resumable stream. There are many examples of "AI SDK + X" but most of them lack the part how an ongoing stream can be resumed https://twitter.com/i/web/status/2013300210919735534 https://twitter.com/i/web/status/2013300210919735534"
[X Link](https://x.com/zirkelc_/status/2013300210919735534) 2026-01-19T17:19Z [---] followers, [---] engagements
"Actually that's also what I did: I tee the UI stream from the model the first stream is emitted to the client and the second goes into Redis. On resume I read from Redis and emit to the client. Btw the video feels slow because I've mocked the model and return each chunk with a 300ms delay 😅 https://twitter.com/i/web/status/2013555474688327698 https://twitter.com/i/web/status/2013555474688327698"
[X Link](https://x.com/zirkelc_/status/2013555474688327698) 2026-01-20T10:13Z [---] followers, [--] engagements
"@BraydenWilmoth @Cloudflare Getting ICQ vibes"
[X Link](https://x.com/zirkelc_/status/2013643791807259059) 2026-01-20T16:04Z [---] followers, [---] engagements
"@youyuxi Started using oxfmt and oxlint for my new projects. Is there a reason you decided to split lint and format unlike biome"
[X Link](https://x.com/zirkelc_/status/2014277437564035440) 2026-01-22T10:02Z [---] followers, [----] engagements
"Something I find extremely valuable when working with any tooling: quickly whip up a locally runnable demo to verify an idea or assumption For example the @aisdk already exports many useful utils: mock model simulated streaming iteratorstream conversion reading UI streams"
[X Link](https://x.com/zirkelc_/status/2014308060605436057) 2026-01-22T12:04Z [---] followers, [----] engagements
"New example for @trpcio + @aisdk: - TRPC streaming from an AI SDK UI message stream - resuming an ongoing stream after reload/disconnect - useChat with custom TRPC transport class The demo uses the resumable-stream package with an in-memory redis server"
[X Link](https://x.com/zirkelc_/status/2013219394457833494) 2026-01-19T11:58Z [---] followers, 19.8K engagements
"Retry on schema mismatch Weaker models often struggle with generating strict structured outputs (e.g. adhering to the JSON schema) Some common errors like missing braces trailing commas or JSON embedded in text can be auto-fixed (see my other posts) But when the model returns well-formatted JSON that simply doesn't match the schema we need to retry the request with a stronger model ai-retry for @aisdk now has a schemaMismatch retryable that checks if the result matches the defined schema It uses the schema from the original request and parses the result against this If it doesn't match it"
[X Link](https://x.com/zirkelc_/status/2016129814877339693) 2026-01-27T12:43Z [---] followers, [----] engagements
"New example: custom useChat with @tan_stack query The useChat hook from the @aisdk reimplemented with plain React Query to support streaming and resuming after reload/navigation It's built on my previous example and continues to use AI SDK and TRPC on the server"
[X Link](https://x.com/zirkelc_/status/2017194894364692556) 2026-01-30T11:15Z [---] followers, [---] engagements
"@SebastianB929 Yes I agree The Azure docs for non-OpenAI models are horrible - I couldn't really figure out if they support strict structured outputs and if they do if there's a difference between Cat Completions vs Responses API"
[X Link](https://x.com/zirkelc_/status/2016416324709232728) 2026-01-28T07:41Z [---] followers, [--] engagements
"The key part is readUIMessageStream: it takes the stream of UI chunks from streamText and parses it into a partial UI message Every new chunk arriving on the client triggers an update that can be rendered on the UI This makes rolling your own useChat super easy New example: custom useChat with @tan_stack query The useChat hook from the @aisdk reimplemented with plain React Query to support streaming and resuming after reload/navigation It's built on my previous example and continues to use AI SDK and TRPC on the server https://t.co/QyrqaMHrmI New example: custom useChat with @tan_stack query"
[X Link](https://x.com/zirkelc_/status/2018323654241665041) 2026-02-02T14:00Z [---] followers, [----] engagements
"@SebastianB929 I wanted to share an update on this: it turns out that Grok on Azure does not support structured outputs at all - none of the models. It's a bit misleading because Grok provided by XAI seems to support it. This table here show's that Grok only supports text as response format not JSON: I also verified it with a small example that Grok will consistently return additional text along a JSON text reponse"
[X Link](https://x.com/zirkelc_/status/2018640827312906258) 2026-02-03T11:00Z [---] followers, [--] engagements
"I will work on stop and resume for my next example Usually these two actions are mutually exclusive if you wire up an abort signal from client to server But I think the use case can be separated into two different categories: - the browser implicitly aborts due to page refresh/close - the user explicitly stops the generation The 2nd case of user-initiated abort should work with a dedicated stop endpoint @zirkelc_ @rauchg As far I remember there is an issue doing this with Vercel AI SDK where it can't distinguish from the user stopping signal and other type of abortion like exiting tab"
[X Link](https://x.com/zirkelc_/status/2019778582642307504) 2026-02-06T14:21Z [---] followers, [---] engagements
"@murshudoff Yes I think so. It includes the reasoning part with empty content so only the itemId in the provider metadata. Did you check on the server how the UI message looks like"
[X Link](https://x.com/zirkelc_/status/2020503351297966235) 2026-02-08T14:21Z [---] followers, [--] engagements
"@rvbhadja What Ive found so far is that you need to remove all parts when it contains reasoning. It may work to keep text parts and just remove the provider metadata so it has no reference to the reasoning part"
[X Link](https://x.com/zirkelc_/status/2020523788710871422) 2026-02-08T15:43Z [---] followers, [--] engagements
"npm finally got the UI it deserves with It looks amazing and shows all the information at a glance: downloads versions deps stars issues esm support . http://npmx.dev http://npmx.dev"
[X Link](https://x.com/zirkelc_/status/2017929957289099476) 2026-02-01T11:56Z [---] followers, 41.5K engagements
"I'm a bit obsessed with resumable streaming Here's another CLI example: - server calls streamText and persists stream in Redis - 1st client initiates the stream - 2nd client resumes the running stream quickly catches up and then runs in sync with the 1st client"
[X Link](https://x.com/zirkelc_/status/2018679665326493728) 2026-02-03T13:35Z [---] followers, 16.8K engagements
"Resumable streaming seems hard but most of the complexity was already solved by Vercel's package The rest can be implemented in roughly [--] lines I put the remaining logic into a reusable fn to copy-paste into my projects Then simply call it on send and resume endpoints I'm a bit obsessed with resumable streaming Here's another CLI example: - server calls streamText and persists stream in Redis - 1st client initiates the stream - 2nd client resumes the running stream quickly catches up and then runs in sync with the 1st client https://t.co/x7Dtd4qfh0 I'm a bit obsessed with resumable streaming"
[X Link](https://x.com/zirkelc_/status/2019051062934872485) 2026-02-04T14:11Z [---] followers, 13.8K engagements
"It already works with Upstash you only need to provide the TCP connection string (not HTTP) Use the client from redis or ioredis for pub/sub support Then check the data monitor on Upstash to see the chunks fly-by when the 2nd client connects @zirkelc_ do you have a good example of it working with upstash @zirkelc_ do you have a good example of it working with upstash"
[X Link](https://x.com/zirkelc_/status/2019336437720838258) 2026-02-05T09:04Z [---] followers, [----] engagements
"Has anyone figured out a reliable way to prune OpenAI messages with tool calls It looks like the stateful Responses API makes this nearly impossible due to the signing of messages"
[X Link](https://x.com/zirkelc_/status/2020491802860511713) 2026-02-08T13:35Z [---] followers, [---] engagements
"@franmoretti_ @gr2m Nice Yes polling is an alternative way to do it As we are already using Redis for resumable-stream I just followed the same pattern and created a separate stop channel to publish/subscribe the stop event"
[X Link](https://x.com/zirkelc_/status/2020877225516474531) 2026-02-09T15:07Z [---] followers, [---] engagements
"Can you help me understand this: I want to prune tool calls from previous turns to reduce the input token length. However just omitting a tool call often results in errors because the reasoning depends on it. Since reasoning items from previous turns are discarded anyway is it possible to inline the tool results without item_reference so there is not relationship to reasoning https://twitter.com/i/web/status/2020890766206288055 https://twitter.com/i/web/status/2020890766206288055"
[X Link](https://x.com/zirkelc_/status/2020890766206288055) 2026-02-09T16:01Z [---] followers, [--] engagements
"@chisaehawng I think you need to explicitly unsubscribe from the stop channel or wait until Redis is closed"
[X Link](https://x.com/zirkelc_/status/2021178738092724567) 2026-02-10T11:05Z [---] followers, [--] engagements
Limited data mode. Full metrics available with subscription: lunarcrush.com/pricing
@zirkelc_ ChrisChris posts on X about open ai, ai, redis, lambda the most. They currently have [---] followers and [---] posts still getting attention that total [---] engagements in the last [--] hours.
Social category influence technology brands stocks social networks
Social topic influence open ai, ai, redis #21, lambda, vercel, azure, shutdown, if you, javascript, in a
Top accounts mentioned or mentioned by @aisdk @mattpocockuk @murshudoff @tanstack @theburningmonk @openai @zirkelc @trpcio @opentelemetry @lgrammel @nicoalbanese10 @beta @redsquare @ravisojitra @tobiaspetry @rvbhadja @goserverless @mugilanragu @ssalbdivad @youyuxi
Top assets mentioned Cloudflare, Inc. (NET) Microsoft Corp. (MSFT) Shopify Inc (SHOP)
Top posts by engagements in the last [--] hours
"#TypeScript lets you extract the properties and methods of a given class. This in turn allows you derive to an interface from a class that can then be implemented in another class. This is quite useful for mock classes that should have the same members as the original class"
X Link 2023-06-26T09:58Z [---] followers, [--] engagements
"I wrote a more detailed post on #DEVCommunity about this"
X Link 2023-06-26T09:57Z [---] followers, [--] engagements
"The TypeScript Playground for the previous example is here: https://tsplay.dev/Nr3K1m https://tsplay.dev/Nr3K1m"
X Link 2023-06-26T09:57Z [---] followers, [--] engagements
"Deploying a Browser in the Cloud ☁ I built a small PoC that runs a headless Chrome browser within a Serverless function I wanted to create a Reader View that takes a link to an article and extracts the readable content from it no ads no navigation just the actual content"
X Link 2023-09-28T10:27Z [---] followers, [--] engagements
"Here's a piece from NBC News concerning NASA's asteroid sample return mission. It's actually a bit slow so please allow a few moments for it to load 😉 Or head to the start page and input your own link in the provided field"
X Link 2023-09-28T10:27Z [---] followers, [--] engagements
"I've published the 3rd part of my series on website hosting with Amazon S3 and CloudFront. The latest post is about S3 website hosting with a private S3 bucket - so no more hassle with block public access and all those warnings. #DEVCommunity"
X Link 2023-10-03T12:26Z [---] followers, [--] engagements
"@BrendanFalk @fig Cool I love Fig Congrats on the great work"
X Link 2023-11-21T03:00Z [---] followers, [--] engagements
"Lets say two systems are connected. Usually they must speak the same language (protocol) to send/receive data. But instead of defining an interface schema one system could ask what format the other system expects. Kind of like a TCP-style handshake for APIs if you will"
X Link 2023-12-03T15:56Z [---] followers, [--] engagements
"Both systems agree on their protocol on the fly during handshake. They could either agree on one common format or each systems tells the other which format it expects. Acknowledgements and retries are supported through natural language by default"
X Link 2023-12-04T05:33Z [---] followers, [--] engagements
"Has someone implemented @trpcio with websockets on AWS api gateway and lambda"
X Link 2024-01-03T07:33Z [---] followers, [--] engagements
"I made a fascinating discovery this morning. TypeScript allows you infer generic type parameters from objects even if these generics are not used in the actual definition of the object"
X Link 2024-01-06T08:33Z [---] followers, [--] engagements
"The same happens for strings and presumably also to other primitive types like number or boolean"
X Link 2024-01-06T08:33Z [---] followers, [--] engagements
"Maybe @mattpocockuk can help me solve that mystery"
X Link 2024-01-06T08:33Z [---] followers, [--] engagements
"The AWS Community Builder application has just gone live. I highly recommend anyone building on or writing about AWS to check it out and apply. It offers a lot of great perks and top-notch support from the builder community"
X Link 2024-01-15T07:39Z [---] followers, [--] engagements
"When using Lambda function URLs with IAM authorization and CloudFront I always got a signature error for SignatureV4. Without CloudFront it worked fine. I finally figured out the root cause and wrote a detailed description. I hope it helps some of you"
X Link 2024-01-30T07:11Z [---] followers, [--] engagements
"@astuyve @_maxday That we go back to the point of checking which API is supported in which version of the runtime. Like is fetch() available How about ESM Oh and what is the right module and moduleResolution for TS to target runtime X"
X Link 2024-02-10T06:35Z [---] followers, [--] engagements
"@ohmypy I had the same opinion then I used Tailwind for a personal project and never looked back. Its a compilation of styles into useful and reusable classes. In a sense its like CSS without the OOP aspect. No inheritance just functional"
X Link 2024-02-18T19:39Z [---] followers, [---] engagements
"@TkDodo @typescript Cool I didnt know about this library. Looks like a good alternative to Lodash"
X Link 2024-03-09T12:02Z [---] followers, [---] engagements
"@theburningmonk @AWS I created the aws-sigv4-fetch npm package which wraps the fetch() function to automatically sign all HTTP requests"
X Link 2024-03-26T14:09Z [---] followers, [--] engagements
"@theburningmonk @goserverless Here's how to make Serverless work with ESM and TypeScript: https://github.com/zirkelc/serverless-esm-ts https://github.com/zirkelc/serverless-esm-ts"
X Link 2024-03-27T15:54Z [---] followers, [---] engagements
"Serverless works with ESM but it can't handle TypeScript in an ESM project aka loading serverless.mts config. Here's a PR I created awhile ago that explains it in more details. Unfortunately it never made it into Serverless because Node.js ESM was still experimental back then"
X Link 2024-03-28T06:52Z [---] followers, [--] engagements
"I got Playwright with Python running on AWS Lambda thanks to a great post by @MugilanRagu. My next step would be to keep the browser open between Lambda function invocations. For whatever reason the browser is automatically closed after the first Lambda invocation. Someone an idea what's going on"
X Link 2024-04-12T08:37Z [---] followers, [--] engagements
"Here's the great blog post by @MugilanRagu https://www.cloudtechsimplified.com/playwright-aws-lambda-python/ https://www.cloudtechsimplified.com/playwright-aws-lambda-python/"
X Link 2024-04-12T08:37Z [---] followers, [--] engagements
"I did a deep dive into #aws signature v4 request signing process and created a pull request to fix a possible bug in the typescript implementation. The PR got merged yesterday yeah 🥳 https://github.com/smithy-lang/smithy-typescript/issues/1224 https://github.com/smithy-lang/smithy-typescript/issues/1224"
X Link 2024-04-12T09:13Z [---] followers, [--] engagements
"@thdxr Does SST v3 also deploy Lambda container images"
X Link 2024-04-27T15:29Z [---] followers, [--] engagements
"When importing CJS files into TypeScript why does TS only look for type declarations with .d.cts extension and ignore the .d.ts files right next to it I have stumbled upon exactly this issue for the 3rd time now on very popular packages. Just opened a bug report for happy-dom: https://github.com/capricorn86/happy-dom/issues/1430 https://github.com/capricorn86/happy-dom/issues/1430"
X Link 2024-05-08T07:14Z [---] followers, [--] engagements
"@theburningmonk Uuuh nice I've been using Lambda Function URLs mostly because the increased timeout"
X Link 2024-05-23T12:48Z [---] followers, [---] engagements
"@mattpocockuk Hey @mattpocockuk could you take a look at this feature request I just submitted to TypeScript. It shows an issue I noticed when combining internal packages with TypeScript path aliases. Did you ever run into similar issues https://github.com/microsoft/TypeScript/issues/58657 https://github.com/microsoft/TypeScript/issues/58657"
X Link 2024-05-25T18:29Z [---] followers, [---] engagements
"The path alias work quite well as long as you don't use cross-package imports. For example I'm using tRPC and I import the router types from the server package into the client package. Using aliases on the server package breaks the client. My current workaround was to define all aliases globally in a root tsconfig.json. Big disadvantage is that you suddenly expose every package to every other package"
X Link 2024-05-26T06:38Z [---] followers, [--] engagements
"pnpm solved monorepos: - workspaces for local dependencies between packages in the project and for running tasks in topological order - publishConfig for overriding the main and exports during npm publish so you can use TypeScript at dev time and JavaScript at run time It's kind of insane that TypeScript Monorepos aren't a solved problem yet. Microsoft straight up gave up on their attempt (Lerna) and now we're desperately trying to figure it out as a community It's kind of insane that TypeScript Monorepos aren't a solved problem yet. Microsoft straight up gave up on their attempt (Lerna) and"
X Link 2024-06-09T14:06Z [---] followers, [--] engagements
"I created a @raycastapp script command to quickly download files from amazon S3 using the object URL. It's literally just a few keystrokes to download any S3 URL. It even works with entire directories"
X Link 2024-06-21T14:55Z [---] followers, [----] engagements
"Is there a way to get rid of the generic constraint TName extends string for the interface and class while still keeping the static autocomplete for and"
X Link 2024-08-04T11:59Z [---] followers, [--] engagements
"Maybe the TypeScript wizards @ssalbdivad and @mattpocockuk can help me with this"
X Link 2024-08-04T11:59Z [---] followers, [--] engagements
"@ssalbdivad @mattpocockuk Yes it often feels a bit suspect when you have to cast. It leaves me feeling like I've overlooked some other issues. In my case the generic param already felt unnecessary (even if it is necessary) and the cast made it worse 😁"
X Link 2024-08-04T13:12Z [---] followers, [--] engagements
"@theburningmonk Do you also have checklist for Lambda Function URL + CloudFront"
X Link 2024-08-06T10:39Z [---] followers, [--] engagements
"I have overridden the Logger.error() function for the power tools for AWS Lambda to return an error object that I can simply throw. This avoids me having to repeat the message for logging and throwing. In my opinion the only downside to this approach is the overhead of creating errors if they are not being thrown afterwards"
X Link 2024-08-14T10:30Z [---] followers, [---] engagements
"@adridder I want to have the flexibility to swap model providers from OpenAI to Anthropic without rewriting a lot of code. I've been on langchain for a while and it works but the experience for building agents is suboptimal. Do you have any recommendations"
X Link 2024-08-20T07:46Z [---] followers, [--] engagements
"@AWSbrett Adding the costs would be a very useful metric to add"
X Link 2024-09-15T10:39Z [---] followers, [--] engagements
"If you ever have to search for that one issue on @github which you manually subscribed to: I wish they would add it as search syntax. http://github.com/notifications/subscriptions http://github.com/notifications/subscriptions"
X Link 2024-09-23T10:43Z [---] followers, [--] engagements
"Is there an @OpenAI issue with the embedding model API I'm getting the following error for text-embedding-3-large with [----] dimensions: Error: [---] This model does not support specifying dimensions This error was also reported on the community forum: https://community.openai.com/t/intermittent-error-an-unexpected-error-occurred-error-code-400-error-message-this-model-does-not-support-specifying-dimensions-type-invalid-request-error-param-none-code-none/955807"
X Link 2024-09-25T14:43Z [---] followers, [---] engagements
"@OpenAI @RossAMurphy the issue has been fixed"
X Link 2024-09-26T06:24Z [---] followers, [--] engagements
"@tinygrad @AMD @lexfridman should do an interview with @realGeorgeHotz and @LisaSu to get this thing sorted out"
X Link 2024-09-26T11:14Z [---] followers, [----] engagements
"@colinhacks Doesn't it also work with separated values like: "typescript javascriptjson":"
X Link 2024-10-02T11:19Z [---] followers, [---] engagements
"@youyuxi @t3dotgg Not relevant to this post but VoidZero is such a cool name I like how it relates to bundlers using void [--] instead of undefined because its shorter and immutable 😄"
X Link 2024-10-03T07:08Z [---] followers, [----] engagements
"The journey to human level intelligence will involve xml tags Can @AnthropicAI Claude [---] sonnet outperform @OpenAI o1 in reasoning Combining Dynamic Chain of Thoughts reflection and verbal reinforcement existing LLMs like Claude [---] Sonnet can be prompted to increase test-time compute and match reasoning strong models like OpenAI o1. https://t.co/vzdgszizx1 Can @AnthropicAI Claude [---] sonnet outperform @OpenAI o1 in reasoning Combining Dynamic Chain of Thoughts reflection and verbal reinforcement existing LLMs like Claude [---] Sonnet can be prompted to increase test-time compute and match"
X Link 2024-10-07T04:37Z [---] followers, [--] engagements
"@_philschmid @AnthropicAI @OpenAI [--] million tokens for [--] questions sounds like a lot now but in a few months it will probably be negligible"
X Link 2024-10-07T09:17Z [---] followers, [---] engagements
"@Dima_heyqq Heres what you need to validate for: Hidden gem from @gmail: Append any string of chars with + to your email address to create new unique addresses that will be forwarded to your inbox. For example if your email john.doe@gmail.com you can send emails to john.doe+twitter@gmail.com or john.doe+x@gmail.com and Hidden gem from @gmail: Append any string of chars with + to your email address to create new unique addresses that will be forwarded to your inbox. For example if your email john.doe@gmail.com you can send emails to john.doe+twitter@gmail.com or john.doe+x@gmail.com and"
X Link 2024-10-07T11:09Z [---] followers, [---] engagements
"@elie2222 @rauchg I also sold my other cards including Charizard. No one what they are worth now 😄"
X Link 2024-10-08T05:44Z [---] followers, [--] engagements
"@FilipPyrek And can you share some of your problems with CDK Im on Serverless and looking for alternatives"
X Link 2024-10-12T11:56Z [---] followers, [--] engagements
"Now there is one This plugin allows you to have an ErrorLog query across your Lambda functions which you can easily add to your CloudWatch dashboard. If a new function is added to your service this plugin will automatically add it your all your defined queries. Is there a @goserverless plugin to create a CloudWatch Log Insights query for all log groups from one serverless.yml file Ideally keeping the log groups in sync with the functions when added/removed. Is there a @goserverless plugin to create a CloudWatch Log Insights query for all log groups from one serverless.yml file Ideally keeping"
X Link 2024-10-16T07:47Z [---] followers, [---] engagements
"GitHub: https://github.com/zirkelc/serverless-cloudwatch-logs-insights https://github.com/zirkelc/serverless-cloudwatch-logs-insights"
X Link 2024-10-16T07:47Z [---] followers, [--] engagements
"@dreamorosi I currently use SST ion only for hosting website but Ill plan to move some work projects from Serverless to SST. I really like their linking of resources e.g. making the bucket name accessible in a Lambda even at build and run time"
X Link 2024-10-20T15:06Z [---] followers, [--] engagements
"I'm figuring out how to properly shutdown the NodeSDK when using @LangChainAI's new @opentelemetry tracing for LangSmith in a Serverless environment like Lambda. It loos like a graceful shutdown for Lambda is the recommend approach: Here's an example until the official docs drop https://t.co/JoJEAzRLwm Here's an example until the official docs drop https://t.co/JoJEAzRLwm"
X Link 2024-10-28T12:57Z [---] followers, [--] engagements
"AWS uses the graceful shutdown in their own examples of @opentelemetry for Node.js on Lambda https://github.com/aws-observability/aws-otel-community https://github.com/aws-observability/aws-otel-community"
X Link 2024-10-28T12:57Z [---] followers, [--] engagements
"However it looks like this feature is only available if you use Lambda Extensions such as Lambda Insights: https://x.com/zirkelc_/status/1850204982726816006 https://x.com/zirkelc_/status/1850204982726816006"
X Link 2024-10-28T12:57Z [---] followers, [--] engagements
"As an alternative I created a simple Middy middleware to start and stop the NodeSDK before and after each Lambda invocation. I assume that instantiating the SDK on each request will incur some overhead compared to outside the handler but I need to do some profiling to see how much"
X Link 2024-10-28T12:57Z [---] followers, [--] engagements
"@Hacubu @vercel @dqbd Thanks for pinging me I did some tests on Lambda today. I have used sdk.shutdown() to flush the logs after every request but I'll check if client.awaitPendingTraceBatches() works as well. https://x.com/zirkelc/status/1850884650228502598 I'm figuring out how to properly shutdown the NodeSDK when using @LangChainAI's new @opentelemetry tracing for LangSmith in a Serverless environment like Lambda. It loos like a graceful shutdown for Lambda is the recommend approach: https://t.co/qNZscago3K https://x.com/zirkelc/status/1850884650228502598 I'm figuring out how to"
X Link 2024-10-28T17:42Z [---] followers, [--] engagements
"@romainlanz @nodejs Cool I didnt know that By the way the screenshot looks stunning. Which tool do you use"
X Link 2024-11-14T16:15Z [---] followers, [----] engagements
"@ryanflorence You actually don't need an extension or node:test for this. vscode has a built-in javascript debug terminal that you can start from a launch.json for the current file. it wokrs with any js or ts file"
X Link 2024-12-05T12:13Z [---] followers, [---] engagements
"Is there a VSCode extension like CodeSnap to take screenshots of code snippets but with built-in support for TypeScript TwoSlash comments https://github.com/microsoft/TypeScript-Website/tree/v2/packages/ts-twoslasher https://github.com/microsoft/TypeScript-Website/tree/v2/packages/ts-twoslasher"
X Link 2024-12-14T08:29Z [---] followers, [--] engagements
"AWS Powertools for Lambda has released a new version that allows you to easily add custom functions. I have implemented a log buffering example for which I recently shared an RFC. https://dev.to/aws-builders/buffer-logs-and-flush-automatically-on-error-with-powertools-for-lambda-k1m https://dev.to/aws-builders/buffer-logs-and-flush-automatically-on-error-with-powertools-for-lambda-k1m"
X Link 2024-12-18T12:28Z [---] followers, [--] engagements
"@mattpocockuk Any diff to your total-typescript config"
X Link 2024-12-28T15:41Z [---] followers, [----] engagements
"@MarcKlingen Do you find a notably difference between o1 and o3"
X Link 2025-06-18T10:49Z [---] followers, [--] engagements
"Bookmarklets are back 🔖 I've created Lambdalet for the AWS Lambda hackathon. It's an AI-powered bookmarking and read-it-later service. It saves any page you're reading into your own Notion database full text fully searchable zero fuss. Built for the AWS Lambda Hackathon"
X Link 2025-07-13T04:08Z [---] followers, [--] engagements
"It uses a small JS snippet saved as a bookmark to POST the current page's HTML to an API Gateway. If a sites CSP blocks fetch the code falls back to an old-school form submit in a temp window. Simple trick but it works on most pages"
X Link 2025-07-13T04:08Z [---] followers, [--] engagements
"Flow in a nutshell: [--] Lambda #1 uploads the HTML to S3 and queues requests [--] SQS FIFO for async processing and deduplication [--] Lambda #2 downloads HTML converts to Markdown extracts content via Bedrock and saves to Notion"
X Link 2025-07-13T04:08Z [---] followers, [--] engagements
"It's so funny that we went from terminal interfaces to graphical interfaces and now back to interactive terminal interfaces"
X Link 2025-07-15T04:46Z [---] followers, [--] engagements
"What if bring-your-own-keys (BYOK) will be a thing in open source. Your anthropic/openai/. keys are saved in your GitHub account. If you find an open issue and want it fixed you can decide to spend the "token usage" towards an agent fixing it"
X Link 2025-07-15T09:10Z [---] followers, [--] engagements
"I added a markdown button to my blog to open a post in raw markdown. I had to create an API route in Next.js to return the markdown with appropriate headers. So the button switches from /posts/slug to /api/posts/slug.md"
X Link 2025-07-15T15:12Z [---] followers, [--] engagements
"Original post: Markdown: https://zirkelc.dev/api/posts/flatten-array-of-arrays-using-jsonata-for-aws-step-functions.md https://zirkelc.dev/posts/flatten-array-of-arrays-using-jsonata-for-aws-step-functions https://zirkelc.dev/api/posts/flatten-array-of-arrays-using-jsonata-for-aws-step-functions.md https://zirkelc.dev/posts/flatten-array-of-arrays-using-jsonata-for-aws-step-functions"
X Link 2025-07-15T15:12Z [---] followers, [--] engagements
"@ethanniser doesn't it simply launch the terminal with claude"
X Link 2025-07-17T08:05Z [---] followers, [--] engagements
"I used Cursor to debug a nasty error on linux. Afterwards I asked it to summarise the entire conversation into a quick note and added it to Notion / my blog. Next time I can fetch the note as markdown and add it to the context https://x.com/zirkelc_/status/1945390346969514235 I found a way to serve the markdown-only page on the same path with a .md suffix /posts/slug = html version /posts/slug.md = markdown version I used Next.js middleware to intercept requests and return early. https://x.com/zirkelc_/status/1945390346969514235 I found a way to serve the markdown-only page on the same path"
X Link 2025-07-22T11:45Z [---] followers, [--] engagements
"I can't keep up with all the .dot folders and different ways to define LLM rules and prompts Configuring Claude agents is extremely similar to Cursor's ".mdc" rules. Looks like the future of the configuration is frontmatter (I never would have guessed) https://t.co/ML4bQDcEZp Configuring Claude agents is extremely similar to Cursor's ".mdc" rules. Looks like the future of the configuration is frontmatter (I never would have guessed) https://t.co/ML4bQDcEZp"
X Link 2025-07-25T09:06Z [---] followers, [--] engagements
"@paradite_ @opencv I think AWS just invested into their own IDE Kiro https://kiro.dev/ https://kiro.dev/"
X Link 2025-07-25T10:58Z [---] followers, [---] engagements
"@NoBackspaceCrew thanks for your article on Lambda cold starts so many new learnings packed into one article 🤯 I noticed you're using for measuring; I think Node.js performance might give you even more accurate numbers https://nodejs.org/api/perf_hooks.html#performancenow http://Date.now https://nodejs.org/api/perf_hooks.html#performancenow http://Date.now"
X Link 2025-07-26T04:00Z [---] followers, [--] engagements
"TIL from @mhart that Lambda always uses at least two vCPU during cold starts regardless of the allocated memory"
X Link 2025-07-26T04:30Z [---] followers, [--] engagements
"So essentially weve established that the init stage has the same performance as a [----] MB Lambda even if were only running a [---] MB one. https://hichaelmart.medium.com/shave-99-93-off-your-lambda-bill-with-this-one-weird-trick-33c0acebb2ea https://hichaelmart.medium.com/shave-99-93-off-your-lambda-bill-with-this-one-weird-trick-33c0acebb2ea"
X Link 2025-07-26T04:30Z [---] followers, [--] engagements
"TIL you can use @entity.Attributes.Lambda.Function to group messages from multiple different log groups. Useful when you need to analyze cold starts from many Lambdas with a single cloudwatch query"
X Link 2025-07-28T15:51Z [---] followers, [--] engagements
"Need to deploy some resources on azure and can't decide which IaC tool I should use: bicep terraform pulumi . I would love something as easy as serverless framework"
X Link 2025-07-30T11:25Z [---] followers, [--] engagements
"@mattpocockuk IMO Tool Calling is the primitive operation that enables to build Agents. Agents are Tool Calls executed in loop with conditions to break"
X Link 2025-08-03T15:28Z [---] followers, [---] engagements
"TIL you can use CMD+Z (undo) to delete a message you just sent in slack (aka unsend)"
X Link 2025-08-04T12:40Z [---] followers, [--] engagements
"Looks like AGI will be built with TypeScript types 😀 We've long known that internally OpenAI uses a token-efficient typescript format describe available tools instead of the super bloated JSON schema other models use. And finally they've shared their serializer. I expect this to catch on with many future OSS models https://t.co/7Yc0XyqMlA We've long known that internally OpenAI uses a token-efficient typescript format describe available tools instead of the super bloated JSON schema other models use. And finally they've shared their serializer. I expect this to catch on with many future OSS"
X Link 2025-08-06T07:37Z [---] followers, [--] engagements
"@Chikor_Zi Not really saw a few tweets of you about scraping Amazon results"
X Link 2025-08-08T13:44Z [---] followers, [--] engagements
"@cramforce Regarding Lambda I guess this is something that could be solved through a graceful shutdown https://github.com/aws-samples/graceful-shutdown-with-aws-lambda https://github.com/aws-samples/graceful-shutdown-with-aws-lambda"
X Link 2025-08-15T04:02Z [---] followers, [--] engagements
"I'm currently switching from json mode (via an output formatter tool call) to structured outputs but the model didn't generate reliable json I finally found the issue in this little warning at the end of the @aisdk docs OpenAI structured outputs only works with required fields. Using .optional() omits a fields from the required array while .nullable() keep the field required and forces the model choose between two types"
X Link 2025-08-16T05:55Z [---] followers, [--] engagements
"OpenAI mentions this limitation in the docs already. They use a union type of string or null to emulate an optional property. I couldn't reproduce this json schema from a simple Zod z.union(z.string() z.null()) as this will generate the same schema as .nullable() By the way OpenAI's example seems to be wrong because the enum should include null as well https://platform.openai.com/docs/guides/structured-outputs#all-fields-must-be-required https://platform.openai.com/docs/guides/structured-outputs#all-fields-must-be-required"
X Link 2025-08-16T05:55Z [---] followers, [--] engagements
"@TobiM I had similar thoughts at the beginning about CLI mode but using the model through the terminal feels more natural tbh"
X Link 2025-08-16T14:26Z [---] followers, [--] engagements
"Someone from @ShopifyDevs or @ShopifyEng able to get me into the new beta for the Next-Gen Dev Platform https://shopify.dev/docs/beta/next-gen-dev-platform/shopify-app-dev https://shopify.dev/docs/beta/next-gen-dev-platform/shopify-app-dev"
X Link 2025-08-20T08:45Z [---] followers, [---] engagements
"@martindonadieu @pavelsvitek_ @bunjavascript There are other examples like require(ESM) which were a really good thing and pushed Node into the right direction by supporting it as well"
X Link 2025-09-05T14:54Z [---] followers, [--] engagements
"Working on the API for an retryable model for the @aisdk Inspired by the design of the AI SDK that let's us compose complex agents with simple primitives like stepWhen and stepCountIs(10) It should have a few primitives for specific retry scenarios like content filter and type validation errors Love model composability of the @aisdk I'm constantly plagued by the very sensitive content filter on Azure If a certain prompt triggers the filter I want to automatically switch the provider to OpenAI This fallback approach can literally be implemented in less than [--] LOC https://t.co/Uo1SXp2dNO Love"
X Link 2025-09-14T09:20Z [---] followers, [----] engagements
"Schema mismatch errors happen frequently with weaker models like gpt-4o-mini I just learned that @aisdk exposes a repairText callback function to fix invalid json Then we can simply use jsonrepair to fix it jsonrepair just saved my bacon Generating structured outputs from Haiku but kept getting invalid JSON back. Sticking in a jsonrepair step put the success rate back to 100%. Even the image below is considered valid: https://t.co/4XqeRH1qJN jsonrepair just saved my bacon Generating structured outputs from Haiku but kept getting invalid JSON back. Sticking in a jsonrepair step put the success"
X Link 2025-10-03T04:44Z [---] followers, 43.8K engagements
"ai-retry for @aisdk now supports embedding models If your embeddings fail due to timeouts or other errors you can now easily switch to another provider Fallbacks should always use same model across different providers like OpenAI and Azure or Anthropic and AWS Bedrock"
X Link 2025-10-06T09:53Z [---] followers, [---] engagements
"@uria_franko @aisdk Thats exactly what I said in my last sentence 😅 OpenAI embedding models are available on Azure and Anthropics on AWS. As you can see in the screenshot it is only switching the provider not the model"
X Link 2025-10-07T09:07Z [---] followers, [--] engagements
"The @aisdk does not have an example for AWS Lambda yet Here's how you can stream text from your Lambda function"
X Link 2025-10-07T10:31Z [---] followers, [--] engagements
"Working on getting the @aisdk UI stream to work on Lambda It's actually way easier that I initially thought: - use toUIMessageStreamResponse() - copy the UI headers to the response stream - pipe the UI stream via Node.js pipeline() to Lambda's response stream"
X Link 2025-10-08T09:22Z [---] followers, [----] engagements
"@lgrammel @nicoalbanese10 @aisdk Unfortunately Lambda doesn't work with Node's ServerResponse so we can't pipeUIMessage. directly. But we actually only need the headers from the ServerResponse object so we can simply add them statically and use result.fullStream"
X Link 2025-10-08T15:58Z [---] followers, [--] engagements
"Vitest v4 is still in beta here's how you can try it: pnpm add vitest@beta" https://main.vitest.dev/api/expect.html#expect-schemamatching https://main.vitest.dev/api/expect.html#expect-schemamatching"
X Link 2025-10-15T14:44Z [---] followers, [---] engagements
"Super interesting content about the performance of mutable. vs. immutable JS operations when dealing with very large arrays. A fun deep dive into the performance characteristics of rendering a large grouped data set in Tanstack Table and a PR leading to a 1000x speed up https://t.co/ma163CnSgR A fun deep dive into the performance characteristics of rendering a large grouped data set in Tanstack Table and a PR leading to a 1000x speed up https://t.co/ma163CnSgR"
X Link 2023-07-20T14:24Z [---] followers, [--] engagements
"@Jaaneek @trpcio @tan_stack @DrizzleORM @nextjs @vercel @lmsqueezy @shadcn Do you mind to share the links to PRs when youve submitted them"
X Link 2024-03-02T07:15Z [---] followers, [--] engagements
"@mattpocockuk I've created chunkdown a tree-based markdown text splitter focusing on semantically dense chunks. You can even visualize the chunks against various LangChain splitters to compare the results https://github.com/zirkelc/chunkdown https://github.com/zirkelc/chunkdown"
X Link 2025-10-16T14:46Z [---] followers, [----] engagements
"I created Chunkdown a text splitter implemented in TypeScript and optimized for markdown. I've been using LangChain's splitter which is very good but I think focusing on markdown we can use its hierarchical structure to create semantically meaningful chunks. Chunkdown parse markdown into an abstract syntax tree (AST) and operates on nodes instead of using regexes on raw text. Chunkdown is built around a few core ideas: Anyone know any TS utility library for RAG I mean chunking algorithms documented in TypeScript. Langchain has them but all the docs are in Python. Anyone know any TS utility"
X Link 2025-10-21T11:35Z [---] followers, [---] engagements
"I'm thinking about allowing to override @aisdk providerOptions during retry so you can change common settings like reasoning effort or switching service tiers Here's an example switching @GroqInc service tier However I am not sure if this is useful"
X Link 2025-10-21T14:30Z [---] followers, [---] engagements
"It would be nice if we had benchmarks for chunking algorithms like we have for LLMs. For example you have one document and let an LLM create the optimal chunks. Next you run different chunking algorithms on this document and embed every chunk. Finally you compare the distance of every chunk (from every algorithm) with the optimal chunks created by the LLM. The winning algorithm is the one that produces the most chunks closest to the optimal chunks"
X Link 2025-10-31T15:20Z [---] followers, [--] engagements
"The best part is that the output type is inferred as the union of all yielded values The @aisdk is really a piece of art Preliminary tool results are incredible You can just yield things @aisdk handles the rest https://t.co/KRUqEbqaYS Preliminary tool results are incredible You can just yield things @aisdk handles the rest https://t.co/KRUqEbqaYS"
X Link 2025-11-02T11:14Z [---] followers, 12.9K engagements
"I finished a big @aisdk refactoring for our chat switching from multiple generateText calls to a single streamText with multiple tools I had to overcome a few hurdles since I'm running on Lambda with TRPC which makes the entire streaming part a bit more complex"
X Link 2025-11-05T10:09Z [---] followers, [---] engagements
"When you run @aisdk on Lambda with open telemetry integration you can easily add valuable metadata The Lambda runtime exposes the function name region and x-ray trace id as environment variables Observability platforms can then filter and group your traces by these values"
X Link 2025-11-07T12:21Z [---] followers, [----] engagements
"OpenAI structured outputs don't support optional properties It took me a while to figure out why I was getting schema mismatch errors from @aisdk despite the schema being super simple If you're using Zod you need to use nullable() instead of optional() The important difference is that the resulting JSON schema contains the required key which OpenAI needs"
X Link 2025-11-11T08:18Z [---] followers, 14K engagements
"Link to OpenAI docs: https://platform.openai.com/docs/guides/structured-outputs#all-fields-must-be-required https://platform.openai.com/docs/guides/structured-outputs#all-fields-must-be-required"
X Link 2025-11-11T08:18Z [---] followers, [---] engagements
"@nicoalbanese10 @aisdk The reason it was difficult to find the actual root cause is that OpenAI returns an incomplete JSON result and 'content-filter' as finish reason In my example I used simply set the name key on the schema to optional"
X Link 2025-11-11T11:37Z [---] followers, [---] engagements
"Here's a simple type guard to check if a Zod schema is valid for OpenAI You can wrap it around your schema when passing it to @aisdk generate calls with structured outputs It will show an error if the provided schema contains optional instead of nullable properties Link below OpenAI structured outputs don't support optional properties It took me a while to figure out why I was getting schema mismatch errors from @aisdk despite the schema being super simple If you're using Zod you need to use nullable() instead of optional() The important https://t.co/hcZ4fudhZO OpenAI structured outputs don't"
X Link 2025-11-12T08:07Z [---] followers, [----] engagements
"TypeScript Playground to copy:"
X Link 2025-11-12T08:07Z [---] followers, [--] engagements
"I think here's some potential to improve the DX when using OpenAI structured outputs with @aisdk If a given schema is valid for OpenAI could validated twice: - at compile-time through TypeScript types - at run-time through JSON schema validation OpenAI structured outputs don't support optional properties It took me a while to figure out why I was getting schema mismatch errors from @aisdk despite the schema being super simple If you're using Zod you need to use nullable() instead of optional() The important https://t.co/hcZ4fudhZO OpenAI structured outputs don't support optional properties It"
X Link 2025-11-13T09:32Z [---] followers, [---] engagements
"Could you give me an example regarding experimental_context I think prepareStep (also ctx-zip) will change the input to the model but that should be kept as-is. I'm looking for a way filter out parts that should not be visible to the client. Maybe piping the UI stream through a TransformStream similar to textStream only yields text parts"
X Link 2025-11-13T11:12Z [---] followers, [--] engagements
"Client side tools in @aisdk Has anyone found a reliable way to generate the message explaining a client-side tool call In my experience the model generates often a tool call with a message (tool input) AND a second text message. I tried to tune it so it would only generate one message but haven't found reliable way yet"
X Link 2025-11-15T14:41Z [---] followers, [----] engagements
"No no what I mean: the model generates a client-side tool call with a message as input param to show on the client e.g. asking for confirmation. But often it also generates a second message (part.type=text) also asking for confirmation. That means you the client it renders two almost identical messages: [--]. tool-input message [--]. text message"
X Link 2025-11-15T14:49Z [---] followers, [---] engagements
"@red___square @aisdk Thanks that might be a good idea"
X Link 2025-11-16T05:12Z [---] followers, [--] engagements
"I built an extension to open a file from S3 in the fewest possible clicks: P "S3: Open File" "s3://." Enter Works with any s3:// or https:// URI. Uses your local AWS credentials so no complex setup"
X Link 2025-11-16T06:47Z [---] followers, [--] engagements
"Working on an @aisdk filter stream for selective streaming of UI message parts by type This allows you to skip streaming certain parts to the client like tool calls to your database The part types are inferred from the UI message and are fully type-safe"
X Link 2025-11-18T09:48Z [---] followers, 10.7K engagements
"Introducing ai-filter-stream for @aisdk Filter out certain UI message parts like tool calls that should not be visible to the client Full type-safe with message parts inferred from your tools and data schema Working on an @aisdk filter stream for selective streaming of UI message parts by type This allows you to skip streaming certain parts to the client like tool calls to your database The part types are inferred from the UI message and are fully type-safe https://t.co/pr8rGtWrdy Working on an @aisdk filter stream for selective streaming of UI message parts by type This allows you to skip"
X Link 2025-11-19T10:53Z [---] followers, [----] engagements
"I don't know why but grok-4-fast-non-reasoning constantly has problems generating structured output. Far worse than gpt-4.1-mini even though the schema is quite simple Using it with @aisdk are there any ways to optimize it"
X Link 2025-11-20T15:12Z [---] followers, [---] engagements
"@red___square @aisdk Was using the default values from AI SDK have to check"
X Link 2025-11-20T15:39Z [---] followers, [--] engagements
"Amazon S3 doesn't support TTL to delete objects like DynamoDB does for items S3 has a concept of lifecycle rules to expire certain objects matching e.g. a key prefix or tags I found out about way to replicate the TTL behavior somehow by using TagFilters You define multiple rules for various expiration durations like [--] [--] and [--] days each matching the same tag key but with different tag value It's still limited to full days but gives you some flexibility"
X Link 2025-11-21T12:48Z [---] followers, [---] engagements
"The tools description format I'm currently using: - short description - when to use this tool - when NOT to use this tool - usage notes I adopted this format in a claude code prompt leak (may be outdated). I'm thinking whether it would be more effective to keep the tool description shorter and move some parts into the actual system prompt. What's the experience like on this topic"
X Link 2025-11-22T06:15Z [---] followers, [---] engagements
"@red___square Thats also what Im leaning towards to at the moment"
X Link 2025-11-22T11:08Z [---] followers, [--] engagements
"Chunkdown now compacts markdown tables thanks to a one-line PR Markdown tables can be pretty formatted with additional dashes and spaces to align the columns vertically This makes them easier for humans to read but wastes tokens and embedding space on useless characters Since chunks should be optimized for embedding models we can sacrifice readability for less tokens and better embeddings This is yet another advantage of an AST-based splitter over a simple recursive character splitter: the markdown input does not necessarily need to match the markdown output"
X Link 2025-11-23T09:07Z [---] followers, [----] engagements
"I should have mentioned that this is still valid markdown. You can paste it into GitHub and it will render a table. The GFM spec that defines markdown tables states: The delimiter row consists of cells whose only content are hyphens (-) and optionally a leading or trailing colon (:) or both to indicate left right or center alignment respectively. https://github.github.com/gfm/#delimiter-row https://github.github.com/gfm/#delimiter-row"
X Link 2025-11-23T16:20Z [---] followers, [---] engagements
"I added a comparison option to my chunk visualizer You can add multiple text splitter libraries to compare the chunks side-by-side Currently it supports chunkdown langchain and llamaindex. Mastra's text splitter is implemented but not usable due to a browser bug"
X Link 2025-11-25T08:51Z [---] followers, [---] engagements
"I had a few problems with grok-4-fast generating structured outputs. One trick that seems to work is embedding the schema as TypeScript type in the prompt. I think it helps because the TS type more closely mirrors what the model actually generates. With a package like zod-to-ts you can stringify the Zod schema to keep the type in sync"
X Link 2025-11-25T11:00Z [---] followers, [---] engagements
"I've released the beta version of ai-retry that supports @aisdk v6 It mainly consist of type changes for the new language model embedding model specs It's available on the v6 branch on github and beta tag on npm npm install ai-retry@beta"
X Link 2025-11-25T16:59Z [---] followers, [----] engagements
"@ravisojitra_ @aisdk I just released a new version that supports @aisdk v6 with language model v3 https://x.com/zirkelc_/status/1993363834191458557s=20 I've released the beta version of ai-retry that supports @aisdk v6 It mainly consist of type changes for the new language model embedding model specs It's available on the v6 branch on github and beta tag on npm npm install ai-retry@beta https://x.com/zirkelc_/status/1993363834191458557s=20 I've released the beta version of ai-retry that supports @aisdk v6 It mainly consist of type changes for the new language model embedding model specs It's"
X Link 2025-11-25T17:00Z [---] followers, [--] engagements
"Anthropic sends overloaded errors in streaming as the first chunk so that makes it hard to catch and retry ai-retry for @aisdk can handle this kind of error because it inspects the stream and silently retries it if no content has been streamed to the client anthropic api be like https://t.co/aj4ra55kiE anthropic api be like https://t.co/aj4ra55kiE"
X Link 2025-11-27T06:48Z [---] followers, [----] engagements
"I was asked to support retrying requests that ended with finish reason unknown I never had that issue is this a common issue @aisdk users Since result-based retries are already supported for generation calls you can already retry a request for a particular finish-reason"
X Link 2025-11-28T05:01Z [---] followers, [---] engagements
"I worked on a PR to support the AI Gateway natively in ai-retry with full type-safety You can pass a model string and it will automatically infer it as a language model Behind the scenes it uses the gateway provider from the @aisdk package to resolve it to a model instance"
X Link 2025-11-28T13:31Z [---] followers, [----] engagements
"Chunkdown has split rules to control if a markdown element is split For example links are never split by default regardless of their size because splitting an URL will create useless chunks Chunkdown uses content sizing and considers only visible rendered text for length calc"
X Link 2025-12-01T16:46Z [---] followers, [---] engagements
"Introducing ai-stream-utils for @aisdk A type-safe map and flatMap function for your UI message stream to filter and transform chunks while streaming to the client Map operates on chunks while flatMap buffers all chunks until the part is complete to give you more control"
X Link 2025-12-03T09:35Z [---] followers, [----] engagements
"@mattpocockuk @nicoalbanese10 @alexdotjs @aisdk I thought so but this is not available on createUIMessageStream() https://ai-sdk.dev/docs/reference/ai-sdk-ui/create-ui-message-stream https://ai-sdk.dev/docs/reference/ai-sdk-ui/create-ui-message-stream"
X Link 2025-12-03T14:12Z [---] followers, [--] engagements
"My favorite trick when using overloaded functions in typescript with varying number of arguments Instead of defining the second argument as thisOrThatType I use rest params to collect all args in an array Then I can use the number of args as a switch to narrow down the type"
X Link 2025-12-04T17:52Z [---] followers, [---] engagements
"@lgrammel I had some trouble finding it in the anthropic docs Is this something you would "patch" for providers not having this API or wait until the models API support"
X Link 2025-12-05T13:16Z [---] followers, [--] engagements
"@getpochi @aisdk It's reading from the original UI stream returned by streamText() so it depends on the AI SDK behavior. I never had this issue so not idea how it is handled by default"
X Link 2025-12-05T17:14Z [---] followers, [--] engagements
"@ravisojitra_ @aisdk That's probably not possible because it only has access to the chunks / parts. What you need is probably custom data parts so you would write a data part in each execute function: https://ai-sdk.dev/docs/ai-sdk-ui/streaming-data https://ai-sdk.dev/docs/ai-sdk-ui/streaming-data"
X Link 2025-12-05T17:17Z [---] followers, [---] engagements
"TypeScript monorepo IMO the most conveniet monorepo setup without needing a build step: - pnpm workspaces and install from workspace:* - internal packages that export *.ts files - (optional) pnpm publishConfig to change exports to *.js on publishing How do you set up monorepos and keep TypeScript fast without requiring local builds all the time I'm very confused Let's say you are building a monorepo with multiple packages and an example app within the monorepo that consumes the packages. The packages have a build step How do you set up monorepos and keep TypeScript fast without requiring"
X Link 2025-12-10T10:48Z [---] followers, 72K engagements
"@cnakazawa This post might be relevant it also uses custom conditions https://x.com/colinhacks/status/1796595123595378822s=20 new blog post 👇 it breaks down a few approaches to configuring "live types" in TypeScript monorepos. you should never need to run build while developing [--]. tsconfig paths [--]. custom export conditions [--]. publishConfig (*my recommended solution) https://t.co/sf6F3CfcsQ https://x.com/colinhacks/status/1796595123595378822s=20 new blog post 👇 it breaks down a few approaches to configuring "live types" in TypeScript monorepos. you should never need to run build while"
X Link 2025-12-10T11:12Z [---] followers, [----] engagements
"Yes there's some truth to that even though I think we already have a somewhat coupling of your project and package manager due to lockfiles (pnpm lock bun.lock yarn .) and scripts (pnpm run x bun test .). And we can guard against using the wrong package manager by using the packageManager field in package.json"
X Link 2025-12-11T14:19Z [---] followers, [---] engagements
"@murshudoff I just released v3 supporting breadcrumbs: https://x.com/zirkelc_/status/1999371007384031568s=20 Chunk breadcrumbs Chunkdown now collects breadcrumbs for each chunk it splits In a hierarchical markdown document with multiple nesting levels each chunk contains an array of parent headings This can provide additional context when embedding chunks https://t.co/k1LZUniOSQ https://x.com/zirkelc_/status/1999371007384031568s=20 Chunk breadcrumbs Chunkdown now collects breadcrumbs for each chunk it splits In a hierarchical markdown document with multiple nesting levels each chunk contains"
X Link 2025-12-12T06:53Z [---] followers, [--] engagements
"@ravisojitra_ Even deploying to Vercel you can use a monorepo and one package is deployed to vercel and the others somewhere else IMO turborepo is always a good choice but if you only have a few packages you can use just use pnpm run -r https://vercel.com/docs/monorepos#add-a-monorepo-through-the-vercel-dashboard https://vercel.com/docs/monorepos#add-a-monorepo-through-the-vercel-dashboard"
X Link 2025-12-12T12:23Z [---] followers, [--] engagements
"Protect code blocks from splitting Chunkdown now supports split rules for fenced code blocks and inline code Splitting code into meaningful chunks is usually not needed for most RAG pipelines With this setting you can avoid useless code chunks"
X Link 2025-12-16T08:37Z [---] followers, [---] engagements
"My current opinionated set up for @aisdk tools is: - define interface for all tools with common fields (tenant session user.) and ui stream writer - extract each tool into its own file - coupling of tool name and tool (useful for tool accuracy evals) - one tool set function @zirkelc_ @aisdk Extracting tools into createToolSet is nice because it forces you to think in capabilities instead of scattered functions. Curious how you handle per-request tool config like rate limits or multi-tenant scopes inside that pattern without leaking it all over the UI types. @zirkelc_ @aisdk Extracting tools"
X Link 2025-12-17T08:43Z [---] followers, [----] engagements
"Using Context in Tools The @aisdk provides an experimental context option to pass arbitrary values from generate/stream to the tools The context is of type unknown and must be casted but this could potentially be typed with typescript module augmentation @zirkelc_ @aisdk You can use the experimental context to access the writer and tenant from within the execute function @zirkelc_ @aisdk You can use the experimental context to access the writer and tenant from within the execute function"
X Link 2025-12-18T08:49Z [---] followers, [----] engagements
"Repair invalid JSON output I can't get Grok to reliably return JSON-only for structured outputs It often returns the JSON object followed by an explanation what it generated Using jsonrepair alone didn't work but a final check on start and end braces works wonders"
X Link 2025-12-19T08:04Z [---] followers, [----] engagements
"@JannikWempe I usually skip the LLM for fixing the invalid output and instead switch to a more powerful model and repeat the request"
X Link 2025-12-19T10:51Z [---] followers, [--] engagements
"Publishing npm packages My currently favored tooling for bundle and publishing npm packages: - tsdown: bundle esm/cjs updates exports and runs attw and publint - pkg-pr-new: publishes previews for PRs and commits - release-please: creates release PRs and changelog"
X Link 2025-12-20T15:18Z [---] followers, [----] engagements
"Expanding @aisdk UI chunks and parts Both map() and flatMap() now support returning an array of chunks or parts This is useful for use cases like buffering chunks (eg. smooth streaming) or splitting a part into multiple parts Example: split tool-call into multiple parts"
X Link 2025-12-22T11:30Z [---] followers, [----] engagements
"@tobi ShopifyQL is great Is there a reason it doesnt support ISO datetime conditions and instead uses offsets like -12h -3d etc"
X Link 2025-12-23T09:39Z [---] followers, [---] engagements
"My preferred workflow when upgrading to a new major version like @aisdk v6: Start your coding agent in plan mode and give it the URL of the change log as input. It will search all changed APIs in your codebase and show you what needs to be refactored and how Sometimes the default behavior of an API has changed like for example the provider azure('model') now uses the Response instead of Chat completion API by default In this case the coding agent will help you infer the right upgrading path based on your usage like switching to This gives you insight into the impact of the upgrade before"
X Link 2025-12-23T12:20Z [---] followers, [----] engagements
"Some people seem to think you have to host on vercel to use the @aisdk on the frontend and backend But you can easily run it on any other backend (e.g. Lambda) and even use TRPC for your API and streaming It only takes a couple of lines to use TRPC with useChat in the client"
X Link 2025-12-30T11:30Z [---] followers, 23.5K engagements
"@pasupol1x @aisdk In regards to AI SDK or in general Im running on Lambda (in streaming mode) which is now well supported by TRPC and even API Gateway recently. The DX is superb"
X Link 2025-12-31T12:18Z [---] followers, [--] engagements
"@JannikWempe Let me know when youre around the Mannheim area. Would love to chat about AWS and Shopify stuff 🙌🏻"
X Link 2025-12-31T12:20Z [---] followers, [--] engagements
"Interesting idea for resumable LLM streams on Lambda: Mount EFS shared across all instances Lambda streams from LLM and tees it: write to EFS and stream to client If client disconnects and needs to resume the ongoing stream new Lambda reads from shared file at byte offset"
X Link 2026-01-02T11:00Z [---] followers, [---] engagements
"I rarely see code with await using despite being available for some time It automatically disposes resources when they go out of scope like closing database connections after the function ends This is especially useful on Lambda where hanging connections are a common issue"
X Link 2026-01-02T12:54Z [---] followers, 31K engagements
"@tobias_petry Good to know. Since it's available since TS [---] did TS polyfill it before"
X Link 2026-01-03T05:07Z [---] followers, [---] engagements
"@Sung_Leveling TypeScript will polyfill for target = ES2024 https://www.typescriptlang.org/play/#code/GYVwdgxgLglg9mABBATgUwIZTQJTQZzhBQjQAowMBbNALkXyhRjAHMBKRAbwChFkEhADZoAdELisyAAwCCEAI4gY6ACb0AJF0o0AvtPYBuHn0TooxJL378daADSn+GfAE9IiANoBlV1QBGcEKiLu4QACIw+AAOcPhoALpknNY2-BCCQWISUtKRMXEsrJra1Gj6Rk42GADuGDBQiGBoNYgACihwVFHkZOjCAG5onAC8AHwMaFAAKjA0RFB9BEFD9ogAjAAMm+yVaemZIuKSMvmx8eqIWnYVxmm6jvy6xromoR6gkLAIiFT1YMluKYMmBhNkTtIAEJoYBwdCIWr1RogfBFAx3BF1BqIFFFMzLYikRAjZDoLC4AkkcjSKiuPCEQlodHAw7g3IAVVRbHxDKpJX6RCpohuzIOoKyx1yAFEwKpEHBgAwMtEmZVXjw-ixkoYgA"
X Link 2026-01-03T05:25Z [---] followers, [--] engagements
"@tobias_petry I verified it TypeScript added helpers for dispose for targets = ES2024 https://www.typescriptlang.org/play/#code/GYVwdgxgLglg9mABBATgUwIZTQJTQZzhBQjQAowMBbNALkXyhRjAHMBKRAbwChFkEhADZoAdELisyAAwCCEAI4gY6ACb0AJF0o0AvtPYBuHn0TooxJL378daADSn+GfAE9IiANoBlV1QBGcEKiLu4QACIw+AAOcPhoALpknNY2-BCCQWISUtKRMXEsrJra1Gj6Rk42GADuGDBQiGBoNYgACihwVFHkZOjCAG5onAC8AHwMaFAAKjA0RFB9BEFD9ogAjAAMm+yVaemZIuKSMvmx8eqIWnYVxmm6jvy6xromoR6gkLAIiFT1YMluKYMmBhNkTtIAEJoYBwdCIWr1RogfBFAx3BF1BqIFFFMzLYikRAjZDoLC4AkkcjSKiuPCEQlodHAw7g3IAVVRbHxDKpJX6RCpohuzIOoKyx1yAFEwKpEHBgAwMtEmZVXjw-ixkoYgA"
X Link 2026-01-03T05:27Z [---] followers, [---] engagements
"Some people mention that await using is not supported by Node.js yet Here's a quick summary with links in the reply: Explicit resource management (ERM) was added in V8 v13.6 and it landed in Node.js v24 (May 2025) TypeScript introduced await using in TS v5.2 (August 2023) ESBuild supports ERM since v0.18.7 (June 2023) I verified it if you're compiling TS with a target = ES2024 TS automatically adds dispose helper functions to polyfill the behavior ESBuild also emits dispose helper functions depending on the target So I guess it's fair to say it depends how you run/compile your TS code - tsc:"
X Link 2026-01-03T07:34Z [---] followers, [----] engagements
"TypeScript playground: https://www.typescriptlang.org/play/#code/GYVwdgxgLglg9mABBATgUwIZTQJTQZzhBQjQAowMBbNALkXyhRjAHMBKRAbwChFkEhADZoAdELisyAAwCCEAI4gY6ACb0AJF0o0AvtPYBuHn0TooxJL378daADSn+GfAE9IiANoBlV1QBGcEKiLu4QACIw+AAOcPhoALpknNY2-BCCQWISUtKRMXEsrJra1Gj6Rk42GADuGDBQiGBoNYgACihwVFHkZOjCAG5onAC8AHwMaFAAKjA0RFB9BEFD9ogAjAAMm+yVaemZIuKSMvmx8eqIWnYVxmm6jvy6xromoR6gkLAIiFT1YMluKYMmBhNkTtIAEJoYBwdCIWr1RogfBFAx3BF1BqIFFFMzLYikRAjZDoLC4AkkcjSKiuPCEQlodHAw7g3IAVVRbHxDKpJX6RCpohuzIOoKyx1yAFEwKpEHBgAwMtEmZVXjw-ixkoYgA"
X Link 2026-01-03T07:34Z [---] followers, [---] engagements
"Node.js v24 that upgraded V8 to enable ERM support: https://github.com/nodejs/node/releases/tag/v24.0.0 https://github.com/nodejs/node/releases/tag/v24.0.0"
X Link 2026-01-03T07:34Z [---] followers, [---] engagements
"Node.js PR enabling ERM: https://github.com/nodejs/node/pull/58154 https://github.com/nodejs/node/pull/58154"
X Link 2026-01-03T07:34Z [---] followers, [---] engagements
"TypeScript v5.2 added ERM in 2023: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html"
X Link 2026-01-03T07:34Z [---] followers, [---] engagements
"TypeScript PR enabling ERM: https://github.com/microsoft/TypeScript/pull/54505 https://github.com/microsoft/TypeScript/pull/54505"
X Link 2026-01-03T07:35Z [---] followers, [---] engagements
"@tobias_petry I searched through some links in this post: https://x.com/zirkelc_/status/2007354984258580832s=20 Some people mention that await using is not supported by Node.js yet Here's a quick summary with links in the reply: Explicit resource management (ERM) was added in V8 v13.6 and it landed in Node.js v24 (May 2025) TypeScript introduced await using in TS v5.2 (August 2023) https://t.co/myNQVK7HAe https://x.com/zirkelc_/status/2007354984258580832s=20 Some people mention that await using is not supported by Node.js yet Here's a quick summary with links in the reply: Explicit resource"
X Link 2026-01-03T07:35Z [---] followers, [---] engagements
"New example: TRPC streaming mutations with @tan_stack query on the frontend The main purpose is demonstrating how to interrupt and resume an ongoing stream and auto-resume on page reload Its built agnostic so you could easily use @aisdk or something else on the backend"
X Link 2026-01-05T12:04Z [---] followers, 10.1K engagements
"GitHub repo: https://github.com/zirkelc/react-query-trcp-streaming https://github.com/zirkelc/react-query-trcp-streaming"
X Link 2026-01-05T12:04Z [---] followers, [---] engagements
"Buffer URL chunks during streaming Models will usually emit URLs in multiple chunks when streaming That means they might be invalid or incomplete when rendered on the client This example demonstrates how to buffer chunks containing URLs and only emit them when completed"
X Link 2026-01-06T09:55Z [---] followers, [----] engagements
"I will expand this example with combinations of different tolling like AI SDK + TRPC on the backend and TanStack query on the frontend I think build your own useChat with stream and resume-stream might be beneficial for some folks New example: TRPC streaming mutations with @tan_stack query on the frontend The main purpose is demonstrating how to interrupt and resume an ongoing stream and auto-resume on page reload Its built agnostic so you could easily use @aisdk or something else on the backend https://t.co/H78RTT0N5m New example: TRPC streaming mutations with @tan_stack query on the"
X Link 2026-01-07T11:05Z [---] followers, [----] engagements
"@EmmettMaher @lgrammel The Claude provider seems to support skills if that's what you meant: https://github.com/vercel/ai/pull/9597 https://github.com/vercel/ai/pull/9597"
X Link 2026-01-08T12:22Z [---] followers, [--] engagements
"Good idea I'm wondering if using a random ID for the placeholder might cause some problems for stronger LLMs that recognize the ID is valid as for example an email For example I'd ask the LLM to generate a response in markdown like john@example.com(mailto:john@example.com) Using [---------] as placeholder might change the behavior too much so it generates a different response. However I'm not not sure about this just an assumption https://twitter.com/i/web/status/2009605144267149587 https://twitter.com/i/web/status/2009605144267149587"
X Link 2026-01-09T12:36Z [---] followers, [--] engagements
"Google's Release Please is currently my favorite action for automating releases on GitHub - push or merge (PRs) into main triggers CI workflow which creates/updates a release PR - merging the release PR triggers the release workflow and publishes to npm + updates the changelog"
X Link 2026-01-12T10:00Z [---] followers, [---] engagements
"One more helpful addition for Problem: Claude often defaults to web search when checking SDK implementations Fix: "When working with a library and you need to look at the code clone the repo to the temp directory" http://CLAUDE.md Here are my CLAUDE.md additions for making plan mode 10x better Before: unreadably long plans After: concise useful plans with followup questions https://t.co/di4N7UGiaB https://t.co/Wva1MZqLjy http://CLAUDE.md Here are my CLAUDE.md additions for making plan mode 10x better Before: unreadably long plans After: concise useful plans with followup questions"
X Link 2026-01-13T16:10Z [---] followers, [---] engagements
"@brankopetric00 That's a typical trap. Always set the log retention for dev/prod. Do you use an IaC like Serverless Framework or CDK It's usually easy to set defaults for all functions for a stack"
X Link 2026-01-19T17:06Z [---] followers, [---] engagements
"Sort of. The main purpose of this example is: [--]. to demonstrate how the AI SDK can be used in combination with TRPC on the server. The AI SDK is usually deployed on something like Vercel CloudFlare etc. where you deal with raw HTTP Request/Response objects. TRPC is a different transport layer that also brings type-saftey [--]. to test resumable stream. There are many examples of "AI SDK + X" but most of them lack the part how an ongoing stream can be resumed https://twitter.com/i/web/status/2013300210919735534 https://twitter.com/i/web/status/2013300210919735534"
X Link 2026-01-19T17:19Z [---] followers, [---] engagements
"Actually that's also what I did: I tee the UI stream from the model the first stream is emitted to the client and the second goes into Redis. On resume I read from Redis and emit to the client. Btw the video feels slow because I've mocked the model and return each chunk with a 300ms delay 😅 https://twitter.com/i/web/status/2013555474688327698 https://twitter.com/i/web/status/2013555474688327698"
X Link 2026-01-20T10:13Z [---] followers, [--] engagements
"@BraydenWilmoth @Cloudflare Getting ICQ vibes"
X Link 2026-01-20T16:04Z [---] followers, [---] engagements
"@youyuxi Started using oxfmt and oxlint for my new projects. Is there a reason you decided to split lint and format unlike biome"
X Link 2026-01-22T10:02Z [---] followers, [----] engagements
"Something I find extremely valuable when working with any tooling: quickly whip up a locally runnable demo to verify an idea or assumption For example the @aisdk already exports many useful utils: mock model simulated streaming iteratorstream conversion reading UI streams"
X Link 2026-01-22T12:04Z [---] followers, [----] engagements
"New example for @trpcio + @aisdk: - TRPC streaming from an AI SDK UI message stream - resuming an ongoing stream after reload/disconnect - useChat with custom TRPC transport class The demo uses the resumable-stream package with an in-memory redis server"
X Link 2026-01-19T11:58Z [---] followers, 19.8K engagements
"Retry on schema mismatch Weaker models often struggle with generating strict structured outputs (e.g. adhering to the JSON schema) Some common errors like missing braces trailing commas or JSON embedded in text can be auto-fixed (see my other posts) But when the model returns well-formatted JSON that simply doesn't match the schema we need to retry the request with a stronger model ai-retry for @aisdk now has a schemaMismatch retryable that checks if the result matches the defined schema It uses the schema from the original request and parses the result against this If it doesn't match it"
X Link 2026-01-27T12:43Z [---] followers, [----] engagements
"New example: custom useChat with @tan_stack query The useChat hook from the @aisdk reimplemented with plain React Query to support streaming and resuming after reload/navigation It's built on my previous example and continues to use AI SDK and TRPC on the server"
X Link 2026-01-30T11:15Z [---] followers, [---] engagements
"@SebastianB929 Yes I agree The Azure docs for non-OpenAI models are horrible - I couldn't really figure out if they support strict structured outputs and if they do if there's a difference between Cat Completions vs Responses API"
X Link 2026-01-28T07:41Z [---] followers, [--] engagements
"The key part is readUIMessageStream: it takes the stream of UI chunks from streamText and parses it into a partial UI message Every new chunk arriving on the client triggers an update that can be rendered on the UI This makes rolling your own useChat super easy New example: custom useChat with @tan_stack query The useChat hook from the @aisdk reimplemented with plain React Query to support streaming and resuming after reload/navigation It's built on my previous example and continues to use AI SDK and TRPC on the server https://t.co/QyrqaMHrmI New example: custom useChat with @tan_stack query"
X Link 2026-02-02T14:00Z [---] followers, [----] engagements
"@SebastianB929 I wanted to share an update on this: it turns out that Grok on Azure does not support structured outputs at all - none of the models. It's a bit misleading because Grok provided by XAI seems to support it. This table here show's that Grok only supports text as response format not JSON: I also verified it with a small example that Grok will consistently return additional text along a JSON text reponse"
X Link 2026-02-03T11:00Z [---] followers, [--] engagements
"I will work on stop and resume for my next example Usually these two actions are mutually exclusive if you wire up an abort signal from client to server But I think the use case can be separated into two different categories: - the browser implicitly aborts due to page refresh/close - the user explicitly stops the generation The 2nd case of user-initiated abort should work with a dedicated stop endpoint @zirkelc_ @rauchg As far I remember there is an issue doing this with Vercel AI SDK where it can't distinguish from the user stopping signal and other type of abortion like exiting tab"
X Link 2026-02-06T14:21Z [---] followers, [---] engagements
"@murshudoff Yes I think so. It includes the reasoning part with empty content so only the itemId in the provider metadata. Did you check on the server how the UI message looks like"
X Link 2026-02-08T14:21Z [---] followers, [--] engagements
"@rvbhadja What Ive found so far is that you need to remove all parts when it contains reasoning. It may work to keep text parts and just remove the provider metadata so it has no reference to the reasoning part"
X Link 2026-02-08T15:43Z [---] followers, [--] engagements
"npm finally got the UI it deserves with It looks amazing and shows all the information at a glance: downloads versions deps stars issues esm support . http://npmx.dev http://npmx.dev"
X Link 2026-02-01T11:56Z [---] followers, 41.5K engagements
"I'm a bit obsessed with resumable streaming Here's another CLI example: - server calls streamText and persists stream in Redis - 1st client initiates the stream - 2nd client resumes the running stream quickly catches up and then runs in sync with the 1st client"
X Link 2026-02-03T13:35Z [---] followers, 16.8K engagements
"Resumable streaming seems hard but most of the complexity was already solved by Vercel's package The rest can be implemented in roughly [--] lines I put the remaining logic into a reusable fn to copy-paste into my projects Then simply call it on send and resume endpoints I'm a bit obsessed with resumable streaming Here's another CLI example: - server calls streamText and persists stream in Redis - 1st client initiates the stream - 2nd client resumes the running stream quickly catches up and then runs in sync with the 1st client https://t.co/x7Dtd4qfh0 I'm a bit obsessed with resumable streaming"
X Link 2026-02-04T14:11Z [---] followers, 13.8K engagements
"It already works with Upstash you only need to provide the TCP connection string (not HTTP) Use the client from redis or ioredis for pub/sub support Then check the data monitor on Upstash to see the chunks fly-by when the 2nd client connects @zirkelc_ do you have a good example of it working with upstash @zirkelc_ do you have a good example of it working with upstash"
X Link 2026-02-05T09:04Z [---] followers, [----] engagements
"Has anyone figured out a reliable way to prune OpenAI messages with tool calls It looks like the stateful Responses API makes this nearly impossible due to the signing of messages"
X Link 2026-02-08T13:35Z [---] followers, [---] engagements
"@franmoretti_ @gr2m Nice Yes polling is an alternative way to do it As we are already using Redis for resumable-stream I just followed the same pattern and created a separate stop channel to publish/subscribe the stop event"
X Link 2026-02-09T15:07Z [---] followers, [---] engagements
"Can you help me understand this: I want to prune tool calls from previous turns to reduce the input token length. However just omitting a tool call often results in errors because the reasoning depends on it. Since reasoning items from previous turns are discarded anyway is it possible to inline the tool results without item_reference so there is not relationship to reasoning https://twitter.com/i/web/status/2020890766206288055 https://twitter.com/i/web/status/2020890766206288055"
X Link 2026-02-09T16:01Z [---] followers, [--] engagements
"@chisaehawng I think you need to explicitly unsubscribe from the stop channel or wait until Redis is closed"
X Link 2026-02-10T11:05Z [---] followers, [--] engagements
Limited data mode. Full metrics available with subscription: lunarcrush.com/pricing
/creator/twitter::zirkelc_