I'd Rather Be Scripting: Recent Episodes

Ash Arnwine & Kerri Shotts

Ash and Kerri go on mostly random tangents about technology, music, photography, and just about anything else. You never know what you'll hear!

View Details

This episode was recorded on April 14th, 2024

So... it's been awhile...So, it's been a little while since we last posted an episode... it feels like it's been about a hundred years or so! How is it possible we're already so far through the year?

We have a lot of topics in this episode given that it was a long time since our first episode of the year, so buckle up, get settled, and enjoy as we cover topics ranging from developing an cool email app, talk about interfacing with FPGAs, and cover a series of quick picks.

Ash's updates:* DevRel and AI: a department lead’s self-evaluation one year in * Using AI in Developer Relations * AI for the mere mortal web developer (YouTube)

VibeboxAsh's team at Nylas built such a cool web app that mixes AI and email to let you view emails in a new way—now your inbox is full of good vibes!

We discuss the development of this app, including Ash's attempts to use v0 by Vercel and Render for hosting.

Go check it out at https://vibebox.app.

FPGA UpdatesAs Kerri's mentioned in the past, she's busy learning FPGA development. In this section, she talks about some of the tools that she's been using to help connect with and debug her FPGA project.

  • Retroputer FPGA (in case you want to follow along—reminder that Kerri is not an expert with FPGAs, so take this code with a very large grain of salt)
  • Retroputer Emulator (also in progress)
  • Serial Port library for Node.js—Kerri uses this to create custom debugging tools written in JavaScript to explore the state of the CPU on the FPGA including a monitor and terminal. If you want to do something like this in the browser, it turns out that's an option too!
  • Ever want to build a dynamic text UI in Node.js using React? Turns out you can with ink! Kerri uses this to build out a live updating monitor that reflects the state of the CPU she's building in the FPGA.
  • Want to incorporate a cute TFT LCD into your hardware projects? Kerri's using this LCD from Adafruit and is slowly learning how to drive it.
  • Also mentioned: the Pinecil soldering iron

Our (semi-) quick picksWe end the episode with some quick picks of sites, tools, and apps we'd been playing around with recently.

  • From Ash: task management by Godspeed
  • From Kerri: AI Music by Suno
  • From Kerri: Calca app
  • From Ash: Tydlig app

Some of the songs that Kerri and her sister created with Suno AI:

  • Wrapped in plastic (prompt: "Country song about that plastic thingy on the bread bag")
  • Forever in motion (prompt: "A peppy song about the meaningless of time")
  • The Jumpin' Kitty Kat (prompt: "A peppy kids song about a happy kitty") (second variation is also cute)

View Details

This episode was recorded January 14th, 2024.

What's in store, 2024?Welcome to a near year and new season of I'd Rather Be Scripting! In this episode Ash and Kerri chat about the things they'd like to learn or do in 2024. Buckle up—we've got a lot to talk about in this one!

Kerri's topics:

  • FPGA (Field Programmable Gate Array) development using the Alchitry Au kit and Vivado. One learning already: getting the toolchain working on an Apple-silicon Mac is challenging! (Way easier with an Intel-based Windows machine.)
  • 3D Printing. Bambu Lab is one of the mentions as a potential buy: https://bambulab.com/en-eu.
  • Learning Latex (pronounced lay-tech). Of note, Texifier is a nice piece of software for having live previews of your latex documents. It's not free, but it's definitely worth the price if you're into latex. And it comes with a lot of latex packages available for download, so one doesn't have to spend a lot of time manually configuring your environment.
  • Musical topics, including learning more classical music and figuring out polyrhythms. https://4four.io/ploop is a great way to explore how two (or more) competing rhythms sound. Also looking to get into finger drumming a bit, with a Korg Nanopad.

Ash's topics:

  • Exploring Makey Makey. During the conversation, Ash mentioned his sound maker Github repo named Chikurin. Go check it out!
  • Coding topics, including Deno and asynchronous APIs
  • Generative AI in product
  • Native app development
  • Also mentioned a single monitor arm that Ash has been using during the intro.

View Details

This episode was recorded on December 17, 2023. Since we mention a lot of companies and products in this episode, it's worth noting that our episodes (including this one) are not sponsored. Our opinions are entirely our own. Links to any products do NOT contain affiliate links.

In this episode, Ash and Kerri look back at the year that was 2023, including some notable work and personal milestones while also looking at some hardware, software, and media that they found interesting in 2023.

Kerri's Top Hardware

  1. ESR 3-in-1 Charger Stand for MagSafe
  2. Samsung T7 Shield
  3. Insta360 Link Webcam
  4. Stream Deck (Honorable mention)
  5. Iphone 15 Pro Max (Honorable mention)

Ash's Top Hardware

  1. AudioTechnica Sound Burger
  2. Mac Studio
  3. Moleskin Cahiers

We have a brief chat about e-readers as we both have been considering getting one. The following were mentioned:

  • Remarkable 2
  • Boox Tab Ultra C

Kerri's Top Software

  • Rocket Money
  • BackupLoupe
  • DaisyDisk (honorable mention, along with a mention of GrandPerspective)
  • Adobe Firefly & Adobe Express

