Writing
Date
Piece
My third year leading AI coding sessions at ITP Camp I guess I can't help myself
Help Shape Kyoto Tech Meetup A call for organizers to help our meetup grow and evolve
February Community Hack Day wrap-up A recap of what we built and info on the next hack event in March.
Kyoto Tech Meetup: January 2026 wrap-up Updates from our morning coffee and hack day events last month. Also, this month's schedule.
How the Kyoto Tech Meetup website works TL;DR: Astro, React, Tailwind, GitHub Actions, GitHub Pages, RSS.
Kyoto Tech Meetup Community Hack Day Wrap-up for December A recap of the December Kyoto Tech Meetup Community Hack Day at FabCafe Kyoto. AI projects, site features, dev tools, and more!
powRSS ashryan.io is now on RSS feed aggregator powRSS.
Kyoto Tech Meetup’s First Hack Day The first Kyoto Tech Meetup Community Hack Day is coming up. We've also got a GitHub org and a starter site.
Quietly intelligent app features with OpenAI Agent Builder How I used OpenAI’s Agent Builder to power an “invisible AI” feature in Collxn. What I learned about LLM reliability, schema design, and control. "Just 20 more minutes..." On taking notes at the end of workday
Kyoto Morning Tech & Coffee: First Session Is On Morning Tech & Coffee launches in Kyoto this month. Software & hardware builders feel free to drop in.
New Collxn site and blog Who dis. Behind the Drop: Collxn's Daily Email Stack Every morning, Collxn surfaces one record from your vinyl collection and sends it to your inbox. The feature’s called Daily Drop, and under the hood, it's powered by a stack that's simple to read, quick to tweak, and safe to run in preview environments.
Here’s how it all fits together.
System Architecture
The system breaks down into three clean layers:
1. email-service.ts handles logic and orchestration: fetching data, rendering, sending, logging.
2. copy.ts provides all the written conte
From Vision to Version: My Doc-Driven, AI-Assisted Product Workflow How I use a simple wiki structure in my monorepo to manage product alongside AI agents in my IDE. Help Kickstart the Kyoto Tech Meetup: Morning Coffee Edition Kyoto Tech Meetup launches weekly morning coffee sessions. Connect with local software and hardware builders, share projects, and help select our first cafe.
New Portfolio Page A curated portfolio of my work, including talks, writing, open source projects, and conference contributions from 2015 to present.
AboutIdeasNow Get past context, future explorations, and what I'm focused on today on 3 simple pages.
NYU ITP Camp 2025, week 1 A recap of the sessions I've led at ITP Camp 2025 thus far. AI coding and records, of course. Your periodic reminder of the impermanence of all things Don't read this if you plan to live forever.
Oops all BK: NYU ITP in June NYU ITP Summer Camp starts again next week. I'm pondering what sessions I might facilitate.
Astoria Tech Meetup, late May Astoria Tech Meetup goings-on. Within is a partial recap of last week's event, as well as links for you to RSVP for our hack session coming up this week. Val Town Prototype Showcase I've written about Val Town (a few times before). But it doesn't seem I've ever mentioned that the prototype of Collxn was written as a val.
I'm a huge fan of the service for rapid ideation and prototyping. For a hackers-and-painters developer, it's really the best sense of idea-to-deploy freedom I'm aware of at the moment. [1]
Today, at some point between 12pm–1pm EDT, I’ll be showing off how the seed of Collxn came to be at the very first Val Town Hall event. Come check it out and get insp
Color Studies Studio Sharing a few of my favorites from Color Studies Studio
The short answer? A lot of bullshit. Wherein I feel ways about not being able to script through my own health data
Collxn I'm working on something new to help me explore my record collection in new ways. I think other collectors may find it fun too. WE HAVE APOSTROPHES Y'ALL Some updates for Subcurrent, an open source service that creates a stream of content from the Astoria tech community.
If you didn't have a question, don't subject yourself to an endless stream of answers With LLMs, looking for the big picture or seeking the pros, cons, and white space in and around my path of inquiry is really all on me as the human.
No cloud required: local LLMs as a practical app dependency TL;DR: Ollama on a MacBook Air with M4 is great and it's a taste of the future. Developers should try it now.
Gall's law "A complex system that works is invariably found to have evolved from a simple system that worked."
Subcurrent RSS bot for Discord Subcurrent now posts RSS updates to Discord. Will it spark discussion around the content?
Facebook → /dev/null Wherein 9 years after I decide to do so, I delete my Facebook account.
Subcurrent Subcurrent brings together content from Astoria Tech community members into a single web page and RSS feed.
Zero to Deploy with Claude.ai and Val Town Today I streamed my first video on Twitch, showing how to use Anthropic's Claude.ai and Val Town to ship a small frontend web app. Batch loading resources in EmbedJS for RAG A look at dynamically batch loading RAG resources with EmbedJS.
AI-powered fun in p5.js Using AI in p5.js by wiring up a sketch to a serverless proxy function on Val Town. You're going to Val Town Val Town's runnable vals (their word for "gists") can be triggered manually, via email, or as an HTTP endpoint or cron job.
RAG in Node.js with EmbedJS A look at a Node.js library called EmbedJS for RAG AI applications along with a repo to help you get started.
NYU ITP Camp 2024 sessions NYU ITP Camp 2024 is underway. Here's Info on sessions I'm leading during the first week—one around vinyl, the other on AI.
The 3 Cs of Developer Advocacy The 3 Cs of Developer Advocacy state that, all things being equal, when hiring for Developer Advocates, we must look for 3 competencies: coding ability, community stewardship, and content creation.
DevRel and AI: a department lead’s self-evaluation one year in Reflecting on the past year's journey of integrating AI into our Developer Relations initiatives at Nylas, I'm taking a moment for self-assessment.
Using Nylas and OpenAI to triage email Solving email inbox triage with Nylas APIs and OpenAI GPT APIs.
Experimenting with AI in DevRel Using AI tools like ChatGPT and GitHub Copilot to enhance DevRel work, build inspiring code samples, and enhance developer experience.
Create an entity resource file for OAS Tools with Prisma Make an entity resource file with Prisma that can be used with OAS Tools to generate an Open API document and a Node.js/Express server.
gRPC: The front door for Node.js developers As I've been learning more about gRPC over the last couple of months, I've worked with a few resources that have been quite helpful. I'd like to share those here.
Astoria Tech Meetup #22: Containerizing a Node.js app... LIVE! Our next virtual event is this week. We’ll be containerizing the Astoria Digital MuckRock project.
Number sorting gotcha with JavaScript Problem: Sorted arrays are coming back in an unexpected order... sometimes. Safari is behaving differently than Chrome and Node.js. Let’s look at what to do.
I'd Rather Be Scripting, episode 1 Kerri Shotts and I started a little podcast called I'd Rather Be Scripting.
Astoria Tech Meetup #19: Streamlining with Docker Compose A virtual event coming up on Wednesday, August 26 from 6:30pm to 8:00pm
Spin up a Node.js/Express server and a Postgres database Quick steps to create a Node.js, Express, and Postgres playground.
MuckRock API Looking at how to analyze basic health metrics of the FOIA request system using the MuckRock API.
Fuzzy search with Fuse.js Helping users around spelling errors with fuss-free JavaScript library for fuzzy search.
Astoria Digital on Computerworld Our open source Volunteer Dispatch bot is available for use by other organizations.
Finding and killing Node.js processes on Mac Port 3000 is already in use. 💣
First steps in Rust Getting started with Rust.
Taking an in-person developer event online Is online-only the future of events? The good and the difficult in taking a developer event online.
Make a micro repo How splitting off into a micro repo can speed up your iterations and help you produce better results.
Cloning Dates in Moment.js Avoiding unexpected date mutations by cloning.
CLI module for Node.js My go-to node modules for basic command line argument parsing.
Share edit in Lightroom Another new thing that came to Lightroom yesterday is the Share Edit (beta) feature.
The Lightroom-Photoshop round trip on iPad is here The cross-app workflow sings, and I'm excited to have Photoshop available to me as a companion to Lightroom on iPad. Shelves CLI So now I've got this little Node.js shelves CLI that I likely will never need again.
Node module for changing your MAC address Spoof is a Node.js module that makes it super simple to change your MAC address on the fly. For macOS, Windows, and Linux.
Playball CLI Check out the Playball CLI for watching MLB games in your terminal.
Upstate bird Shot on a small trail hike in Garrison, NY.
Created with:
* Fujifilm X-T20
* XF 50-140mm 2.8
* Lightroom Bootstrap an XD plugin with xdpm A pull request for bootstrapping XD plugins with the xdpm CLI.
“Moving to zsh” talk at MacSysAdmin 2019 Check out the recording of “Moving to zsh” from MacSysAdmin 2019 if you’re looking for a way in to learning about zsh, the new default shell in macOS.
Ghost CMS I’m going with the Ghost CMS for publishing this blog.
XD plugin modals: Handle your exits There are multiple ways for a user to exit a modal-based XD plugin, and for your plugin’s code to handle those exits. Let’s take a look. Prompt by Panic Shelling into a local Mac with Prompt 2 for iOS by Panic, an ssh client for iPhone and iPad.
Finding out where zsh aliases and settings are defined Grepping my zsh setup teaches me that many of my shell aliases and settings are coming from Oh My Zsh.
4 tips for creating XD plugin modal UI A few basic points to keep in mind when creating modal dialog UI for XD plugins. Learning about your zsh aliases I went through Armin Briegel’s “Moving to zsh” yesterday. It was illuminating, particularly in regard to zsh vs Oh My Zsh features. Take a basic example: aliases.
Brushing up on zsh and Oh My Zsh Since macOS has now moved from bash to zsh, it seems like a fine time to revisit the basics of my preferred shell.
Restarting It's the Saturday after Adobe MAX, coming down from what is a very busy time each year, so I wanted to start somewhere simple: my Terminal.