I'd Rather Be Scripting

I'd Rather Be Scripting

By Ash Arnwine & Kerri ShottsTechnology
Download on the App Store

I'd Rather Be Scripting episodes

  • Generative AI and ChatGPT in Developer Relations
    Intro

    Ash 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 Relations

    Ash 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 cases

    A 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.

    1 hr 23 min
  • 🤖 AI-based image and code generation tools

    Kerri and Ash play with AI!

    Image generation

    First 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 generation

    Next 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

    1 hr 30 min
  • Diagramming with Mermaid!
    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: Mermaid

    For 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 shoutouts

    At 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

    1 hr 23 min
  • ChatGPT, Automation, and our first experiences with Bunch

    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)

    1 hr 24 min
  • Building Safari Web Extensions

    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

    1 hr 47 min
  • JavaScript notebooks: RunKit and Observable

    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!

    1 hr 25 min
  • 2022 Year-end Review & Looking Ahead to 2023

    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 Lookback

    First, 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 Lookback

    First, 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 Lookahead

    Because 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 Socials

    Both 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!

    1 hr 31 min
  • Script MIDI in Apple's Logic Pro using JavaScript and the MIDI FX Scripter Plugin

    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".

    1 hr 38 min
  • Bootstrap and Tailwind CSS: component-first vs utility-first frameworks

    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

    1 hr 24 min
  • Decker, Lil, and a good dose of HyperCard nostalgia

    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/.

    1 hr 10 min

About I'd Rather Be Scripting

From the publisher's feed

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