Ash's Top Software

  • Adobe Lightroom (honorable mention)
  • Ollama
  • Drafts
  • CheckYourList

Kerri's Top Games

  • Super Mario Wonder
  • Zelda: Tears of the Kingdom (honorable mention)
  • Dredge
  • Bugsnax

Ash's Top Media

  • Storyworthy
  • The Art of Leadership
  • The Boy and the Heron

View Details

This episode was recorded on October 1, 2023. The events mentioned in this podcast episode have already occurred, but you should be able to watch them online by visiting the Adobe MAX website.

In this episode, Kerri shares some Adobe updates with Ash, including some new features for Adobe Firefly and the general availability of the developer platform for Adobe Express add-ons. She also mentions a MAX session for more about using Adobe add-ons: Adobe Express Add-ons: Spark Creativity with Powerful Gems [S6712]. At the time of this recording some APIs were gated behind experimental flags, but these APIs are now available for all developers. (Note: Kerri is a product manager for extensibility at Adobe, but her opinions are her own.)

Links:

  • Adobe Firefly
  • Adobe Express
  • Adobe Express Add-on Documentation, including Audio and Editor (now Document Model) APIs

Ash also mentions the DevRelX summit, and a panel he was about to host on AI: 2.0 of your DevRel team - How DevRel teams can use AI today? (Recording) You should absolutely go check this panel session out — it was fantastic, with lots of great insights from the panelists.

Near the end we also chat about the new iPhone and upgrading from previous models.

View Details

This episode was recorded on September 4, 2023

IntroIn this episode, Ash and Kerri talk about the various resources they use to stay up-to-date with technology and related news. But first, they chat about some events that were coming up (in the past as of the release of this recording).

Traveling & Events:

  • apiDays London 2023 (YouTube playlist)
  • Adobe Max

We also chat a little bit about setting up kiosks for conferences and setting up education setups using GitHub Codespaces and Replit.

Before we delve into the main topic, we also make a few detours, as per usual:

  • Vergecast (Aug 23): Mythical computers and super apps
  • Hacking the Timex m857 (Found on Hacker News)
  • Atari 2600 reissue

Our sources for staying up-to-dateAsh and Kerri go back and forth sharing some of their sources for staying up-to-date in the ever-changing world of technology and related topics.

  • Hacker News
  • Reddit & Reddit-likes, including Tildes, Lobste.rs, and Lemmy's technology forum
  • Product Hunt
  • Indie Hackers
  • YouTube — and a channel right up our alley: Work From Hype. Also check out this interesting related article: "The $60 Monitor Worth Having on Your Desk"
  • Stratechery

Honorable mentions (including apps) that didn't get called out in the episode, but you should go check out anyway:

  • Techmeme
  • NetNewsWire (App)
  • GoodLinks (App)
  • Daring Fireball (& The Talk Show podcast)
  • Morning Brew
  • Technology Connections (YouTube)
  • Dave's Garage (YouTube)
  • Brad Colbow (YouTube)
  • PetaPixel (Site & YouTube)
  • Fan the Deck (YouTube)
  • Accidental Tech Podcast
  • Syntax.fm

View Details

Recorded July 23, 2023

IntroThis episode is all about desk setups! (And a little about desktop menu bar setups…)

But first, Kerri and Ash catch up on We Connect the Dots, Apple II Basic, and summer movies.

Desk setupsIt's been alluded to a few times, and now it's actually happening—Kerri and Ash share all about their home desk setups.

Some of the gear they cover includes:

  • Insta 360 Link webcam: https://www.insta360.com/product/insta360-link
  • Wave XLR: https://www.elgato.com/us/en/p/wave-xlr
  • Stream Deck+: https://www.elgato.com/us/en/p/stream-deck-plus-black
  • Stream Deck SDK: https://docs.elgato.com/sdk/plugins/overview

iStat MenusKerri and Ash then pull the trigger on doing a dive into their respective iStat Menu setups for monitoring their Mac hardware in real time. CPUs, GPUs, RAM, network, and more!

View Details

Beyond OpenAI APIsRecorded Jul 9, 2023

IntroKerri and Ash kick things off by talking about their 4th of July celebrations. Also they talk about learning Japanese and not learning German.

Music ML Update Kerri has some follow-up regarding a recent episode on music and ML.

Topics covered include:

  • Google’s AI Music Kitchen
  • MusicLM (Example; Dataset; Paper)

Kerri notes how these tools today can be great for idea generation, but won't necessary write your albums for you... yet.

Going beyond OpenAI APIsAsh is interested in exploring beyond calling OpenAI APIs for creating smart features.

On reason for the timing of this exploration is that Ash's team at Nylas is sponsoring WeAreDevelopers World Congress in Berlin and his team needs an AI tool that doesn't require a credit card when running a workshop.

Hugging Face joins the chat...

Hugging Face—which Ash will refer to as the GitHub for AI models—is quite useful with its free tier.

There's a Node.js module for Hugging Face, which Ash built a tiny, tiny demo around (GitHub repo here).

