Sign in

Chris Cook

@zirkelc.dev
327 followers 405 following 210 posts

software engineer at heart ❤️ co-founder of flyweight.io aws community builder

PostsRepliesMedia
Chris Cook @zirkelc.dev · 28/07/2025
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.
010
Chris Cook @zirkelc.dev · 26/07/2025
Thanks for the article, I learned so many new things! I noticed you're using Date.now() for measuring; maybe using Node.js performance hooks will give you even more accurate numbers? nodejs.org/api/perf_hoo...
nodejs.org
Performance measurement APIs | Node.js v24.4.1 Documentation
110
Chris Cook @zirkelc.dev · 10/07/2025
I'm already working on improvements like auto-generated tags and summaries, and tougher CSP work-arounds. Check out the code and give it a star! ⭐ github.com/zirkelc/lambdalet
github.com
GitHub - zirkelc/lambdalet: Lambdalet.AI: Reinventing the bookmarklet.
Lambdalet.AI: Reinventing the bookmarklet. Contribute to zirkelc/lambdalet development by creating an account on GitHub.
000
Chris Cook @zirkelc.dev · 10/07/2025
Flow in a nutshell: 1️⃣ Lambda #1 uploads the HTML to S3 and queues requests 2️⃣ SQS FIFO for async processing and deduplication 3️⃣ Lambda #2 downloads HTML, converts to Markdown, extracts content via Bedrock and saves to Notion
100
Chris Cook @zirkelc.dev · 10/07/2025
Bookmarklets are back! 🔖 It uses a small JS snippet saved as a bookmark to POST the current page's HTML to an API Gateway. If a site’s 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.
100
Chris Cook @zirkelc.dev · 10/07/2025
Here's Lambdalet.AI - 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. I built this for the AWS Lambda Hackathon!
110
Reposted by Chris Cook
AWS Community Builder Blog Posts @awscmblogposts.bsky.social · 17/06/2025
✍️ New blog post by Chris Cook Flatten Array of Arrays using JSONata for AWS Step Functions #aws #programming #tutorial #javascript
dev.to
Flatten Array of Arrays using JSONata for AWS Step Functions
The Map state of AWS Step Functions returns an array of arrays as a result. For further processing,...
011
Chris Cook @zirkelc.dev · 18/06/2025
However, there are a few things to be aware of: dev.to/aws-builders...
dev.to
Flatten Array of Arrays using JSONata for AWS Step Functions
The Map state of AWS Step Functions returns an array of arrays as a result. For further processing,...
000
Chris Cook @zirkelc.dev · 18/06/2025
If your using JSONata instead of JSONPath for your AWS Step Function workflow, here's how you can flatten an array of arrays:
110
Chris Cook @zirkelc.dev · 11/06/2025
It would be nice if there was a way to pause Lambdas while waiting for a HTTP response. Like fire of a few requests, the Lambda goes into hibernate and automatically resumes when all requests have concluded.
000
Chris Cook @zirkelc.dev · 09/06/2025
Using a reasoning model for coding feels like driving a sports car in stop-and-go traffic
000
Chris Cook @zirkelc.dev · 27/05/2025
Long lived AWS IAM credentials for the management console would be nice
000
Chris Cook @zirkelc.dev · 22/04/2025
Glad it's open source github.com/gskinner/reg...
github.com
GitHub - gskinner/regexr: RegExr is a HTML/JS based tool for creating, testing, and learning about Regular Expressions.
RegExr is a HTML/JS based tool for creating, testing, and learning about Regular Expressions. - gskinner/regexr
000
Chris Cook @zirkelc.dev · 22/04/2025
Looks like my favorite Regex testing site is down 😭 regexr.com
regexr.com
Site not found · DreamHost
The owner of this domain has not yet uploaded their website.
010
Chris Cook @zirkelc.dev · 20/04/2025
In 2011, there was an proposal to change the type of null `typeof null === null` Too bad it didn't get accepted web.archive.org/web/20160331...
web.archive.org
harmony:typeof_null [ES Wiki]
000
Chris Cook @zirkelc.dev · 15/04/2025
How does this relate to unbuild? github.com/unjs/unbuild
github.com
GitHub - unjs/unbuild: 📦 A unified JavaScript build system
📦 A unified JavaScript build system. Contribute to unjs/unbuild development by creating an account on GitHub.
010
Chris Cook @zirkelc.dev · 11/04/2025
Cool, I always skipped over this section in the docs. Would be nice if it were possible to configure on a complete test() block like test.soft()
010
Chris Cook @zirkelc.dev · 07/04/2025
Maybe soon we can use response streaming from AWS Lambda with @trpc.io 👀 github.com/trpc/trpc/pu...
github.com
feat: support lambda response streaming by zirkelc · Pull Request #6680 · trpc/trpc
Closes #4474 🎯 Changes This PR adds support for AWS Lambda response streaming. Response streaming is only supported by Lambda Function URLs, not by API Gateway. I decided to add a new adapter awsLa...
010
Chris Cook @zirkelc.dev · 18/03/2025
Found this TODO in my codebase 😄 If I make a PR, will @vitest.dev accept it? 👀
010
Chris Cook @zirkelc.dev · 12/03/2025
I started a discussion for a new asymmetric matcher for @vitest.dev that checks if a property does not exist. Basically, the opposite of `expect.anything()`, could be named `expect.nothing()` Would love to get some feedback 🙏 github.com/vitest-dev/v...
github.com
Asymmetric matcher for property NOT exists (opposite of `anything`) · vitest-dev vitest · Discussion #7324
Hey, is there a way check if an object does not have a certain property? Basically, the opposite of expect.anything(): import { expect, test } from 'vitest' test('object has "apples" key', () => { ...
010
Chris Cook @zirkelc.dev · 02/02/2025
TIL `$*` captures all positional arguments into a space separated string You can abuse this for a Git alias to avoid typing the commit message in double quotes: `gc my commit message`
010
Chris Cook @zirkelc.dev · 31/01/2025
I can't emphasize enough how great this post about quantization is!
010
Chris Cook @zirkelc.dev · 29/01/2025
Thanks!
010
Chris Cook @zirkelc.dev · 29/01/2025
It's funny, @sindresorhus.bsky.social has a package for literally everything I search for. I should probably prefix my Google searches with "site:github.com/sindresorhus/"
000
Chris Cook @zirkelc.dev · 29/01/2025
Which podcast?
100
Chris Cook @zirkelc.dev · 29/01/2025
Is distilling the same as fine-tuning? Sounds like the only difference is that in distillation, the data comes from a bigger model instead of a human
000
Chris Cook @zirkelc.dev · 29/01/2025
I hope they will win at the end
020
Chris Cook @zirkelc.dev · 28/01/2025
I wrote a follow up on this topic on @dev.to dev.to/zirkelc/type...
dev.to
TypeScript CLI: Automate Build and Deploy Scripts
I would like to follow up on my previous post about TypeScript CLIs. Here's how I want to proceed: I...
020
Chris Cook @zirkelc.dev · 28/01/2025
Great explanation! 🙏
000
Chris Cook @zirkelc.dev · 27/01/2025
Building and deploying a React app to a static hosting service like Amazon S3 and CloudFront is a good example for a CLI in TypeScript. Adding Listr2 and Execa to create an easily extensible CLI with `build` and `deploy` command. asciinema.org/a/DFlVSxmoWD...
asciinema.org
untitled
Recorded by zirkelc
010
Chris Cook @zirkelc.dev · 27/01/2025
I always wondered how people create these beautiful terminal recordings. github.com/asciinema/as...
github.com
GitHub - asciinema/asciinema: Terminal session recorder 📹
Terminal session recorder 📹. Contribute to asciinema/asciinema development by creating an account on GitHub.
000
Chris Cook @zirkelc.dev · 25/01/2025
TIL Press the . key on any repository to switch github.dev github.com/github/dev
github.com
GitHub - github/dev: Press the . key on any repo
Press the . key on any repo. Contribute to github/dev development by creating an account on GitHub.
010
Chris Cook @zirkelc.dev · 24/01/2025
It’s like Turborepo?
000
Chris Cook @zirkelc.dev · 24/01/2025
It's so funny how confident LLMs are when they make mistakes. The model generates invalid code. You specifically ask them about lines of code. The model confidently explains how it works. You give them the error. The model is like "Ah, you're absolutely right - I apologize for my mistake!"
000
Chris Cook @zirkelc.dev · 24/01/2025
I also noticed this awhile ago and couldn’t wrap my head around it 😄 but it’s great that it works
110
Chris Cook @zirkelc.dev · 23/01/2025
What if `expect(obj).toMatchPrompt("...")` was a thing It's probably a stupid idea, but I couldn't resist and quickly implemented @vitest.dev custom matcher
010
Chris Cook @zirkelc.dev · 22/01/2025
Thanks!
000
Chris Cook @zirkelc.dev · 21/01/2025
What's the reason for switching?
110
Chris Cook @zirkelc.dev · 20/01/2025
I wish VSCode would accept S3 URLs Cmd+P, paste S3 URL, enter and it opens the file
000
Chris Cook @zirkelc.dev · 18/01/2025
I love how you can use TypeScripts' unique symbols as a parking spot for types 👀 Here's a simple query helper function to attach the result type to an object and infer it back later I've shared a complete example on @dev.to: dev.to/zirkelc/uniq...
010
Chris Cook @zirkelc.dev · 18/01/2025
Just found out about Microsofts' GenAIScript and not sure how to feel about it Anyone tried it yet? github.com/microsoft/ge...
github.com
GitHub - microsoft/genaiscript: Automatable GenAI Scripting
Automatable GenAI Scripting. Contribute to microsoft/genaiscript development by creating an account on GitHub.
000
Chris Cook @zirkelc.dev · 18/01/2025
What you do with TypeScript is pure magic 😄
030
Chris Cook @zirkelc.dev · 16/01/2025
Vitest v3 has just been released 👀 github.com/vitest-dev/v...
github.com
Release v3.0.0 · vitest-dev/vitest
Vitest 3 is here! There are a few breaking changes, but we expect the migration to be smooth. This release page lists all changes made to the project during the beta. For the migration guide, pleas...
000
Chris Cook @zirkelc.dev · 16/01/2025
First time I heard the term „Chat-driven“ development 😄
110
Chris Cook @zirkelc.dev · 16/01/2025
Linkt to the repo: github.com/vercel/ms/bl...
github.com
010
Chris Cook @zirkelc.dev · 16/01/2025
I noticed that Vercels' popular `ms` pkg for converting time units to milliseconds uses 365.25 as a multiplier for the days in a year. I know this is to account for leap years, but is that the right assumption to make here? Effectively this means that `ms(1y) != ms(365d)` without ppl knowing it
100
Chris Cook @zirkelc.dev · 15/01/2025
Here's @tkdodo.eu original post where I saw this pattern for the first time. It's also the first time that using TypeScripts' `unqiue symbol` has made any sense to me. tkdodo.eu/blog/the-que...
010
Chris Cook @zirkelc.dev · 15/01/2025
Inspired by React Query's `queryOptions()`, I made a little helper to add the type of the parameter and the return type to the query definition (yes, I know about ORM). The next step would be to use template literal types to parse the parameters and return type from the query string.
030
Chris Cook @zirkelc.dev · 15/01/2025
I just stumbled upon `unbuild` from @unjs.io Bundling for ESM and CJS is already super easy thanks to `tsup`, but `unbuild` looks even nicer! github.com/unjs/unbuild
github.com
GitHub - unjs/unbuild: 📦 A unified JavaScript build system
📦 A unified JavaScript build system. Contribute to unjs/unbuild development by creating an account on GitHub.
030
Chris Cook @zirkelc.dev · 13/01/2025
Oh that’s actually a great idea!
210