Ash and Kerri go on mostly random tangents about technology, music, photography, and just about anything else. You never know what you'll hear!
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.
Our (semi-) quick picksWe end the episode with some quick picks of sites, tools, and apps we'd been playing around with recently.
Some of the songs that Kerri and her sister created with Suno AI:
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:
Ash's topics:
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
Ash's Top Hardware
We have a brief chat about e-readers as we both have been considering getting one. The following were mentioned:
Kerri's Top Software
Ash's Top Software
Kerri's Top Games
Ash's Top Media
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:
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.
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:
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:
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.
Honorable mentions (including apps) that didn't get called out in the episode, but you should go check out anyway:
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:
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!
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:
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:
Obligatory xkcd: https://xkcd.com/2810/
Ash also brings up the topic of KVM switches.
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:
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:
You can get the docs here.
Some early examples of Adobe Express Add-ons that come up:
Kerri then walks Ash through the end user flow:
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/
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:
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! ♫
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:
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:
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:
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 👾
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:
Kerri and Ash cover all kinds of stuff here, including:
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.
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:
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:
Kerri
Ash
Intro: Time!Kerri and Ash kick this one off by chatting about time! ⏱️
JavaScript libraries mentioned:
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:
Ash's list:
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:
Other links that came up during the discussion:
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:
Tools mentioned:
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:
At the very end, Kerri and Ash share the Safari Web Extensions they currently use on the daily. Mentioned are:
Follow your co-hosts on:
Kerri
Ash
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:
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:
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!
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:
Kerri's next two topics were related to JavaScript:
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:
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:
Ash's list:
Mastodon SocialsBoth Ash and Kerri show their newbie status talking about how to contact us on Mastodon. Our profiles are:
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!
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:
Gists of Kerri's plugins (these are conversions from other scripts for other DAWs; see each one's header for the original inspiration):
Kerri's general tips and tricks for getting started with Logic Pro scripting:
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".
Kerri and Ash talk CSS frameworks and the difference between component-first and utility-first frameworks.
The frameworks in the mix are:
Since Ash is currently exploring Tailwind CSS, our co-hosts look at it more closely, specifically calling out these developer resources:
===
And! Here are the follow-up items mentioned from previous episodes:
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:
Check out the interactive Decker decks that our hosts made and deployed:
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/.
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
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.
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”).
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.
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. ===
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.
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.
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.
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.
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
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)