Ash notes that there is some dialog in the developer community around whether LangChain is pointless or not (Reddit; HackerNews).

You can decide for yourself by checking out the LangChain docs.

Also... LocalLlama is something Ash and Kerri want to play with.

Mac stuffAsh refrained from talking about his new Mac Studio in the last episode. He gets into it a little more in this one.

Our co-hosts marvel at comparing their lived experiences with MacBooks on Intel i9 vs Apple Silicon M1 vs a Mac Studio with M2 Ultra. Nothing scientific here in the comparison, but DiffusionBee speed gets discussed.

Desk stuffKerri and Ash talk about their different approaches to cable management:

  • Kerri: avoid
  • Ash: obsess

Obligatory xkcd: https://xkcd.com/2810/

Ash also brings up the topic of KVM switches.

  • Ash got: ELECABLE USB C Switch Bi-Direction 2 in 1 Out or 1 in 2 Splitter 8K@60Hz Video / 10Gbps Data Transfer Compatible with Thunderbolt Device (Black)
  • Kerri is eyeing: SABRENT KVM Switch, USB-C, 1-PC to 1-Display with 60 Watt Power Delivery (USB-KCPD)

View Details

Adobe Express Add-onsRecorded Jun 25, 2023

IntroTo kick things off, Kerri gives us an update on Adobe Creative Cloud Partner Days, where Creative Cloud platform developers gather to learn more about in-app and cloud APIs for Creative Cloud.

Kerri also tells Ash about the Star Trek Resurgence game, while Ash is trying to avoid talking about his new Mac Studio.

Adobe Express extensibilityAsh is excited he didn't have to debate what to name Adobe Express extensibility products: add-ons, addons, plug-ins, plugins, scripts, apps, widgets, etc etc. They are called add-ons! Please don't alter our current timeline by calling them something else!

Then our co-hosts do a deep-dive. To start, Kerri gives Ash a recap of what Adobe Express is.

Building on this basic understanding, Kerri and Ash look at what developers can do with the Express Add-on APIs:

  • Storage and content I/O
  • Icon generation
  • Recoloring
  • Workflows and automation

Then Kerri and Ash get into the how by talking through the Adobe team's priorities for APIs, which—at recording time in June 2023—were in private beta:

  • OAuth
  • Drag and drop
  • I/O
  • Networking

You can get the docs here.

Some early examples of Adobe Express Add-ons that come up:

  • Accessibility (A11y): add-ons for color blindness
  • Attention Insight: heat map based on AI
  • Notion: this add-on doesn't yet! But developers: go build that please! - Love, Ash
  • MediaGrab: scrape assets from web pages
  • Clipping Mask Pro: now with blobs!
  • NFTs: add-ons for managing them
  • VisionBoard: mood boarding

Kerri then walks Ash through the end user flow:

  1. Make a new blank asset
  2. Select add-ons in the left-hand nav
  3. Select and add-on and click the “Add” button

All-in-all, our co-hosts, while surely biased, are quite excited about the possibilities Adobe Express extensibility APIs represent.

Obligatory xkcdQuesting for info on a Safari color picker bug: https://xkcd.com/979/

View Details

IntroAsh kicks things off by sharing his recent appearance on the API Intersection podcast. The API Intersection episode covers best practices in Developer Relations (DevRel), particularly around Ash's 3 C's of hiring Developer Advocates (with a new 4th C added in the convo!), kickstarting your company's DevRel function, and making space for Developer Advocates to get great work done.

Then back to our own podcast episode: it's AI and creativity with Kerri and Ash from there!

The Art of AI: Generative Technologies for Image CreationStardate: zero degrees kelvin. Join our co-hosts as they traverse the exciting galaxy of generative AI technology for image creation.

Even as the technology is constantly evolving, Kerri and Ash consider the universal implications for creativity, the future of visual content creation, and what this could mean for digital artists and designers.

