
All Play w/ Ryan Hefner
39 episodes
038 — Extensions of Me
The OpenGraphs browser extensions are live! Well, at least some/most of them!! I share the latest updates on what I am working on for https://www.opengraphs.com, along with some browser extension inconsistencies.You can find the OpenGraph Browser Extensions here:Chrome - https://chromewebstore.google.com/detail/opengraphs/kiifpjdcadbbbhoocoobahkogpnmngioFirefox - https://addons.mozilla.org/en-US/firefox/addon/opengraphs/Microsoft Edge - https://microsoftedge.microsoft.com/addons/detail/opengraphs/cfhfplinkfammfoljdakadohdgggkmchAnd, here’s the link to the post on IndieHackers:https://www.indiehackers.com/post/dirt-for-sale-breaking-ground-on-opengraphs-com-gkZlrGXD4nH5381idGWqWatch the episode on YouTube: https://www.youtube.com/watch?v=FD1yMVA40nE---Welcome to the wacky world of browser extensions in 2025. Between varying manifest version support, as well as inconsistencies in the user experience and capabilities of browser extensions on the same browser engine (looking at you Arc and Dia, on Chromium), it can be hard to provide a consistent nice experience between them all, but I am doing the best I can. So far, the best experience across the extensions are in both Google Chrome (native) and Microsoft Edge.The thing that makes the experience so good is the Side Panel support, which was introduced with the rollout of Manifest V3. The beauty of the Side Panel API is that it allows the extension to remain open while you are navigating a site within a tab, or even changing tabs, which makes it great when you are trying to review the open graph/Twitter|X Card/meta data for sites and pages. Unfortunately, the Side Panel API is not yet supported in Firefox, nor Opera, and the semi-annoying thing is that it is unfortunately not consistently implemented on other Chromium-based browsers, like Arc and Dia. Basically, I have some work to do on the extension for Chrome if I want to make it usable in these non-standard browsers, but I’ll be getting to that at some point, and also sharing all the inconsistencies in the Browser Extension world across the board, both within browser ecosystems and across them.Other than the browser extensions, I have been working on the OpenGraphs site, mainly focused on the copy and wrestling with the resistance as I try to showcase what OpenGraphs can be, how it can help automate a lot of busy work, and makes it a breeze when you want to go back and mass update the open graph images and data for big sites. The goal is to have an updated home page, browser extension pages, and tool page up and live by the next recordings.To follow along, you can find me at https://www.ryanhefner.com, follow me on Bluesky @ryanhefner.com (https://bsky.app/profile/ryanhefner.com) and keep up with the show on https://www.allplay.fm and @allplay.fm (https://bsky.app/profile/allplay.fm).Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FM (https://transistor.fm/?via=allplay)Fathom Analytics (https://usefathom.com/ref/EKONBS)#buildinpublic #podcast #startups #webdevelopment #webdesign #bluesky #indiedev #bootstrapping #indiehackers
037 — No Waves
Or, you can watch the video on YouTube: https://youtu.be/iU2PMrYUNIQAfter attempting and failing to get an episode out the last couple of weeks, I am happy to say that I finally recorded one, and I am getting it out early this week.A lot of stuff has happened over the last 2.5 weeks, so here’s a quick run down, along with links:Optimizations were made to the https://www.opengraphs.com renderer, that is currently powering the open graph image generation for both https://www.allplay.fm and https://www.ryanhefner.comWhile integrating OpenGraphs into the All Play site, I noticed the audio players were no longer playing anymore, so after a bit of back-and-forth with Transistor (https://www.transistor.fm), I decided to rip out the custom waveform generation stuff I was doing and just play the mp3 directly in an `audio` tag. Hence, No Waves. I do plan on getting back to a solution for adding the waveforms back, but for the sake of getting things working, and working on other stuff, this quick hack will have to do. Probably a lesson in there about focusing on the right things, and how not everything has to be bespoke and custom built.Along that front, the whole No Waves thing got me thinking about Justin Jackson’s (https://justinjackson.ca) analogy about finding the right wave, and how I feel the same way trying to find the right product and revenue generator as I did back in the day when I started surfing. Heading out on the crap days to get more comfortable with my board and doing a lot of paddling to get into shitty waves, but all that time in the water and paddling made it easier for me to catch waves when I would eventually get out on the good days and was presented with good waves.Speaking of Justin Jackson, I was able to snag some time with him last Thursday for an impromptu Jam Sessions episode. I was feeling a little off in this one, but have a watch and let me know what you think: https://www.youtube.com/live/2_nuzJa3AJ0?si=JYB2WWNhlMphWu14On the OpenGraphs front, I have been busy making a few optimizations to the render, but mostly focusing on the marketing site and building some tools, and browser extensions (!) to launch before the full offering is available. And, a side note, the current state of browser extension development somehow feels even more fragmented and disjointed than ever, but I’ll save my thoughts and issues there for another episode.The goal this week is to get the browser extension submitted to at least one of the stores/directories this week, along with updates to the OpenGraphs marketing site to support it/them. And, get one—maybe two!—tools deployed to the site as well. My thinking is that if I can start to bake in some early tools that are nice and people like to use, hopefully that will keep people coming back, subscribing to the newsletter, and aware as new stuff keeps rolling out to the site, leading up to the full-on service becoming available. I’ll keep you posted on how that goes as things progress.To follow along, you can find me at https://www.ryanhefner.com, follow me on Bluesky @ryanhefner.com (https://bsky.app/profile/ryanhefner.com) and keep up with the show on https://www.allplay.fm and @allplay.fm (https://bsky.app/profile/allplay.fm).Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FM (https://transistor.fm/?via=allplay)Fathom Analytics (https://usefathom.com/ref/EKONBS)#buildinpublic #podcast #startups #webdevelopment #webdesign #bluesky #indiedev #bootstrapping #indiehackers
036 — Pedal to the Metal
Watch the video on YouTube: https://youtu.be/rLRNnlzIOQMI connected with Vercel this past week to discuss how I could both optimize and try to control the costs that https://www.starterpacks.net was accumulating. I did walk away with some techniques that I will try on the next site I launch on Vercel where I need to try to maintain a consistent bill. Most notably:Fluid Compute is good and does reduce function use/chaosControlling the cache key to maintain the cache between deploys (when possible)Play with Cache-Control headers to see if it's possible to increase the number of cached edge request hits, and ultimately skip the function rendering for each cached pageSo, some good pointers to keep in mind for the next site that takes off on Vercel.On the client front, it was a busy week, but I was able to play around with writing my own Cache Handler to support the Render deploy of the frontend. I played around with various approaches trying to write a Cache Handler backed by a Redis instance, but ultimately had to back out of that approach since I wasn’t able to fully grasp the life cycle flow for when a cache handler is initialized and abandoned, resulting in either too many Redis connections remaining open and overloading the instance, or clients cleaning themselves up too early and causing errors when get/set methods were called. Instead, I ended up writing a Cache Handler that is using a LRU cache, and it seems to be enough to smooth out the instance, serve things fast, but without all the complexity of the Redis stuff. I might circle back to a Redis-based solution down the road, but the LRU approach seems to be working for now.After a long week of client work and troubleshooting, I wanted to make progress on something new that I have been putting off for a while, so I sat down on Friday on got the first instance of the open graph images renderer setup and deployed for https://www.opengraphs.com. OpenGraphs is essentially a re-write/re-imagination of a previous service that I wrote and was using to generate open graph images for my projects, but I have some plans to both optimize and expand that previous services vision, and hopefully customers, which I will be focusing on as I continue to build out the admin portions of the app.Along with getting the OpenGraphs renderer deployed, I was able to publish an update to the library that I use to handle the open graph data in my NextJS sites. You can check it out here: https://github.com/ryanhefner/next-metaAnd, don’t think that I have forgot about https://www.skylounge.social. After getting Starter Packs stabilized and no longer sucking money out of my wallet, and getting the OpenGraphs renderer setup and deployed, I should have the headspace available to wrap up a few of the remaining features on Skylounge and start inviting some early people to host sessions on the site and see how well it either does, or does not, work 🤞 More on that to come... To follow along, you can find me at https://www.ryanhefner.com, follow me on Bluesky @ryanhefner.com (https://bsky.app/profile/ryanhefner.com) and keep up with the show on https://www.allplay.fm and @allplay.fm (https://bsky.app/profile/allplay.fm).Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FM (https://transistor.fm/?via=allplay)Fathom Analytics (https://usefathom.com/ref/EKONBS)#buildinpublic #podcast #startups #webdevelopment #webdesign #bluesky #indiedev #bootstrapping #indiehackers
035 — $800 Gorilla in the Room
Unfortunately I missed my milestone of getting an early release of https://www.skylounge.social deployed during Release Day. But, it wasn’t for a lack of trying. It’s kind of hard to run when it feels like you have a knife in your stomach and you don’t know how to stop the bleeding.I dig into what attempts I made to optimize the NextJS App for https://www.starterpacks.net to utilize fewer resources on Vercel (spoiler alert, unsuccessfully), what the usage and costs were, and what I ultimately did to try to stabilize the costs until I can start to get the site earning more than it costs to host.To follow along, you can find me at https://www.ryanhefner.com, follow me on Bluesky @ryanhefner.com (https://bsky.app/profile/ryanhefner.com) and keep up with the show on https://www.allplay.fm and @allplay.fm (https://bsky.app/profile/allplay.fm).Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FM (https://transistor.fm/?via=allplay)Fathom Analytics (https://usefathom.com/ref/EKONBS)#buildinpublic #podcast #startups #webdevelopment #webdesign #bluesky #indiedev #bootstrapping #indiehackers
034 — Who’s ready to Jam!?
A quick update on this glorious hump day, just in time before I head out to the Atlanta PHP meetup (https://phpxatl.com).Tomorrow, May 21st at 11:30am EDT I’ll be chatting with Brian Casel (https://briancasel.com) about his recent launch of Instrumental Components (https://instrumental.dev). Join us in the stream and if you have any questions for Brian or myself you can get them answered live!Subscribe and join the stream: https://youtube.com/live/LyMjPhkHk3kI am also going to be streaming to https://stream.place, a new streaming platform geared towards the Bluesky/ATProto community. So it should be fun adding another destination to consume the stream from. And, I floated the idea out on LinkedIn to see if people would be interested in watching the stream there, but just waiting to see if I can get a good signal from there or not to justify adding it.Weigh-in on the LinkedIn stream: https://www.linkedin.com/posts/ryanhefner_jam-session-launching-instrumentaldev-activity-7331038582549147650-CmcPSo, with that said, hopefully you can find the stream wherever you prefer to consumer your streaming content and we look forward to seeing you there.And, on the Starter Packs front, https://www.starterpacks.net, I ended up getting a pretty big hosting bill last month that would make the project unsustainable if it were that high moving forward, so in an attempt to reduce costs, and because I was meaning to explore it anyways to make navigating the site potentially faster, I converted all `/profile/...` pages to use ISR (Incremental Static Regeneration). My hope is that by rendering and caching these pages indefinitely, I will serve more cached versions of the pages and reduce some of the edge requests and function invocations previously required to serve those pages. It does introduce some complexity when it comes to revalidating those pages in the future, but this is just a means to try to cap costs, and if it works I can figure out how to keep everything fresh, while still being optimized. So stay tuned...Other links:https://www.skylounge.socialhttps://www.linkedin.com/in/ryanhefnerTo follow along, you can find me at https://www.ryanhefner.com, follow me on Bluesky @ryanhefner.com (https://bsky.app/profile/ryanhefner.com) and keep up with the show on https://www.allplay.fm and @allplay.fm (https://bsky.app/profile/allplay.fm).Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FM (https://transistor.fm/?via=allplay)Fathom Analytics (https://usefathom.com/ref/EKONBS)#buildinpublic #podcast #startups #webdevelopment #webdesign #bluesky #indiedev #bootstrapping #indiehackers
033 — Just Oil the Chair
I listened to a podcast episode back on January 30, 2025, and there are 3 little words that have been bouncing around in the back of my head ever since whenever I turn on the mic to stream or record, "oil your chair".The podcast episode was from Justin Jackson (https://justinjackson.ca) and Jeremy Enns (https://jeremyenns.com) on their Podcasting Marketing Trends Explained (https://podcastmarketingacademy.com/podcast-marketing-trends-explained) podcast. Here’s a link to the specific episode:Apple Podcasts - https://podcasts.apple.com/us/podcast/the-10k-timeline-how-long-it-takes-to-reach-10k-dl-ep/id1725822754?i=1000651165287Spotify - https://open.spotify.com/episode/0ojnaFU34BTMzAUEaJpLB9?si=75f58475b5824473YouTube - https://www.youtube.com/watch?v=sbT9Z-glsrM&list=PLSbtUoUeEbPIsWA2_cM91SN3HJuUnEOz9&index=16What's wild is that when I recorded this episode I had thought that it had only been a couple weeks since I had listened to that podcast episode, but it turns out it has been almost 4 months 😬, and it took me that long to oil my chair.This episode digs into the little things that I (we) have a tendency of putting off. Things that you know exist, and could be easily addressed, but yet the task goes uncompleted, and consumes some of the cognitive space in the back of the head, throwing off wasted cycles whenever it resurfaces, instead of using those for things that really matter.I’ll get back to sharing some project updates in the next episode, but just wanted to share a little thought piece about procrastination, or clearing the mind.To follow along, you can find me at https://www.ryanhefner.com, follow me on Bluesky @ryanhefner.com (https://bsky.app/profile/ryanhefner.com) and keep up with the show on https://www.allplay.fm and @allplay.fm (https://bsky.app/profile/allplay.fm).Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FM (https://transistor.fm/?via=allplay)Fathom Analytics (https://usefathom.com/ref/EKONBS)#buildinpublic #podcast #startups #webdevelopment #webdesign #bluesky #indiedev #bootstrapping #indiehackers
032 — Streaming Developments: Breaking ground on skylounge.social
Some quick updates on the status of https://www.starterpacks.net and announcing the new project that I am working on!Since the last update, the crawlers have been crawling—HEAVILY—accessing the site over 24M 👀 times. Needless to say, my Vercel bill is going to be a little higher this month, but 🤞 it will be worth it. Since the last update where the number of indexed pages jumped from 3k to 17k, since the last episode that number rose as high as 45k indexed pages, but recently dropped a bit to 34k.I think the indexes is going to be a bit of a cat and mouse game, but my hope is that more indexed pages will generally be better for driving more organic traffic to the site. As the crawlers are crawling, I am working on some articles that will showcase some of the features, and also focus on some keywords that I am going to try to start ranking for. So, no new feature development for now, but going to see how traffic to the site goes over the next couple of weeks as I focus on SEO and content.On the development front, new things are in full swing on a new project that is also focused on the Bluesky platform and community. The project called, Skylounge, and it can be found at https://www.skylounge.social. The goal is to build a X/Twitter Spaces alternative for Bluesky, that also embraces all the things I love about the open web.Over the last week I have been streaming the development of the project, with the goal of sharing the process and approach that I am taking for the app, along with trying to multiply the return on my effort of building. So far it has been going pretty well, but I am really looking at these live streams as an opportunity to do some co-working with people, so if you have a project you are working on and want to share what you are doing during the live stream, I am down to share your work and even have you jump on the stream—if you want!My goal is to launch the initial version of the site on Release Day, happening Friday, May 30. If you have something you have been working on—or putting off—maybe you want to use some social accountability to fuel getting it down. You can find out more about Release Day here: https://www.creativequests.world/releasedayOk, I have been rambling on. If Skylounge sounds interesting and you want to be one of the early people to sign-up and help me test it out, please go to the site and sign-up to be included on the mailing list I will be using to share updates: https://www.skylounge.socialTo follow along, you can find me at https://www.ryanhefner.com, follow me on Bluesky @ryanhefner.com (https://bsky.app/profile/ryanhefner.com) and keep up with the show on https://www.allplay.fm and @allplay.fm (https://bsky.app/profile/allplay.fm).Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FM (https://transistor.fm/?via=allplay)Fathom Analytics (https://usefathom.com/ref/EKONBS)#buildinpublic #podcast #startups #webdevelopment #webdesign #bluesky #indiedev #bootstrapping #indiehackers
031 — Appeasing the SEO Gods
You can also watch the video on YouTube here: https://youtu.be/ENFM-pQK5iMA quick update about some recent updates I pushed out on https://www.starterpacks.net. In the last episode, I announced the addition of the Quick Starter Pack Editor to the site. Since then, I have rolled out a few tweaks to make it nicer, like preventing duplicate entries to be added to new Starter Packs—even though those were never duplicated when saved to Bluesky—along with the ability to remove people from the list before saving. I have a few more updates planned around editors, namely being able to edit an existing Starter Pack, but that has not rolled out yet. I am sure I’ll be posting an update when it does.Other than a few editor updates, the main updates that made there way to the site are in support of trying to help crawlers discover more content and pages on the site. Since January, the number of indexed pages in the Google Search Console has dropped from 980k+ down to just over 3,000 pages. In order to try to counteract the indexed page loss, I figured it was time to address some crawling issues that I introduced when I added infinite scrolling to the site. Now, in addition to supporting infinite scrolling when a user visits the site, there are links that crawlers can follow to continue discovering content and pages linked from those lists. At first when I tried to re-validate some of the issues via the Google Search Console, the number of indexed pages ended up dropping to just over 2,000 pages, but after a few tweaks and re-validating a few other issues that number has jumped up to over 17k pages, and based on the logs I am seeing from the site I am hoping that I can get back into the 6 digit+ range for indexed pages, which I am hoping will help to drive more organic traffic to the site.In addition to the making the site updates, I am going to try to start posting more updates in the different communities to hopefully drive awareness, and also start building more backlinks back to the site. The first update was posted over on Indie Hackers, just announcing to project and enabling the profile so I can post more. You can read that one here: https://www.indiehackers.com/post/starter-packs-is-born-fe2Z1KTOK7spuf84v0i7There is a bunch of other stuff I should probably work on next for Starter Packs, but I think I need a new project to be able to ping-pong on when my interest wanes. Want to see what I plan on working on next? Subscribe to this channel, @ryan_hefner, and I’ll be live streaming the development of it. And, if you have a project you’re working on that you would like to share, I welcome guests on the stream. Show off what you’re working on!To follow along, you can find me at https://www.ryanhefner.com, follow me on Bluesky @ryanhefner.com (https://bsky.app/profile/ryanhefner.com) and keep up with the show on https://www.allplay.fm and @allplay.fm (https://bsky.app/profile/allplay.fm).Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FM (https://transistor.fm/?via=allplay)Fathom Analytics (https://usefathom.com/ref/EKONBS)#buildinpublic #podcast #startups #webdevelopment #webdesign #bluesky #indiedev #bootstrapping #indiehackers
030 — New Starter Packs Features
After a few weeks away I am back with some fresh updates that have been deployed to Starter Packs (https://www.starterpacks.net). The first—and best feature, imho—is the Quick Starter Pack Editor. This feature makes it easy to add people to your existing Bluesky Starter Packs in as little as 3 clicks (maybe more if you want to add them to multiple packs at the same time). This was a feature that I had wanted to add to the site since I started working on it, and I finally had the time—made the time—to sit down and build it out.The next addition to the site is more for the curious, or the competitive, which is the Bluesky Starter Packs Leaderboards (https://www.starterpacks.net/leaderboard). Here you can find a list of the top Bluesky Starter Packs that people have joined Bluesky through either that week, or all-time. My hope is that these pages help to drive traffic to the site and encourage people to create and share more Starter Packs to try to climb the ranks.I rolled out a few more features, but those were the main ones that made their way out. Now my focus is on building more value for the subscription plans and optimizing the site to appease the SEO gods so that more pages are indexed and available in search results. If you are interested in watching those updates come to life, I plan on live streaming those updates, so follow the channel (@ryan_hefner) and get notified when I go live.To follow along, you can find me at https://www.ryanhefner.com, follow me on Bluesky @ryanhefner.com (https://bsky.app/profile/ryanhefner.com) and keep up with the show on https://www.allplay.fm and @allplay.fm (https://bsky.app/profile/allplay.fm).Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FM (https://transistor.fm/?via=allplay)Fathom Analytics (https://usefathom.com/ref/EKONBS)#buildinpublic #podcast #startups #webdevelopment #webdesign #bluesky #indiedev #bootstrapping #indiehackers
029 — Wrestling with SaaS Pricing: Building Value to Justify Prices
Watch the video on YouTube: https://youtu.be/WNmupzrWcAAWhat goes into setting and justifying your SaaS (Software as a Service) pricing? I had the goal of getting subscription plans setup for https://www.starterpacks.net before a queued job I had running to backfill data that I needed to support those plans was done processing. I ultimately did get the Stripe integration setup, along with defining the plans and everything that goes into supporting subscriptions on the site, but when it came to actually surfacing these plans publicly is where I got tripped up.In this episode I dig into the plans, some of my thoughts around building value to justify the price, and some ideas I have to get to that value.To follow along, you can find me at ryanhefner.com, follow me on Bluesky @ryanhefner.com and keep up with the show on allplay.fm and @allplay.fm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics#buildinpublic #podcast #startups #webdevelopment #webdesign #bluesky #indiedev #bootstrapping
028 — Racing the Queues
The queues are up and running on Starter Packs and I have roughly 2 days before they are done, so my goal is to get all the pricing and subscriptions integrated into the site before they are done. I also dig into some background on getting the queues working in the NestJS app, and how I had to tune them to get them running efficiently—and fast!Watch the video on YouTube: https://youtu.be/DzHzOaR_lDATo follow along, you can find me at ryanhefner.com, follow me on Bluesky @ryanhefner.com and keep up with the show on allplay.fm and @allplay.fm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics#buildinpublic #podcast #startups #webdevelopment #webdesign #bluesky #indiedev #bootstrapping
027 — Overcoming Obstacles
While I was working on some updates for Starter Packs, I ran into an authentication bug that I wanted to fix. As I was working through the bug, and deploying the updates, all of a sudden my feature branch on Vercel stopped loading pages properly, but not all pages. In this episode, I dig into facing and overcoming obstacles that get in the way of making real progress on the project you’re working on.Watch on YouTube: https://youtu.be/GEJV6989RwQTo follow along, you can find me at ryanhefner.com, follow me on Bluesky @ryanhefner.com and keep up with the show on allplay.fm and @allplay.fm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics#buildinpublic #podcast #startups #webdevelopment #webdesign #bluesky #indiedev #bootstrapping
026 — Starter Packs Updates
After last week’s Jam Session with Brian Casel, I was on the fence on which project I wanted to commit to in 2025. After that conversation, and a little reflection, I realized that I wanted to see Starter Packs through to the original vision for the project. Also, the amount of effort to get it there—I think—will be less than I had originally thought, now that some of my client work has chilled out a bit.With that said, I am excited to share some initial updates that I pushed to the site yesterday that lay the foundation for the initial vision. They include:ability to log in with your Bluesky accountquick follow/unfollow people from Starter Packs or Profile pagesa bunch of design updates, including full support for both light and dark modeoptimizations under the hood for loading various data from Bluesky, like followers and starter packssome–🤞–updates to some of the page metadata in hopes it will make Google happy again and start driving some lost traffic backI am still committed to getting an early version of Open Graphs out in March, like I committed to Brian on the episode, but luckily that work will also benefit Starter Packs, since I will be using Starter Packs, and my other sites, as early consumers of the open graph images that Open Graphs will be generating.In the meantime, more updates will be rolling out to Starter Packs over the coming days, including: Follow All on Starter Packs, along with the background work that will start to link profiles with the packs they have been added to as a premium feature to subscribe to on the site. We’ll see how subscriptions will go, and I am sure I am going to have to build some real value to justify them, but I also have some plans on how to make the experience of unlocking the packs kind of fun, and hopefully notable.Watch the latest episodes on YouTube at: https://youtube.com/playlist?list=PLuFdIOfmEGP0xvjt2yng9FErsMTVTk1Of&si=H0RpnIlvOhwg5Q2jTo follow along, you can find me at ryanhefner.com, follow me on Bluesky @ryanhefner.com and keep up with the show on allplay.fm and @allplay.fm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
025 — Welcome to 2025
Welcome to 2025! I have been kind of having mixed emotions going into the new year, doing a lot of reflecting and projecting what I want to achieve this year. Definitely feeling mostly excited, but also a bit nervous.I get into creating my new LLC, Commune Software (https://commune.software), looking forward to the live stream today with Mubs (https://www.youtube.com/watch?v=ckaGzVTvx98) talking all things side projects and Bluesky with his project https://blueskydirectory.com/ and my https://www.starterpacks.net/, and this podcast going video (right here now!). You can find the video podcast on YouTube, https://www.youtube.com/playlist?list=PLuFdIOfmEGP0xvjt2yng9FErsMTVTk1OfI am looking forward to 2025 and trying to make this a year focused on building new connections and projects for the years to come. I hope you’ll follow along.To follow along, you can find me at ryanhefner.com, follow me on Bluesky @ryanhefner.com and keep up with the show on allplay.fm and @allplay.fm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
024 — Perfecting My Reflecting
Tis’ the season for introspection, self reflection, and projections for what the New Year will hold. Today I share some background into my process of reflecting and projecting on the things I need to get done, along with some ideas on how I plan on expanding and refining that process.If you have a process you use to help yourself get better I would love to hear it. Please, connect with me on Bluesky, or hit me up on Twitter, and let me know what works best for you!To follow along, you can find me at ryanhefner.com, follow me on Bluesky @ryanhefner.com and keep up with the show on allplay.fm and @allplay.fm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
023 — Hacking the Starter Packs
So, what do you do when you start to run into walls, or slow downs, on the project you’re working on? I feel like I am at, or approaching one of those slow downs, and am trying to get ahead of it.Since my last update when I announced Starter Packs, I have been busy continuing to build the logged out experience of the site. Focusing on gathering as many references as possible to the Starter Packs on Bluesky, and coming up with ways to make the firehose consumption more resilient, while baking in some features into the site that will allow me to capture more Starter Packs instances as people explore the site. So far things have been going great, but I am feeling the resistance creeping in and I am trying to resist it.Where I am at now is that I pretty much has the explore experience dialed in. You can search for Starter Packs, along with Profiles, on the site, and freely explore packs and the people in them, along with being able to explore profiles, the Starter Packs they have created, along with the people they follow, and those who follow them. All in all, I am pretty stoked with where the site has come over a couple of weeks of working on it, and still pretty excited on where I can take it, but I am kind of slowing down a bit due to hesitancy on a few things, and I am not liking it.Where I am slowing down is on the integration of OAuth’ing into the site to allow for authenticated actions to be performed, like following everyone in a Starter Pack, or following individual profiles. In the early days of the project, I created a quick (which actually turned into a multi-day) proof of concept of getting the ATProto OAuth setup working, but I haven’t really touched it since. Fortunately, it looks like it still works, but now I am trying to pair it with my own account handling and authentication and I don’t feel like I have crafted a setup that I am fully confident in, which has made me lose a bit of steam.So, with that said, I am publicly committing to getting OAuth integrated into the site, and having all the following functionality added in over the next couple of days, so I can at least get it out there and then evaluate what I like, or don’t like, about the setup and then adjust. My concern about launching something I am not confident in is due to the higher than normal amount of traffic the site is getting, and I really don’t want to roll something out that ultimately ends up breaking, but I guess I will just have to cross that bridge when it comes.For now, I am committed on getting the OAuth out, expanding the actions that people can perform while authenticated, and continuing to build some of the features behind the scenes that I would ultimately want to charge people a subscription for, but more on that at a later time.To check out the current status of the site, check out https://www.starterpacks.net. You can follow along for updates on both the Starter Packs Bluesky account, @starterpacks.net, along with my personal account on Bluesky, @ryanhefner.com. Let me know what you think, and if there are any other features you would like to see added to the site and I will try to work those in.To follow along, you can find me at ryanhefner.com, follow me on Bluesky @ryanhefner.com and keep up with the show on allplay.fm and @allplay.fm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
022 — Just Getting Starter’d
Wow, it’s been over a month since my last episode. That’s not due to me being too lazy, if anything just the opposite. I have been thrashing around on projects, but I would like to introduce you to my latest project that is piggy backing on the mass migration to Bluesky.Just after the election, it seemed like the draw for a new platform that was a little less Elon and a little more move on was needed, and a lot of people felt the same way. I know I was pulled over there after I heard more people talking about it, and also discovering that more of the people I follow on the other platform were moving over. I was also added to a Starter Pack or two, which made things a bit more interesting as people starter to follow more.For those who are not on Bluesky yet, or just new, Starter Packs are essentially a user created list of accounts or other Starter Packs, but you have the option to Follow All, or individually. I think the fact that Bluesky feels like the Twitter of yore, coupled with the fact that you can quickly build up the people you follow, and gain followers, via Starter Packs has helped ease some of the awkwardness of migrating platforms. When I first got added to a Starter Pack, and started to see my follower account grow, I’m not going to lie, I was hooked! It also got me more interested in Bluesky and the AT Protocol in general. I started to dig into the API to see what you could do, what was available to work with, and what was potentially missing.The one thing I wanted to see was if there was an easy way to see which Starter Packs I was added to, and unfortunately–or fortunately depending on how you look at it–there was not. I also wanted to see if there was a way to know where someone followed me from, whether is was from a Starter Pack, or directly from my Profile, or a Post. At first, I thought that was available, which got me super excited and actually made me spin up a quick project to start exploring more. Unfortunately as I started to dig in I found out that wasn’t the case, but discovered other interesting things that retained my interest/excitement to explore more. After some quick hacking, and a few domains registered(!), I was well on my way to abandoning the projects I was previously working on to explore this new...thing. After a few nights of hacking stuff together, and exploring the OAuth integration, I had the bones for a new project. That project is, Starter Packs.Check it out and let me know what you think. I hope you find some interesting Starter Packs and people, and will follow along for the journey. You can follow the project on Blueskey, @starterpacks.net. I have a bunch more plans for it, but next up is getting OAuth/account management integrated into the site to unlock some basic follow and Starter Pack management actions.To follow along, you can find me at ryanhefner.com, follow me on Bluesky @ryanhefner.com and keep up with the show on allplay.fm and @allplay.fm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
021 — Reserving Fuel
How do you apply and reserve your fuel for the things you are working? That’s what I am wrestling with today. Typically, I reserve these early morning sessions for my personal stuff, so I can take advantage of the fresh tank of brain juice to pull from. I feel like with personal projects there’s always more critical thinking and personal hesitations that get in the way of getting things done that it takes that extra boost from the good morning fuel to break through them and keep going.Although, today is unlike most of those days. Instead I am going to be working on some client stuff that has been lingering around a bit too long to see if I can knock that out early and use the rest of the day for personal stuff. Most notably, trying to commit some time to work on a site that is assisting with some relief efforts in Asheville, SC.Over in the Verbs Discord, developers there have been contributing to two different relief effort sites. The first was disastercheckin.com, a site that allows people to text in updates via a phone number, and people who visit the site can do a reverse look-up via the phone number to check on the latest status of their family or friend who have posted. It was a way to allow for people to post updates when they get signal, and for multiple people to asynchronously check on the status of those people, without having to rely on the cellular networks for people to get some status of their loved ones. Now that FEMA is in the area, the cellular networks seem to be more stabilized and people are able to communicate better now, so the effort in the Discord has transitioned to helping get clean water to the area, and assisting in the effort of managing the distribution of and requests for that water. For some reason, I can’t seem to find the site for that right now, but I will update the notes once I do. I have always been a big fan of collaborative efforts around a local cause and this has started to inspire me to follow through on an idea that I have had incubating for a while now. More on that later, along with a link, but for now I need to get back to work and knock out this client work so I can make a real difference elsewhere.— ✌️To follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
020 — Keeping Momentum
A quick, long one about trying to maintain momentum as challenges and inconsistencies present themselves.To follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
019 — Announcing, Jam Sessions: Public Edition
Since today is International Podcast Day, I figured it was only fitting to try to get an episode out today. Thankfully I have something very topical to announce today as well, a new podcast! Last week I streamed and posted the first episode of, Jam Sessions: Public Edition, or just, Jam Sessions.A few episodes back I had announced Jam Sessions: Private Edition, the podcast that I plan on hosting on Ripple.fm. The point of that show was to have more intimate conversations that may include details or information that myself or the guest may only feel comfortable sharing with a smaller audience. But, once I started thinking about the private edition, I started to think about how much fun it would be to also have a public edition, so I reached out to Daniel Coulbourne—who I had already connected with back in May about basically doing something similar, but I dropped off and never got it together—and we were able to coordinate a time for the first public Jam Sessions episode and make it happen!Daniel went deep on all things Verbs. For more information, you should check out the full show notes: https://www.jamsessions.fm/episodes/001-daniel-coulbourne-verbs-event-sourcingUnfortunately, I had some audio issues on my side, but I was able to resolve them around the 13:30 mark of the stream. Hopefully you can deal with the subpar audio and pick up all the knowledge that Daniel was dropping on event sourcing and how Verbs differs. You can check out the episode here: StreamsYouTubeTwitterEpisodesApple Podcasts SpotifyOvercast For all things Jam Sessions, you can find future episodes—and streams, eventually—at jamsessions.fm.#InternationalPodcastDayTo follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
018 — Building Spiral Staircases
During my run this morning I was thinking about all the different projects I have up in the air, and how some of those can help to provide a foundation, or utility, to the other projects that I am working on, but at the same time can feel like a waste of time to work on in the moment. Then, out of no where, I started to think about the construction of a spiral staircase.At the start of the project, you have the choice to either build up, or build down. Building up seems like a world of endless possibilities and freedom—very positive. Or, you can build down, trying to tackle some of the hairier issues people face in the world, simplifying the overly complicated, or unifying the scattered or incomplete information in the world. Every decision offers a choice, and every choice has a starting point.So, back to spiral staircases, whether you decide to build up or build down, you also have the opportunity to build a very tight spiral staircase that does its job, getting you to the next level or two in a nice confined space. Or, you could build out, going wide and building a staircase that takes you on a journey. A grand structure that is circling your idea, while not confining it. The wider the structure, the more materials and time it’s going to take to build, and the longer it will take you to complete the initial spiral. Each type, either tight or wide, provide their own set of pros and cons.The tighter the staircase, the quicker it is to build, and the faster you can circle around the idea and get to where you want to go. You can go up several flights, with multiple rotations around the center post for each one, to ascend to each floor. It’s an efficient structure, but once you get past the first couple of floors, and then decide you might need to broaden your scope, or the size of the staircase, your initial structure won’t be able to support going very wide without some additional supports being put in place to carry the load. Depending how high you went when the idea was tight, the longer span those supports are going to descend. And, depending on how wide you want to widen the scope, the more supports that will have to be put in place to help this top-heavy structure that is now spiraling out.On the inverse, deciding to go with a very wide structure, making long, wide swooping loops as you ascend—or descend—to where you are going can be slow to build, requires a lot of material, and you may never complete a single loop. And, depending on whether you choose to tighten or wide the circle as your ideas and feedback push and pull you to new places, it can be harder to quickly tighten that circle once you have decided on the "new" direction to go. Although, unlike the tight structure that can be hard to support expansion later on, your wide idea that is circling this ever pulsing vortex can expand and contract more freely, with a structure to support it, but may never reach its clear center, and is hard to get their quickly.Along the way, regardless of whether you are going wide or keeping it tight, you have the option to build platforms or landings along the way, that can fork off from that core idea. These can add structure and stability to the initial idea, but also offer a starting point for a structure or journey of their own. Depending on your staircase, the placement of these landings have a different affect as you are walking up the stairs. A very tight staircase could probably only support one–maybe two–along your path to the first floor. But, too many on a very tight structure would no longer be a real staircase. Where, if you were building a very wide staircase, you could potentially have several platforms or landings forking off along your progression of a single rotation. When I think about these landings I equate these to being the side stuff that you build along the way to support your efforts, both now and into the future (ie. packages, services, tools, etc.). They support the core idea, but also have the opportunity to spiral out to be their own thing.Depending on the decisions you make and where your projects take you can drastically change the scope and shape of these structures. When I start to think about where these can go, my mind instantly drifts to the abstract worlds of Dr. Seuss and how a very tight and tall staircase that later decides to spiral out wider and taller could start to bend and sag over it’s poorly supported structure. Or, the very wide and expansive staircase that slowly then quickly spirals to its conclusive center can come to a sharp point.I feel like I have been going wide, and building a lot of platforms and structures that I try to convince myself are in support of a grander vision of the future, but not sure if I will run out of materials, or effort, to get those ideas to circle in on a sustainable structure I can support in the future. So I ask you, what kind of staircase are you building?To follow along, you can find me at ryanhefner.com, follow me on Twitter @r
017 — Flow like water
Giving into the flow. I feel like I have been getting frustrated with myself for not fully focusing on a single project. After all, that's the only way to build a successful product. Right? RIGHT???So, I have succumb to my fleeting thoughts and ideas to go where the water is taking me and not wasting time, nor energy, trying to fight the temptation or push out the motivation because I think I should be working on something, when my brain is clearly telling me different.With that said, I have been working on the new opengraphs.com app that will be replacing LinkCards, and so far so good. I am about to the point of having a completely rewritten app using all new frameworks and underlying schema that will do everything that LinkCards had previously done, but also support some ideas that I have had for it for a while now, so it’s kind of nice to come in clean and green field this thing with fresh cold and incubated ideas.I am pushing to have the first version of the app deployed to the production instances this week, and hopefully have one of my sites using the new endpoints for image generation. There’s definitely still a lot of work before I will let people in and start charging cards, but I really want to get to a point where I can start to stress test this new setup to make sure it’s going to perform the way I think it will. 🤞To follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
016 — No, FOMO. Just, LOSE.
With all the conferences happening over the past couple of months, it has really got me thinking about the lack of socializing I have had since moving down to Atlanta. I wouldn't necessarily say it’s a fear of missing out (FOMO), but more a lack of social interaction, or engagement to make the acronym better, LOSE.For 2025, I am trying to create some more margins in my life to allow for more room to both socialize more and create more time to share the personal stuff I am working on. The goal is to do that by offsetting client work with income from personal projects. And, I guess we’ll see how that goes!You can watch Laracon US LIVE on YouTube!Some conferences I plan on attending next year:MicroConfRenderATLLaracon EU / Laracon USIt would also be cool to checkout some more niche conferences like:Local First ConfI am also hoping that rebooting Jam Sessions, and having some conversations on the Jam Sessions podcast on Ripple.FM will help fill in the gaps between conferences.And, if anyone is a current Switchyards member let me know! It would be great to hang out. I will probably be dropping into either the Roswell or Chamblee locations, but it would be great to get around to all of them to check out the vibes.To follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
015 — Fixed It!
I did it! I was able to fix LinkCards and stabilize the service. And, to my surprise, it actually looked like some of the traffic was actually legitimate open graph images being generated. Once I was able to stabilize the servers, and finally access the dashboard I noticed that my site pkgstats.com has almost 2 million images generated for it, so I guess that’s what was causing all the issues. One of my sites was taking down the other, kind of, go figure!As I was thinking about how nice the service is—when it is working—it started to make me realize that I should probably try to clean things up a bit, optimize a few things, and maybe slap a price tag on it and see if others would like to use it as well. Except, if I am going to go through all the trouble of re-writing and turning this into a real product the one thing that has always bothered be about it was the name, LinkCards.For one, the .com for LinkCards is currently some kind of malware phishing site, so not a good thing. That, and the name is kind of limiting. So, after a bit of searching for a better name on the registrars I ended up coming across, OpenGraphs. At first I saw the .io, .org, .net, .app domains were all available, which already had me thinking this is a much better name for the service. Then, I realized the holiest of holies was potentially within my hands reach, opengraphs.com. It was available as a BIN (buy it now) on Namecheap. It was a little expensive, but at the same time was probably the cheapest it will ever be. And that got my mind wandering...To follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
014 — Jam Sessions: Private Edition on ripple.fm
I just wanted to give a quick update on a new, private podcast that I am starting on ripple.fm. The show is called Jam Session: Private Edition, and it’s going to be a place to put some recorded discussions that are possibly too private for your traditional public podcast that gets blasted out to all the podcast places.The idea for the show is a bit of a continuation of Jam Sessions, a meetup/mastermind group I used to host when I was back in New York. Jam Sessions was a private and intimate space where people could share what they are working on, or questions they are struggling to answer, and then get feedback or insights from the other members in the group. My hope is that this podcast will provide the same safe, intimate space to have these conversations so we can all learn and grow together.So, with that said, I hope the show sounds interesting. Please, sign up, subscribe, drop me a line, and hopefully we can talk on the show soon.To follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
013 — Maintenance Modes
Trying to keep the spirits high in this otherwise kind of low week, littered with some Summer sickness and a lot of client work. As much as I had hoped to work some more on Transmits, I ended up getting wrapped up in a lot of client work, along with some maintenance work to clean up some spillage from last weeks publishing of the Transmits Podcast.With that said, here’s what I was able to get done/am working on:Fixed an issue on allplay.fm where Transmits episodes were showing up on the site*. I ended up updating the site to consume the RSS feed, instead of the Transistor API, since I was running into rate limiting issues. Now the site builds faster, and I am not getting the episode flow-over.I am currently working on mitigating some issues affecting LinkCards, to see if I can get the service back up and running, since an application denial attack has pretty much rendered it useless. Assuming this work, expect some shiny new `og:image`’s across all my projects popping out soon! (And, hopefully get images rendering again for pkgstats.com)Assuming things are looking good on those fronts, I have some immediate quick updates I am planning to work on for Transmits over the weekend, and some updates coming to that podcast (and this!) soon.Take care!*It turns out I was passing the show id, except I was sending it camel cased (`showId`), instead of snake cased (`show_id`). Whoops!To follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
012 — Transmits Is Getting a Pod
As I have been working on building Transmits, I started reading Rob Walling’s (@robwalling) book, Start Small, Stay Small. I was originally reading his latest book, The SaaS Playbook, but like he suggests in there, if your business is not at a certain monthly recurring revenue (MRR) you might be better off going back and reading his first book, so I did.While reading it I realized I was breaking the cardinal sin numero uno, no marketing, nor testing the market to see if people would actually pay for what I am building. Granted, this is definitely a scratch my own itch project, and I know I will be using it regardless if I am able to get others to pay for it. But, at the same time, I am definitely investing a good amount of time trying to make what I am building really nice, both for myself and to wow some potential future users into being paying customers.Thinking about what I could do to start building some initial marketing efforts I realized that the quickest thing I could do was repurpose the Transmits-specific episodes from this podcast, and re-package them into a Transmits-only podcast that I could start publishing, and include on the transmits.io site.Reasons why making a Transmits-only podcast makes sense, now and into the future:SEO: By publishing the episodes and including those within a /podcast area of the marketing site, I am hoping that both the show notes and podcast transcriptions will feed the Google/search engine machines and start to get Transmits ranking for a few key termsBacklinks + SEO: Since I will be publishing the podcast, I hoping that the feeds and episodes will help to build up a good amount of backlinks to the site, driving more traffic and helping boost key word rankingsConnection: There’s really no better way to understand what someone is trying to do than to listen to them. I am an avid podcast listener and am definitely more motivated to support people that I am listening to, than those who I have no direct connection with (even though that connection is mostly a one-way from my podcast app to my ears, but it still a remarkably personal one, even being one-way).Build Listeners + Subscribers: From the start of thinking about Transmits, I have always envisioned the product having a podcast where I would bring people on to discuss tools for thought, or podcasting, or whatever else might be interesting to discuss that could be tied back to either the underlying tech or goal for the platform, so why not start to get that wheel spinning and try to pick-up a few early subscribers along the way.Flywheels: Since I am already podcasting about Transmits, why not repurpose that content and effort and apply it to kickstart and support future effortsAnd, finally, it just sounded fun and was a good excuse to tinker on some site stuff!With all that said, and without further ado, I am happy to say that the Transmits: The Podcast is live! Check it out, subscribe, and all that jazz. I have re-packaged some previous episodes from this podcast, and will probably do the same with this episode. And, from this point forward, I am going to have to come up with a nice way to introduce the episode without necessarily having to record a custom intro per pod, or maybe I’ll just drop the intros and get right to the meat, to keep it easy.If you want to get early access to start playing around, please join the mailing list here: https://www.transmits.ioTo follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
011 — Transmits Goes Mobile
After recording the last episode via Transmits, I mentioned that I needed to test recording on playback on mobile, specifically Mobile Safari (since I am an iPhone user), and Chrome on Android. My goal for Transmits is that I can launch the initial version as a progressive web app (PWA), so it’s crucial for it to work when added to the home screen on either iOS or Android devices.Well, in classic fashion, once I went to test the app on mobile devices, it totally failed in Mobile Safari, and regular Safari for that matter. It turns out that Safari only supports saving files via the FileSystemSyncAccessHandle, which only works within the context of a Web Worker. So, I rolled up my sleeves and started refactoring the app to include a web worker–surprisingly the first one I have written!–and wire up the file saving to use it. Low and behold, this week’s episode was recorded on my iPhone, via Transmits running as a PWA!Next up, I am working on a spike to get speech to text working for transcription running locally via a Web Assembly (WASM) wrapped version of OpenAI’s Whisper model. Once that is working, then will come defining the data models and start working on building out the cloud sync support. Not gonna lie, I am getting pretty stoked on this app so far, and I hope you will too!If you want to get early access to start playing around, please join the mailing list here: https://www.transmits.ioTo follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
010 — Recording from Transmits
A milestone has been reached! This is the first episode to be recorded in Transmits!! Obviously, these are early days (the official second recording made in the app was this episode), but recordings are being captured via the web app and stored locally via the File System API in the OPFS (Origin private file system).The goal is to get this early version of Transmits out so people can start playing with it and capturing their Audio Journals* (*the positioning I am playing with for this initial version of the app. What do you think!?)I think the idea of audio journals is interesting, and it also seems like some other builders in the bootstrapping/indie maker space–both Peter Suhm [Tweet] (Reform and Out of Beta Podcast) and Brian Casel [Tweet] (Clarity Flow and Bootstrapped Web Podcast)–have started sharing audio/video updates similar to this podcast.If you want to get early access to start playing around, please join the mailing list here: https://www.transmits.io To follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
009 — Introducing, Transmits
I have finally settled on the project that I will be documenting on this podcast. I would like to introduce you to, Transmits. transmits.io is domain I have been sitting on for the past 4 years. When I had originally registered it I was working on a React Native prototype of an app that I was exploring, which was essentially an iOS Voice Memos app that was going to be platform agnostic. That prototype still lives on my machine, but work and life got in the way from taking it any further than a very rough example of getting some basic audio recording capturing and reviewing within the app.Since then, I have worked on a bunch of different stuff, both for clients and personally, but this idea of a simple app that lets you quickly record some audio and easily share it with friends—or beyond—has remained constant over that time. Although, the one thing that has changed is my thoughts on what makes the most sense for how to build the app.Over the last 4 years a lot of advancements have been made in the browser space to better support progressive web apps, things like local SQLite instances running in the browser, push notifications on Mobile Safari, and generally more packages and tools that make it easier to build a good PWA experiences that can truly rival native apps. So, with that said, this version of Transmits is going to be built with 100% progressive web app support from the beginning.At this point, I already have basic PWA support for the app. You can turn off wifi and cellular and browse all the pages you had originally viewed while being online. And, I have some basic recording support setup via the Web Audio/MediaStream Recording API’s. Both the marketing site and app are built in React/NextJS, and I am going to explore building the API with NestJS (since this is a stack pairing that I have been wanting to explore).Next on my list to tackle includes:Get local file saving setup via the File System APISetup local-first data handling (probably using electric-sql, or something similar)Audio filters to apply to recordings in real-time via Web Audio APIReal-time transcription support via local automatic speech recognition (ASR) modelIntegrations to make it easy to take recordings captured via Transmits and distribute them (looking at you, transistor.fm!)Some other odds and ends to make the app feel more native, like Push Notifications and what notI was definitely debating which project to really commit to, and this one ticked all the boxes of the type of app and technologies that I wanted to dig into more. Not to mention, if it turns out how I think it will, I will probably be able to drop my Adobe Audition setup and record all of my podcast episodes via this app, with a simple flow for distributing them to Transistor, Substack, Medium, and beyond.I hope this project seems interesting to you, and I look forward to sharing my learnings from building it along the way.To follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
008 — A Focus on Interest
Just a quick one on a mindset that I have been trying to apply to the things that I have been working on, or committing to, in 2024. The concept revolves around two requirements to meet when committing to a project/client/etc. Those two requirements are, the project either has to be interesting, whether that is interesting to work on, an interesting topic, or potentially an interesting technical challenge. Or, alternatively, but not mutually exclusive, would embarking on this project/collaboration/client engagement generate interest (ie. make money/margins) both in the short-term, but also potentially in the long-term or over time.In a perfect world, the project(s) would both be very interesting, while also providing the potential to earn a healthy level of interest over time. At least, that is my goal with the personal projects that I am working on, and plan to work on in the future.Another thought that comes out during this episode is some reflection on the debate of working on multiple things, or going all-in on a single project. I am of the mindset that the people going “all-in” on something are potentially leaving money and some optionality on the table when they abandon an existing user base to pursue a new niche customer market that no longer aligns with the initial product offering. A few questions that I have been debating as I hear people weigh-in on this topic are:Would potentially maintaining that existing product, while exploring a new target customer with an altered, or new product, really impact the success of the new initiative?Would maintaining the existing customers, even if growth is plateaued, allow for you to retain them and the current MRR while supporting the development of the new product?If the new initiative is not a success and you potentially want to re-engage with the previous customers that you abandoned, is there even a pathway back to your previous state?I hope to be able to explore and play with some of these questions as I am building and growing the projects I am working on. And I look forward to sharing those insights and internal debates in future episodes of the show.To follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
007 — Context is King
Reflecting on Laravel vs. React debate that went down a few weeks back, got me thinking about Context. Context switching. The context that influences the decisions we make. Really, just about context in general.My focus has been to try to minimize the amount of context switching that I am doing, which is already difficult while managing multiple clients and trying to focus on my personal stuff. I get into some of those trade offs, along with a few other things that have been popping up that have been requiring additional context switching, resulting in ultimate flow wreckage.Some references from the show:Inception this one to find the tweet that kicked off the Laravel vs. `react-remix` debatelaravel-pwa / laravel-pwa-demoMy service that has been getting DDOS’d, Link CardsTo follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
006 — Embracing the Thrash
The struggle is real-ish. In this episode I get into the tension I have been feeling as I am in my -1 to 0 phase, trying to figure out which project/product I want to place my energy towards (first), and some of the technical stuff I plan on incorporating in the projects I am planning on taking on.Some of those core technology areas include:Event SourcingProgressive Web Apps (PWAs)Push NotificationsLocal-first developmentEmbracing the open webWebAssembly (WASM)PerformanceDuring the portion of the episode where I focus on local-first development, I make reference to a few podcasts that dig into the topic, the Muse Podcast and localfirst.fm.I will be digging into the actual project that I will be sharing the evolution of on this project, so please subscribe and sign up for the newsletter for updates.To follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
005 — Pressing Publish
In this episode I reflect on officially hitting publish on this podcast. The steps that lead up to the release, along with all the excitement and anxiety that builds up before pressing that button.From creating the cover art, to settling on the format—or lack there of—to writing descriptions, and deciding whether or not to pay the extra $5/month to Transistor for the AI Transcriptions feature vs. rolling my own (note, I just paid the $5, but may explore some other ideas with custom transcripts on the site, since after playing with the different output options it got the brain gears turnings). Basically, all the stuff that went into launching this.Here are a few additional things that were on that launch list:Audio quality (via Adobe Audition + custom presets to make the audio sound better)Newsletter sign-up formWebhooks to refresh the site when new episodes are publishedSitemap`og:image`’sAlong with some other outstanding stuff that I will be pushing to the site soon:Welcome email (for newsletter subscribers)Newsletters (sign up so you will start receiving these once they start going out)Standardize copy/words for how I reference what this isTweak site metadata and SEO stuffIt definitely feels exciting to start seeing it in the various podcatcher sites and apps, and looking forward to talking about all the other stuff I have in the works. Until next time!To follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
004 — Building allplay.fm
In this episode I dig into why I decided to build a custom site for this podcast vs. using one of the templated sites that TransistorFM offers. Part of it is based on some of my ideas about utilizing platforms to push traffic back to sites that you own. The other part of it was I just had an idea of what I wanted the site to look like, and how I wanted it to function, and I couldn’t suppress the urge from just building it myself. I also explain how I plan to add a newsletter to the site as well, and you can sign up for at allplay.fm. I am currently using Resend to capture the subscribers, and will be using them for the newsletter delivery, but have some plans about how I will be doing that in a later episode.In addition to the site, I get into some thoughts I am having about expanding the reach of the podcast—and really just personal stuff in general—and how potentially replicating that across a number of sites that all point back at the sites you own either help or hurt your own sites performance, or really where do people find it and when do they drop off?And, I geek out about some of the Web Audio API and Audio Buffer stuff I am using on the site to use for audio playback and will be publishing the library I am using for that at a later time, and will have an episode about that when it happens.ReferencesTransistorFMNxContentlayerallplay.transistor.fmResendTo follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
003 — No Edits
tl;dr I am not going to be editing these episodes, so please bare with me.Although, if you want me to reflect on it a bit more, there’s a reason for making the active choice to not edit these episodes. Part of that decision is based on efficiency, as I work through these episodes I am trying to take all the ideas swirling around in my head and pluck a single one that I can try to break down and pick apart within a quick 10 minutes—maybe a little more, or a little less. I could definitely try to get to that same time constraint by recording a bunch of material and whittling it down to fit the space required, but with that approach I feel like you lose all the nuance on the topic, and you don’t get to hear the gears grind through the topic. Also, recording 30 minutes or an hour of material and trying to edit it neatly into a 10 minute episode that sounds fluid and coherent sounds like a miserable task, that I both don’t have the patience, nor the time to take on.So, please bare with me if I happen to misspeak or mispronounce a few things from time-to-time. I hope the core ideas ring through and you are still able to take away something. And, along those lines, I go into my OCD approach to listening to albums and podcasts, and recommend that if you do intend on listening to multiple episodes of this podcast, that you should try to do that from the earliest episode and listen until the current/last episode. Just a recommendation, you do you, but from my experience with other episodes, I will probably be referencing either ideas or projects from the past, or may even come up with some made up word that I reference from an earlier show, so listening to them chronologically will probably reduce the confusion level as those pop up.To follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
002 — Style and Error
CSS and component libraries, where to begin?Over the years I have used a bunch of different flavors including, css-modules, styled-components, CSS + Sass and a few other things. But, over the last 3 years or so, I have been primarily using ChakraUI, which is a component library that offers a really nice way to setup your theme—based on styled-system—as well as control the styles and defaults of the components they offer, along with being able to build and style your own components, using the same system, all accessible via the main theme configuration.But, since I am trying to shed the biases of the past, and explore all the new potentially new, hot stuff that could make my life in code potentially better, I decided to explore some of the new stuff that has been spinning out of the ChakraUI world, as well as some thoughts and questions I have about sticking with that world, or going all-in on Tailwind.ReferencesCSS modulesstyled-componentsSassPostCSSChakraUIstyled-systemEmotionPanda CSSArk UIPark UITailwind CSSRadixshadcn/uiTo follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
001 — Default to Stacktion
On this episodes I dig into getting back into action and picking a stack to base the action on. In the past, I have built my products and prototypes in Laravel, using an SPA—typically built in React—for the majority of stuff, and I go into all the pros, and a few of the cons, I have experienced with that setup along the way.Well, now the year is 2024 and as easy as it would be go back to that trusty old cocktail of sorts, I want to push myself to explore something new. I go into how I have been structuring my latest work utilizing Nx for the monorepo setup, and primarily using React + Next for the majority of the client apps.I love the DX surrounding some of these newer hosting platforms, allowing for instant previews of branches that are in the works, and being able to have as many of those up and running, and viewable, while working on a project. That coupled with the fact that I haven't been working on PHP for the last 4+ years and all the changes that have been going on, in both PHP and Laravel, I feel a little behind the curve in that ecosystem, and honestly I really just like working in Javascript and not having to deal with the context switching between PHP and Javascript.So, with all that said, I am not wasting any more time on the debate and am going to go all-in—at least on this first project—on the all Javascript setup, utilizing Nx to manage the monorepo for the project. React + Next for both the marketing site and app, which will be two separate apps deployed on the same push, utilizing shared libraries within the repo. And, will be trying out NestJS for the API, because—for a number of reasons—I think that is the way to go vs. utilizing API routes via Next to try to accomplish the external API. ReferencesLaravelStripeLemon SqueezyPaddleLaravel Pulse (the one I couldn't think of)Laravel ReverbNextVercelRenderNetlifyLaravel ShiftNxNestJSTo follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and onTwitter @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics
000 — Trailer / Intro
trailerHey, I’m Ryan Hefner and I’d like to welcome you to the All Play podcast. On this show I will be sharing my experiences as I build products and open-source software, sharing the highs and lows that go into building a solid product, and hopefully leading to a successful launch and growth of customers.In this episode I share a bit of my background, moving from Ohio to New York to work at Fantasy. The roles and responsibilities I learned while working at an agency. My transition into working on product at Vimeo, and how I re-wrote the Vimeo Video Player and eventually grew to become the Director of Engineering at Vimeo, overseeing all things players and video focused. And, how during these career transitions, I have continued to work on products and open-source software.I hope you’ll find this show interesting, and look forward to sharing the ups and downs that go into building, launching, and growing products—and who knows, maybe companies.To follow along, you can find me at ryanhefner.com, follow me on Twitter @ryanhefner, and keep up with the show on allplay.fm and @allplayfm.Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:Transistor FMFathom Analytics