Making Music with AIThis episode takes a tuneful turn (thx ChatGPT, we'll allow this) as Kerri guides Ash into the world of AI music production. They explore a range of technologies that are reshaping how music is composed, produced, and performed:

  • Soundraw and Loudly, exploring new frontiers in AI music creation: Soundraw, Loudly
  • Fadr, the future of music generation: Fadr
  • Ecrett Music, revolutionizing music creation: Ecrett Music
  • AIVA, AI that composes emotional soundtrack music: AIVA
  • MusicLM from Google's AI Test Kitchen, an experiment in music language modeling: AI Test Kitchen, MusicLM
  • Muzic, an open-source project for generating music with AI: Muzic
  • Amadeus Code, the iOS app for creating unique song ideas with AI: Amadeus Code
  • MuseNet by OpenAI, a deep learning model that can generate 4-minute musical compositions with 10 different instruments: MuseNet

Join Kerri and Ash as they discuss these developments, their potential implications for the music industry, and what they're excited about in the fusion of AI and music.

In the 2020's, my SoundCloud checks out you! ♫

View Details

IntroKerri and Ash talk trees! Unfortunately for us all, Ash turns this into a recurring analogy about giving in to our AI overlords.

Talk to your OpenAPI specIf a tree is going to fall on your house, do you ignore it... or talk to ChatGPT?

Well, Ash is excited about OpenAPI specs that talk back. Our co-hosts talk through a fun approach to this:

  1. Paste in your OpenAPI spec
  2. Ask some yes/no questions about capabilities, correct as needed
  3. Ask some how-to questions, correct as needed
  4. Have fun!*

Fun = ask for Getting Started guides, look for issues, get it to code, etc*

As part of this, Kerri and Ash talk about learning how to ask good questions:

  • ❌ "What would a Getting Started guide look like?" → (You get an outline of best practices.)
  • ✅ "Write me a Getting Started guide for Node.js 18 developers." → (You get an actual Getting Started guide that a developer could use.)

Thank you AI. We are better humans now.

Writing a scraper with ChatGPTChatGPT can't scrape webpages at the moment, but it caaaaan tell you how!

Ash talks about using ChatGPT to write a webpage scraper in Node.js and clobber it together with the Google Books API.

ChatGPT does a great job functionally, but requires some guidance on coding opinions. Ash has coding opinions, so he asks the AI to:

  1. Use ESM imports instead of CommonJS requires
  2. Use async/await syntax instead of Promises
  3. Use Node.js-native fetch instead of axios

Kerri points out how interesting it is that ChatGPT fumbles with ESM imports in the same way that a human would.

Mid-project, Ash teeters on the edge between the theory and reality of an xkcd automation classic... but he triumphs in the end? (He does!)

More fun* Kerri mentions that she's looking into a game streaming setup. Ash plans to be the first sub. * Ash mentions that he recently spoke at apiDays. The video will be on the apiDays YouTube channel soon.

===

** ChatGPT advised that:

the bullet point "Fun = ask for Getting Started guides, look for issues, get it to code, etc." could be expanded to better explain what fun means in this context.

But we're confident the real human scripters know what fun means 👾

View Details

IntroAsh re-discovers the Upper West Side of Manhattan while Kerri goes fishing in Dredge on the Steamdeck!

Also! Star Trek feelings for both co-hosts at the end of Star Trek: Picard. For the true 80s kids, watch LeVar Burton's TNG Reading Rainbow Special for maximum feels.

Experimenting with AI in Developer RelationsAsh wrote a blog post about how DevRel teams can start using AI.

The post covers the following questions about AI in DevRel, some of which Kerri and Ash cover in this episode:

  1. How can AI enhance the way you work?
  2. How can developers use third-party AI to enhance their integrations with our APIs?
  3. How can AI enhance the developer experience we offer?
  4. How can AI enhance our product?

Kerri and Ash cover all kinds of stuff here, including:

  • A "sandwich model" for human-AI collaboration
  • The possibilities with using OpenAPI specs to provide an AI with context
  • Asking the AI for "white space" in your thoughts: "What am I missing?"
  • The copilot is you! And sometimes your pilot is a little bit drunk...
  • .... Yet perfection is not the bar we should be setting

Experimenting with AI in developer use casesA deep dive into question #2 above: AI-enhanced sample code!

Ash uses OpenAI APIs and Nylas APIs to triage his Gmail inbox. You can read a bit about it, or see the code.

At the end, our co-hosts talk about how strange it feels to use English strings as a functional part of your code. As an extension, they cover the perils of programmatically handling output from generative AI.

View Details

Kerri and Ash play with AI!

Image generationFirst up, our co-hosts look at text-to-font and text-to-image capabilities of these tools:

  • Adobe Firefly
  • Midjourney
  • Stable Diffusion

You can see all of the images we mention in this Mastodon thread.

Code generationNext up, code-generation tools like GitHub Copilot, GitHub Copilot for Docs, and ChatGPT get a look.

Here's the Adobe UXP plugin code that was generated (notice the sweet, sweet use of Papyrus):

```

const { executeAsModal } = require("photoshop").core;

const { LayerKind } = require("photoshop").constants;

async function main() {

try {

await executeAsModal(async () => {

const activeDocument = require("photoshop").app.activeDocument;

const textLayers = activeDocument.layers.filter(layer => layer.kind === LayerKind.TEXT);

await Promise.all(textLayers.map(async layer => {

layer.textItem.characterStyle.font = "Papyrus";

await layer.textItem.convertToParagraphText();

}));

});

} catch (err) {

console.log(err);

}

}

```

Links!Subscribe to I’d Rather Be Scripting on:

  • Apple Podcasts: https://podcasts.apple.com/us/podcast/id-rather-be-scripting/id1540518298
  • Overcast: https://overcast.fm/itunes1540518298/id-rather-be-scripting
  • Anywhere: https://www.idratherbescripting.com

Kerri

  • Mastadon: https://mastodon.cloud/@kerrishotts
  • Instagram: https://www.instagram.com/kerrishotts
  • GitHub: https://github.com/kerrishotts
  • LinkedIn: https://www.linkedin.com/in/kerrishotts
  • YouTube: https://www.youtube.com/c/KerriShotts

Ash

  • Mastadon: https://indieweb.social/@ashryan
  • Instagram: https://www.instagram.com/ashryan.io
  • GitHub: https://github.com/ashryanbeats
  • LinkedIn: https://www.linkedin.com/in/ashryan

View Details

Intro: Time!Kerri and Ash kick this one off by chatting about time! ⏱️

JavaScript libraries mentioned:

  • Luxon
  • data-fns
  • Moment

Also an old blog post by Ash showing how to avoid accidental object mutation with Moment. tl;dr for 2023 and beyond: Don't use Moment. They say so too!

Main topic: MermaidFor this episode's main topic, Kerri introduces Mermaid, which is a:

JavaScript based diagramming and charting tool that renders Markdown-inspired text definitions to create and modify diagrams dynamically.

Kerri takes us on a tour of the live diagram editor, and then through the docs where our cohosts ponder on different diagram types like user journeys, sequence diagrams, mindmaps, timelines, and more.

Closer: Diagram tool shoutoutsAt the end, Kerri and Ash call out some of their favorite diagram or diagram-adjacent tools.

Kerri's list:

  • Sequence Diagram (Mac App Store)
  • OmniGraffle
  • ditaa

Ash's list:

  • MindNode
  • Tydlig

View Details

In this episode, Ash and Kerri talk about ChatGP, the challenges of automating macOS, and a cool tool called "Bunch" by Brett Terpstra.

First up, our hosts catch up to see how the last few weeks have gone, including talking about coding with kids, and learning to exercise a new muscle with AI tools like ChatGPT and getting in the habit of keeping tabs on where these technologies are going. As a bonus, ChatGPT makes an appearance rendering some rhymes!

After the intro, our hosts delve into some of our past experiences with macOS automation, and we're introduced to a new tool that both hosts have wanted to try for awhile: "Bunch" by Brett Terpstra (https://bunchapp.co/). From the website:

Bunch is a macOS automation tool that takes a folder of plain text files containing lists of apps and commands to launch and provides an easy-to-use menu for triggering them.

Kerri walks Ash through her first experiences using Brunch, and the pair start brainstorming about interesting ways of incorporating it into their workflows.

Along the way a discussion of using "do not disturb" mode and focus modes comes up—be sure to check the documentation on using Bunch effectively Focus modes: https://bunchapp.co/docs/integration/focus-modes/

Some other tips:

  • Don't blindly invoke bunches (even the example bunch) without reading the script first!
  • You can quickly edit a bunch by cmd-clicking on a bunch in the app menu
  • Be careful with apostrophes in file names—that seemed to cause bunches not to load (but may have just been user error, too!)

Other links that came up during the discussion:

  • Elgato Streamdeck (https://www.elgato.com/en/stream-deck-mk2) and Bunch feels like a perfect match
  • My mom's Art tutorials site (she uses an Elgato Streamdeck for recording): https://www.redtoadartstudio.com/ and https://www.youtube.com/@redtoadartstudio/videos
  • Pianoteq (https://www.modartt.com/) has a JSON RPC interface, which could be interesting to automate (See https://github.com/shuhaowu/remote-for-pianoteq for web front-end example)

View Details

It’s been a few weeks since Kerri and Ash sat down to talk and they had a lot to say!


First up—follow-up! Kerri reports back on the We Connect the Dots Code-A-Thon. Topics covered include:

  • The care required when guiding early programming learners from local to prod
  • An update on JavaScript notebooks (covered in depth in the previous episode)

Tools mentioned:

  • RunKit
  • CodeSandbox
  • GitHub Pages
  • Netlify
  • Replit

Next, our co-hosts dive into Safari Web Extensions. Ash has been building one recently, and wants to share his developer experience thus far (JavaScript in Xcode, anyone?).

Handy links for Safari Web Extension development:

  • ”What’s new in Safari Web Extensions” WWDC22 video
  • "Broswer Extensions" on MDN docs
  • “Developing a Safari Web Extension” on Apple docs

At the very end, Kerri and Ash share the Safari Web Extensions they currently use on the daily. Mentioned are:

  • Ghostery (ad blocker)
  • NetNewsWire (RSS reader)
  • Apollo (Reddit client)
  • 1Blocker (ad and tracker blocker)
  • Super Agent (automatic cookie consent)
  • GoodLinks (bookmark and link manager)

Follow your co-hosts on:

Kerri

  • Mastadon: https://mastodon.cloud/@kerrishotts
  • Instagram: https://www.instagram.com/kerrishotts
  • GitHub: https://github.com/kerrishotts
  • LinkedIn: https://www.linkedin.com/in/kerrishotts
  • YouTube: https://www.youtube.com/c/KerriShotts

Ash

  • Mastadon: https://indieweb.social/@ashryan
  • Instagram: https://www.instagram.com/ashryan.io
  • GitHub: https://github.com/ashryanbeats
  • LinkedIn: https://www.linkedin.com/in/ashryan

View Details

I'd Rather Be Scripting is back after the holiday break!

Kerri and Ash start with follow-up from "Episode 7: Decker, Lil, and a good dose of HyperCard nostalgia". Decker developer John Earnest reached out with a few app updates relevant to episode 7, including:

  • X-Ray Specs, a super power for seeing through the Lil script editor into the deck to speed up script development
  • Improved column formatting for creating and manipulating table data on the fly (as well as documentation improvements for column formatting)
  • Confirmation that locking a deck is essentially kiosk mode in Decker

The Coding with Nylas YouTube video that Ash mentions is "Episode 41: How to build an agenda using Decker (HyperCard) and Ruby".


For our main topic, Kerri talks to us about her findings in the land of JavaScript notebooks. Specifically, Kerri shares some details about:

  • RunKit
  • Observable
  • Codebook Visual Studio Code Extension
  • Node.js Notebooks (REPL) Visual Studio Code Extension

Kerri is looking into JavaScript notebooks to support her students at We Connect the Dots, which educates students about Science, Technology, Engineering, Arts, and Math (STEAM).

Check out the We Connect the Dots Code-A-Thon 2023 page for details in case you'd like register someone who'd like to learn to code (ages 13-18) in the future, or if you'd like to sponsor events in the future!

View Details

In this episode Ash and Kerri look back at what technologies were on our minds in 2022, and we do a rapid fire look ahead at those technologies we want to learn more about in 2023.

Kerri's 2022 LookbackFirst, Kerri talks about her experiences learning Swift and Swift UI in 2022 as a way to learn new technologies and also build a MIDI-based macOS and iOS app. Along the way we talk a little about Apple's lack of good documentation, but also about some of the great resources that are available.

For those wanting to dig into Swift and Swift UI, these links may prove useful:

  • Hacking With Swift
  • Swift UI Quick Start (from Hacking with Swift)
  • r/SwiftUI Reddit community
  • Swift UI Lab

Kerri's next two topics were related to JavaScript:

  • JS Tooling, especially bundlers -- Kerri is using and loving esbuild for bundling complex projects extremely rapidly.
  • Atomics and SharedArrayBuffer are available again in all browsers, as long as you follow a couple of rules: 1) serve from a secure context, and 2) set some CORS headers. See this MDN article for more.
  • An easy way to set the above CORS flags for local development is to add the "local-web-server" npm package, and modify your "serve" script to use it, like so: ws --cors.opener-policy same-origin --cors.embedder-policy require-corp. There's lots of other settings you can specify (port, source folder, etc.) -- check out the CLI docs.

Ash's 2022 LookbackFirst, Ash talks about Open API tooling, in particular OAS Tools. For an entire deep dive, see Episode 6, "OAS Tools Deep Dive".

Second, Ash talks about his journey in navigating the various front-end stacks that are available -- from tooling to view layer to layout and styles. If you want to learn more about Tailwind (mentioned briefly), see episode 8, "Bootstrap and Tailwind.CSS: component-first vs utility-first frameworks".

Lastly, Ash talks about some full-stack app hosts, integrating with databases, and more. Some sites mentioned in the episode that you might want to check out:

  • Vercel
  • Railway
  • Fly.io
  • Netlify
  • Cloudflare
  • Digital Ocean
  • Supabase
  • PlanetScale
  • Neon
  • Prisma

Rapid-fire 2023 LookaheadBecause we're chatty, our look back at 2022 took the majority of the episode. So we did a quick rapid-fire round of what technologies we most want to explore in 2023.

Kerri's list:

  • Learning more Swift, including some libraries: MidiKit, AudioKit, but also wants to try to build an AudioUnit (Apple's version of VST3 plugins for DAWs).
  • Mastodon has an API! Kerri wrote a bot for Retroputer for Twitter, but now that she's doing more on Mastodon, she wants to learn more about the Mastodon API. (Oh, and if you want to play with Retroputer, a recent-ish version is here, on Netlify -- just note -- a lot is broken, docs are in a state of flux, and it has a long way to go.)
  • Upcoming JavaScript proposals (in particular improvements to sets and iteration... we briefly mention the pipe operator, and Ash has questions!). A great resource for all things modern JS is https://2ality.com/.

Ash's list:

  • Frameworks that mix the client and server. Some he wants to check out: Astro, Next.js, Remix
  • Homelabbing
  • Scratch (the visual programming language)

Mastodon SocialsBoth Ash and Kerri show their newbie status talking about how to contact us on Mastodon. Our profiles are:

  • Kerri: https://mastodon.cloud/@kerrishotts
  • Ash: https://indieweb.social/@ashryan

That's a wrap!With this episode, we're done for the year! We hope you and yours have a wonderful holiday season, and a fantastic 2023! We'll have no shortage of things to talk about in 2023, and so we'll see you the new year!

View Details

Kerri and Ash are deep diving into Logic Pro MIDI scripting this time.

===

But first! WiFi routers! 🥱😴😪 Because Ash is done with Eero yet has Mesh Needs™️. He's opted for the Asus ZenWiFi AX 6600 2-pack and things are good so far.

Aaand while we're in WiFi router corner, can we just pour one out for Apple AirPort Express? Ash's finally died a few years ago, but Kerri still has one doing its thing reliably.

===

For our main topic, Kerri introduces Ash to the world of MIDI scripting in Apple Logic Pro.

But not in the language you thi-iiiink: it's a JavaScript API!

Some links discussed:

  • "Use the Scripter MIDI plug-in in Logic Pro" on Apple Support
  • "Use the Scripter MIDI plug-in Script Editor in Logic Pro" on Apple Support
  • "MIDI processing functions in Scripter MIDI plug-in in Logic Pro" on Apple Support (this is the API documentation)
  • "An Introduction to Scripting in Logic X" on Envato Tuts+ (2015)
  • andrewjhunt/logic-pro-scripter on GitHub
  • LPX Scripts on GitHub

Gists of Kerri's plugins (these are conversions from other scripts for other DAWs; see each one's header for the original inspiration):

  • Loud Note Correction Script for Logic Pro X (based on a script by herqX)
  • Pitch-based Velocity Transform plugin for Logic Pro X (Based on this script by fraaly)

Kerri's general tips and tricks for getting started with Logic Pro scripting:

  1. Use the script sample source code to learn the API—there are a lot of them, and you'll find valuable snippets of information in each one!
  2. Find tutorials; the official docs are... sparse and unsearchable—the links above are a great start.
  3. Find 3rd-party docs class-and-method references
  4. Set magic globals with var, not "const" or "let" (e.g.: var NeedsTimingInfo = true;)
  5. Click "Run script" to push your script changes to the app; saving alone will not push the changes

The takeaway? If you want to script MIDI in Logic Pro, this is your option. The API speaks the languages of MIDI and musical timing natively, which is a beautiful thing. But be prepared for a friction-heavy developer experience, especially if you're familiar with modern development environments such as Visual Studio Code.

===

Lastly, Kerri and Ash talk about developer experience as a general subject, in response to a nice Mastodon post by our mutual friend Pablo Klaschka.

Our co-hosts talk about the critical role documentation plays in DevEx, and particularly how important docs search is, despite the short shrift it is often given.

The DevOps.com article that Ash was recently interviewed for by Bill Doerrfeld is "Looking to the Future of Developer Experience".

View Details

Kerri and Ash talk CSS frameworks and the difference between component-first and utility-first frameworks.

The frameworks in the mix are:

  • Bootstrap: the venerable component-first framework that has made it easy to create responsive, grid-based layouts for over a decade.
  • Tailwind CSS: a utility-first CSS framework that encourages use of utility classes over creating bespoke names for every div in your HTML.

Since Ash is currently exploring Tailwind CSS, our co-hosts look at it more closely, specifically calling out these developer resources:

  • Tailwind CSS framework guides
  • Utility-first fundamentals
  • The Tailwind CSS just-in-time (JIT) engine

===

And! Here are the follow-up items mentioned from previous episodes:

  • “Learn Prisma in 60 minutes” on Web Dev Simplified
  • “Create an entity resource file for OAS Tools with Prisma” on ashryan.io
  • OAS Tools documentation > Prima ORM integration

View Details

Kerri and Ash have spent some time with Decker—created by John Earnest—which bills itself as:

a multimedia platform for creating and sharing interactive documents, with sound, images, hypertext, and scripted behavior.

It's a new take on HyperCard, a classic Mac app from the 80s and 90s that both of our hosts share their nostalgia for.

If you're getting started with Decker, here are the 3 key resources mentioned during the conversation:

  • Decker user manual
  • Lil scripting language documentation
  • 5GUIs example deck

Check out the interactive Decker decks that our hosts made and deployed:

  • Podcast episode browser by Kerri
  • Todo app by Ash

The Lil script that Ash describes for adding a row to a grid is:

on addItem do

todoList.value: insert

item:todoField.text

status:false

into todoList.value

todoList.format:"sB"

end

===

Kerri mentions getting her Panic Playdate midway through. If you're wondering what that is, you can find out all about it on https://play.date/.

View Details

Kerri and Ash continue chatting about Open API tooling for Node.js and Express! This episode of I'd Rather Be Scripting is all about OAS Tools, an open source Node.js server-side framework with full support for OpenAPI v3. Our co-hosts use the https://oas-tools.github.io/docs/getting-started/quickstart (OAS Tools Quickstart) as a path to discussing the tool's features, including: What an "entity resource" is Creating an OpenAPI document from an entity resource Creating a Node.js/Express server from an OpenAPI document Understanding the generated server entry point, controllers, and services Validating a server's adherence to an OpenAPI spec

... all with OAS Tools. Kerri and Ash also discuss some potential wishlist items for the tool, including: Ensuring that generated service responses adhere to OpenAPI document schema Continual controller/service generation (see https://github.com/orgs/oas-tools/discussions/15 (GitHub discussion #15) for Ash's question and the friendly response from one of the maintainers) Ability to eject from the OAS Tool dependency in order to gain tighter visibility and control over the usage of the Express library

We hope you enjoy this deep dive into OAS Tools!

The Changelog podcast episode that Ash references midway through is https://changelog.com/podcast/511 ("The terminal as a platform"), which covers https://www.textualize.io (Textualize), a company that builds platforms for terminal-based UX/DX.

View Details

Kerri and Ash are back in the command line, which will surprise no one. First up, is a discussion of Kerri’s recent adventures with https://www.warp.dev/ (Warp terminal) and https://fig.io/ (Fig CLI). Our hosts discuss autocompletes and AI tools in the terminal. Kerri also shares a difficulty she found getting Warp and https://spaceship-prompt.sh/ (Spaceship prompt) to play well together. If you’re following along, this was her remedy: if [[ $TERM\_PROGRAM != "WarpTerminal" ]]; then    ZSH\_THEME="spaceship" fi Ash then retraces some of his steps playing around with OpenAPI 3.x. Many tools are discussed! From API spec creation tools to server generation tools (like https://openapi-generator.tech/ (OpenAPI Generator) and https://swagger.io/tools/swagger-codegen/ (Swagger Codegen)) and beyond. Of course, GitHub Copilot makes another appearance. If you’re ever looking for OpenAPI tools, check out https://openapi.tools/ (https://openapi.tools/). Wondering what’s the difference between Swagger and OpenAPI? https://swagger.io/blog/api-stratagey/difference-between-swagger-and-openapi (This article will help you with that). The Stratechery interview that Ash references is https://stratechery.com/2022/an-interview-with-daniel-gross-and-nat-friedman-about-the-democratization-of-ai/ (“An Interview With Daniel Gross and Nat Friedman About the Democratization of AI”).

View Details

Kerri and Ash cover a couple favorite topics: command line shells and coding on the iPad. First up! Spaceship prompt, which bills itself as a "minimalistic, powerful and extremely customizable Zsh prompt". https://spaceship-prompt.sh Kerri and Ash explore what Spaceship's async capabilities can enable for a zsh prompt and consider why having a battery indicator in your shell prompt might be useful. Of course, fish shell and Oh My Zsh do not go neglected in the conversation. Next up! Coding on the iPad with Code App, a native IDE for iPad. https://thebaselab.com/code/ Our hosts consider the pros and cons of two different approaches to enabling real development work on iPad: thin clients like GitHub Codespaces (browser-based, server-side execution) versus native applications like Code App (app-based, local execution—with some exceptions). Kerri and Ash also theorize on what it must be like to get local code execution environments for Node.js, Python, PHP, and C/C++ past Apple App Store review.

View Details

Kerri and Ash go down a GitHub Copilot rabbit hole, but not for coding apps like you might expect! Instead, they are exploring the possibilities of authoring technical tutorials for developers where 95% of the writing is done by AI/ML. In this episode, you'll get to listen to thrilling audio content wherein Ash hits the tab button in VS Code until he's got a Node.js and Express tutorial written almost entirely by GitHub Copilot. What does it all mean?! Kerri and Ash want to know! Can GitHub Copilot do QA for an article that it mostly wrote on its own? Could Copilot please just write a sample app, author the tutorial, then QA everything already thx? Can we simply tab our way into writing bespoke tutorials for technologies we don't even know yet with GitHub Copilot? Will humans still at least get to make the memes?

See below for the text of the article GitHub Copilot created (in proper Markdown!) based on a seed of 8–10 words provided by a soon-to-be-obsolete human, including the inexplicable link in the "Next steps" section to the Photoshop UXP API documentation. Relax and enjoy this podcast, humans; the AIs can do the work now. ===

Making a server with Node.js and Express

In this tutorial, we will make a simple server with Node.js and Express. We will also use the express-generator package to generate the project.

Prerequisites

  • Node.js
  • npm
  • Express

Building the project

First, we will create a new project using the express-generator package. This package will generate a new project for us, and we can use it to create a new project. bash $ npm install express-generator -g $ express myapp $ cd myapp $ npm install Now, we can run the project using the npm start command. bash $ npm start This will start the server on port 3000. We can now visit the server at http://localhost:3000.

Adding a route

Now, we will add a new route to the server. We will add a new route to the routes/index.js file. js router.get("/hello", function (req, res, next) { res.send("Hello World!"); });

Now, we can visit the route at http://localhost:3000/hello.

Conclusion

In this tutorial, we learned how to make a simple server with Node.js and Express. We also learned how to use the express-generator package to generate a new project.

Next steps

Resources

View Details

Kerri and Ash reappear after a Marvel-style blip for episode 2 of I'd Rather Be Scripting. This episode covers some fun stuff including: Node.js, Deno, and Bun: emerging variety in JavaScript server runtimes The JavaScript spec versus browser APIs: the oft-overlooked distinction between the two Browser APIs, Node APIs, and popular node modules: factors in choosing what to support in new development environments like UXP for Photoshop and Bun for servers Performance considerations when choosing a Mac for development work GitHub Codespaces and the state of web development on the iPad Steam Deck's hackability ... and probably more

View Details

Thoughts on https://www.apple.com/macos/big-sur/ (macOS Big Sur) Border Radius! Touch MacBooks? iPad Pro for Developers https://apps.apple.com/us/app/play-js-javascript-ide/id1423330822 (Play.js) https://apps.apple.com/us/app/ish-shell/id1436902243 (ISH Shell) https://apps.apple.com/us/app/a-shell/id1473805438 (a-Shell) No-Code Scripting Limitations (especially iOS Shortcuts) Photography https://fujifilm-x.com/global/products/lenses/xf27mmf28/ (Fujinon 27mm)