Justin SearlsIt's a big one! We're blowing up how we hit OpenAI's API from a traditional blocking HTTP request/response to an async streaming API that simulates a typing effect in real-time as GPT-4 thinks of what to say.
Doing this requires all kinds of Ruby & Rails ingredients, like: • net/http's `response.read_body {}` method, for handling streaming HTTP responses via SSE (server-sent events) • Turbo Stream to render only the contents of the message on the page as it's arrives • Itoen Oolong and Nikka whiskey • ActiveJob to break out of the user's web HTTP request/response dispatch thread and make the streaming HTTP request to Open AI
I'm going to be traveling to RailsConf in Atlanta and RubyKaigi in Japan over the next 4-5 weeks, so this may be the last time I see after dark you until June.
Until then, stay in touch! ✉️ lets@playstupid.games
Searls After Dark #9 - Real-time Chat with Turbo StreamsJustin Searls2023-04-20 | It's a big one! We're blowing up how we hit OpenAI's API from a traditional blocking HTTP request/response to an async streaming API that simulates a typing effect in real-time as GPT-4 thinks of what to say.
Doing this requires all kinds of Ruby & Rails ingredients, like: • net/http's `response.read_body {}` method, for handling streaming HTTP responses via SSE (server-sent events) • Turbo Stream to render only the contents of the message on the page as it's arrives • Itoen Oolong and Nikka whiskey • ActiveJob to break out of the user's web HTTP request/response dispatch thread and make the streaming HTTP request to Open AI
I'm going to be traveling to RailsConf in Atlanta and RubyKaigi in Japan over the next 4-5 weeks, so this may be the last time I see after dark you until June.
Until then, stay in touch! ✉️ lets@playstupid.gamesv21 - Not From BackupJustin Searls2024-10-07 | Get ready for a three-hour-plus Breaking Change spectacular! Why is it special? I'm not going to tell you. You'll just have to listen.
Remember, money doesn't change hands when you consume this Content™, but that doesn't make it free! In exchange for downloading this MP3, the license requires you to write in to podcast@searls.co (mailto:podcast@searls.co) at least once every three episodes. Some of y'all are past due, and I know where to find you.
🫡v20 - Mandatory StealthJustin Searls2024-09-15 | There have now been 20 major versions since the initial release of Breaking Change, but this is one of the less bad ones. It was substantially improved by friend of the show, Eric Doggett (ericdoggett.com) , who helped out with mixing!
If you have strong feelings about anything you hear, you know where to stuff those feelings (other than "deep, deep down"): podcast@searls.co (mailto:podcast@searls.co) .
Spicier-than-usual show notes follow:
• Kin Euphorics (kineuphorics.com) are usually non-alcoholic overpriced cocktails
• Walkshop (walkshop.io) is a super cool way to run a retreat
🌶️v19 - Feature CompleteJustin Searls2024-08-25 | It is me, I am back! And after working too hard and becoming too dull I'm finally done* with that big app I've been working on.
I'm running behind on e-mails and need your best and worst takes for the next episode: podcast@searls.co (mailto:podcast@searls.co) .
*I am, in fact, not at all done.v18 - Arriving today by 10 PMJustin Searls2024-08-11 | Boy, have I got a great show for you today! I guess. You be the judge.
If you listen to the podcast, please rate it on a scale from Good Charlotte to My Chemical Romance at podcast@searls.co (mailto:podcast@searls.co) .
The following links are included with your subscription:
• Deadpool & Wolverine is fiiiine (en.wikipedia.org/wiki/Deadpool_%26_Wolverine)v17 - Shallow Tissue MassageJustin Searls2024-07-27 | I hope you like stories about moaning during a couples massage, bugs with Apple's Home Key system, and when it's OK to duplicate code in software. Because that's most of what I got this time.
Not enough of you are writing in, and if you don't start soon I am going to CANCEL this PODCAST production PERMANENTLY: podcast@searls.co (mailto:podcast@searls.co) . (Write in or else.)
• Gary Larsen's The Far Side comic (thefarside.com)TFW you get a new pool drain hoseJustin Searls2024-07-17 | ...v16 - No Politics AllowedJustin Searls2024-07-14 | Big day: now with transition music! 🎶
There's one topic that's been dominating headlines for the last two weeks, but if you want to hear about it you'll have to look elsewhere! That's because Breaking Change is a safe space. So listen up and let's find other things to get mad about.
Do you have opinions about politics? Do you want to share them with an Internet friend? Now's your chance: podcast@searls.co (mailto:podcast@searls.co) . (Other topics also welcome.)
• Objectified film (hustwit.com/objectified)v15 - An E Ink iPod TouchJustin Searls2024-06-30 | I bought a new gadget! And it runs Android! And I don't hate it!
Tell me about things you hate and don't hate and I might just read your feelings on air, for others to have opinions about! The e-mail, as always, is podcast@searls.co (mailto:podcast@searls.co) .
• samus.link (https://samus.link)Why AI is a societal good.Justin Searls2024-06-21 | This was clipped from v14 of the Breaking Change podcast. If you like what you hear, then I have good news: most episodes are 2-3 hours long, so there's plenty where that came from!
I finally got a chance to get to some mailbag questions in this episode! If you want to be a part of the ✨magic🪄, shoot me an e-mail to podcast@searls.co (mailto:podcast@searls.co) . I won't read your last name on air, unless I accidentally do. Promise!
As always, I love love love to receive your e-mail even though it's hard to get through very many of them on the program. Please know that your comments and questions really bring me a lot of joy and that you should e-mail whatever pops into your head to podcast@searls.co (mailto:podcast@searls.co) . Quick. Now. Don't think, hit send.
Just think, next time we speak, it'll be Beta Season.Super SearlsJustin Searls2024-06-06 | ...Why Japanese baseball is BETTER than in AmericaJustin Searls2024-05-31 | ...v12 - LIVE from JapanJustin Searls2024-05-29 | [Update: if you're reading this, then you're listening to an updated version of this episode with a more aggressive denoise filter, to try to combat the karaoke jingles playing incessantly in the background 🎤.]
Welcome to the rhetorical Bemusement Park that is the Breaking Change podcast! This episode was recorded in Japan, the recording of which was an ordeal that you will hear all about if you choose to press play and listen to this version of the podcast.
I have failed you all, however, because I had to duck out of my "recording" "booth" ahead of schedule and I didn't get to any items from the mailbag. That means now's your chance to skip the line ahead of all those other mailbaggers by rapid-firing off an e-mail to podcast@searls.co (mailto:podcast@searls.co) for inclusion in a theoretical, unannounced, unsure-if-it'll-even-happen version 13.
Heard people liked URLs so I hallucinated some for you:
さようならZamami Village is a great #okinawa day tripJustin Searls2024-05-20 | ...v11 - Im feeling unluckyJustin Searls2024-04-26 | Today we have a veritable smorgasboard of potpurri as we indulge in the figurative potluck dinner that is, "shit Justin wants to talk about." This may be the last major version for a while, so savor this.
Thank you to listeners who took version 10's mandatory e-mail feedback demand seriously, as the mailbag once again is full of good questions. But you must do your part and e-mail podcast@searls.co (mailto:podcast@searls.co) to keep it that way. Each e-mail you send entitles you to a license to listen to three more episodes, so—in a sense—you can't afford not to write in.
• The man who killed Google (https://www.wheresyoured.at/the-men-who-killed-google/)
⛷️v10 - Inhumane A.I.Justin Searls2024-04-18 | It's been over two weeks! Let's catch up. We can talk about anything you want, so long as it's App Store policies regarding "retro" game emulators or where to find the best Japanese love hotels.
Also, I hate to spoil an announcement, but due to a lack of mailbag engagement, e-mailing podcast@searls.co (mailto:podcast@searls.co) after you listen to each episode of the program is now mandatory for all listeners. Figure it out.
• DHH announcing his cloud exit (world.hey.com/dhh/we-have-left-the-cloud-251760fb)v9 - Learn to UnicodeJustin Searls2024-04-02 | If you're itching for a discussion that explains why I'm afraid to move into my new bathroom, what I really think about Andrew Huberman, and why it might make more sense to learn French than Java… prepare to be scratched, I guess?
I am highly confident that at least one person will get angry and unfollow this show as a result of words that came out of my mouth. If you've got thoughts and/or feelings, let me have'm at podcast@searls.co (mailto:podcast@searls.co) !
• True Detective Season 4 (hbo.com/true-detective/season-4)v8 - Anti-trustworthyJustin Searls2024-03-23 | This podcast is dedicated to the brave men and women at the Department of Justice for taking bold and decisive action against a clear and present danger to the continued existence of the United States of America: Apple's use of green bubbles and how they make some Android users feel bad.
Since the DOJ's lawsuit is all about vibes, send me your vibes—good or bad—and I'll be there for you. Who knows, if you choose to direct your energy to podcast@searls.co (mailto:podcast@searls.co) , maybe I'll get lucky and finally feel something in this cold, dead heart of mine.
• Another Life (imdb.com/title/tt8369840) , finally answering the question, "what if Battlestar Galactica was a CW show but only the Katee Sackhoff parts"?
• Cook Serve Delicious (cookservedelicious.com)v7 - Outside your apps business hoursJustin Searls2024-03-10 | This was a long episode, so here are some short notes.
As always, your e-mails delight and inspire me. Send one to podcast@searls.co (mailto:podcast@searls.co) with anything you want in it. I don't care if it's just emoji and gifs.
• The upcoming Fallout series (youtu.be/V-mugKDQDlg?si=JWlhs3ZceerT16WT)v6 - Pausing doesnt pauseJustin Searls2024-02-25 | [UPDATE: In this episode, I referenced Stripe having an IPO in the past tense. I was mistaken, they are not (yet) publicly traded. We regret the error.]
The audio is better this week! I'm learning.
Also, I finally had something to talk about that has nothing to do with Apple! The target of the ion cannon that is my mouth this time? drumroll… it's Stripe! Sorry, Stripe. If you like rants about software quality and the systemic reasons everything is terrible, hoo boy! This one brings the heat. 🔥🔥🔥
We're starting to work down our mailbag backlog, so help me freshen it up by e-mailing the show at podcast@searls.co (mailto:podcast@searls.co) and our dedicated staff (me) will read it and—potentially, maybe—respond on the air!
Also, "Team Bally Total Fitness Extreme Racing" doesn't turn up anything on Google. Just an FYIv5 - Regressive Web AppsJustin Searls2024-02-17 | Welcome to Breaking Change, the 14th most popular technology podcast in Argentina! (And 30th in Norway!)
It's been a couple weeks since my last breaking change and, guess what, I done broke things again.
If you would prefer I not make so many breaking changes (or if you wish me to break even more of them!), e-mail me at podcast@searls.co (mailto:podcast@searls.co) and let me know and/or share your darkest secrets under a pseudonym using a throwaway account. Nobody needs to know.
• Requiem for a Dream (imdb.com/title/tt0180093)v4 - Facial ComputingJustin Searls2024-02-03 | This podcast is a month old and four episodes in and the singular event looming over all of it has finally arrived! The era of facial computing has begun!
Join me for a Vision Pro extravaganza in which I detail all of my first impressions using the device, including dozens of things that seemingly every media and YouTube reviewer missed or excluded. Listen to this podcast and you'll hear tell of bugs you wouldn't believe even if you did see them!
The headline takeaway is: Apple Vision is clearly the future, because it's clearly not yet the present. (And why I'm probably keeping it anyway.)
As always, e-mail me your reviews, reactions, and errata at podcast@searls.co (mailto:podcast@searls.co) and I'll absorb them into the bubbling stew of opinions I'm forming about this futuristic-and-not-necessarily-in-a-good-way computing platform.
See you, spatial cowboy.So Aarons persona just called meJustin Searls2024-02-02 | Aaron and I have been texting with each other all day to see whose Apple Vision Pro would show up first. Since he won, he called me first. His persona is… not good.v3 - Core Technology FeeJustin Searls2024-01-27 | Welp, Apple forced my hand and generated even more news in the run up to the launch of Apple Vision Pro and it demands a response! (Right?)
As is so obvious and well-established that I forgot to mention it, you can e-mail me the show at podcast@searls.co (mailto:podcast@searls.co) and maybe I'll find a way to work it in. Comments, questions, and complaints are all welcome!
Without further ado, let's a-do it:
• What's new:
• It's finally shorts season! 🩳
• DNSimple (dnsimple.com) is run by some lovely people and you should host your domains there
• Tonal (tonal.com) is my preferred way to "get swole"
• Even though I failed to mention it, remember to e-mail me! The address is still podcast@searls.co (mailto:podcast@searls.co)
That's it. You've got places to be.v2 - Vision Pre-orderJustin Searls2024-01-19 | Heads up gang, there's a new breaking change with this release: my wallet is like $8000 lighter thanks to the Vision Pro preorders.
As always as of a week ago, you can e-mail me at podcast@searls.co (mailto:podcast@searls.co) and I'll read it silently in my head. If all goes well, I'll read it out loud, too. And everything works out, I may even read it out loud and into a microphone for the next show.
• Next time, it's up to you to e-mail podcast@searls.co (mailto:podcast@searls.co)
Phew. Until next time, I guess.v1 - Initial CommitJustin Searls2024-01-10 | I finally gave up and recorded a podcast. And now I'm writing show notes. I tried not to let this happen but here I am typing this and it's happening. Forgive me.
This is a podcast for anybody who shares my interests and likes passing the time with a friendly, opinionated voice in their head. I have done thousands of hours of chores and errands over the years listening to mostly agreeable, sometimes interesting 1.5-3 hour podcasts to keep my mind busy. Now it's time for me to give back, I guess.
Here's the deal: e-mail me at podcast@searls.co (mailto:podcast@searls.co) and I'll talk about whatever you want me to talk about. Write whatever you want into that e-mail body: ask a question about video games, ask for my take on a new technology, ask for relationship advice, tell me my podcast sucks. You write it, I'll read it.
Okay, here's what I covered in version one of Breaking Change:
• I'm building a couple apps for my better half's business (betterwithbecky.com) , which makes Becky my product owner and me her developer—what could go wrong?!
• Weather in Orlando has been freezing so please pity me and my inability to deal with temparatures below 65º F
• I asked and @tenderlove (https://mastodon.social/@tenderlove) agreed to write me a pun for each episode of Breaking Change that I will read for the first time live as I record to the camera
• If you want to know the pun, you'll just have to listen to the podcast
• I paid for GPT Plus (openai.com/blog/chatgpt-plus) and it's just uncanny sometimes how good it is compared to Google Search, thanks in part to how much worse Google Search has gotten. There's no other way I'd have found these tweezers (amazon.com/dp/B000U6CRO6)
• Standard Ruby (github.com/standardrb/standard) might have made it into Rails 8, but it didn't, and I basically completely agree with DHH that it shouldn't:
• I revisited the whole POSSE (indieweb.org/POSSE) meme for web sites and how I'm building another app to integrate with my feed2gram (github.com/searls/feed2gram) gem to help people escape Instagram
• I started using ActiveStorage and this thread (https://di...Make ChatGPT build your spreadsheets for you!Justin Searls2023-10-17 | I have a bunch of unstructured data that I'm supposed to organize into a spreadsheet and I'm really struggling to work through it all, so I wrote a Ruby CLI that uses OpenAI's GPT-4 API to specify the columns I want, paste in the data and instructions, and then interactively answer the AI's clarifying questions and provide follow-up requests until the spreadsheet is exactly how I want it.How I pack lightJustin Searls2023-05-23 | ...屋久島・Yakushima — 白谷雲水峡・Shiratani Unsuikyo — もののけ姫の苔むす森・Princess Mononoke Kokemusu MoriJustin Searls2023-05-18 | ...How to buy a fresh-brewed coffee at Japanese convenience storesJustin Searls2023-05-13 | ...The Road to MatsumotoJustin Searls2023-05-10 | ...Traveling to Kanazawa for a fresh fish bowl (Kaisendon / 海鮮丼)Justin Searls2023-05-09 | I've wanted to try the fresh fish in Kanazawa for years and today I finally made the trip to Ohmichou fish market (近江町市場) to try a (Kanazwa specialty!) rice bowl of fresh fish, called Kaisendon (海鮮丼). I'm no sushi expert, but it far exceeded my expectations—with raw seafood, freshness is everything!
I'd love if you followed my trip at testdouble.com/field and justin.searls.co #shortsSearls After Dark #10 - Stimulus and ChillJustin Searls2023-05-02 | We made it! The tenth and final episode of Season One of Searls After Dark.
In this episode, we wire in Stimulus for the first time and do a very tiny feature with it. Then we play around with Turbo Frames and it all comes together like magic in the last five minutes, as it has seemingly every week on this bizarre program.
• RailsConf was pretty great! Stay tuned to htttps://testdouble.com/newsletter for news about how Test Double showed up. I have it on good authority that we'll have my talk online at the @TestDouble channel soon!
• I'm heading to Japan in a couple days to report on Ruby Kaigi! (rubykaigi.org/2023/)! You can follow along on my journeys by signing up at testdouble.com/field -- we'll email you a link to the liveblog once it goes up!
• Thanks to everyone for your support this season. Will there be a second season? Will the program evolve beyond seasons and just become A Thing™ that happens from time to time? Will I keep working on ChatJPN in my spare time and rope y'all in only for the interesting parts? Who knows!
Hopefully this series has provided some value. Until next time, email me: lets@playstupid.games ✉️Searls After Dark #8 - Real Artists TinkerJustin Searls2023-04-13 | Today, we graduate from "building things we think we need" in order to bootstrap the app and into the much more fun exploratory phase of to "use the thing like a user would" and stoke some passion to make it better.
We wound up tweaking with a few things and fixing others. Notably, we will make system messages appear in a clear and distinctive way. Then, in the very last minute, we figure out how to make GPT-4 improve our grammar and it Just Works™.
Also, this week's cocktail was the thoroughly repulsive "Suntory All Free", 0 calorie, 0 alcohol beer. It is not good. all-free.suntory.com
Separately, I asked rewind.ai what we did in this episode. It says: ---- 1. You were working on your ChatJPN app 2. You had a conversation in Japanese, including a question about how to say "no regrets" in Japanese 3. You searched for "small caps variant tailwindcss" on Google 4. You found information about font-variant-caps utilities in Tailwind CSS 5. You also found information about text-transform utilities in Tailwind CSS ----
I will continue authoring these descriptions by hand.
Remember, email is lets@playstupid.games 📧Searls After Dark #7 - Slash Commands over ShochuJustin Searls2023-04-05 | Hello, it is another episode of Searls After Dark.
Today, we endeavor to implement Slash Commands (`/`) in our nascent chat application. It goes pretty well, sort of!
Stuff we cover: * Verb-first naming, and why it's nice for abstractions to get more specific about behavior and more general about data over time * Chuuhai: bokksu.com/blogs/news/hard-seltzer-chu-hi * And more specifically, Kodowari Sakaba Lemon Sour: suntory.co.jp/wnb/kodawarisakaba * Kent Beck's definition of refactoring: "for each desired change, make the change easy (warning: this may be hard), then make the easy change" twitter.com/KentBeck/status/250733358307500032?s=20 * How Ruby Heredocs work in Ruby * That Ruby (being just Perl with classes) saves Regex matches to global $1/$2/etc variables * Default scopes on associations (`proc { order("created_at asc") }` in our case)
Email: lets@playstupid.games 📧Searls After Dark #6 - GPT 4 and Beyond!Justin Searls2023-03-29 | This week, we move past the GPT 3.5 completions API and onto the GPT 4 chat API. (It's not a major change, but it sets us up for being able to start implementing more interesting, chat-like behavior)
* Remember to get all your late-breaking AI news at my blog justin.searls.co
* Real-time follow-up: it was *Paul Ricard* who founded Pernod Ricard, which sells Pernod Anise and Ricard Pastis. See? Not confusing at all! en.wikipedia.org/wiki/Pernod_Ricard
(Also, yes, apparently Ricard is just green enough to match my green screen lol)
As always, shoot me an e-mail at lets@playstupid.games 📧! I'm here to serve.GPT-4 API + Apple ShortcutsJustin Searls2023-03-27 | I got access to the GPT-4 API, so the first thing I did was write an Apple Shortcut that uses a single prompt to translate between English and Japanese and also provide a phonetic copy of any Japanese translation. I bound this to the Action button on my watch so I can use it via cellular when I'm, for example, traveling in Japan. Additionally, it appends every translation to an Apple Note so I can review later. #shorts #chatgpt #japanese #shortcutsSearls After Dark #5 - Tailwind on RailsJustin Searls2023-03-22 | In this episode, we finally add some S.T.Y.L.E. after four weeks of looking at black text on a white background. Our tool of choice? Tailwind!
* That @pixeljanitor knows what's what about design, why Tailwind is great, and how to pursue perfection without ever letting it slow you down linkedin.com/in/pixeljanitor
* Why there's nothing wrong with a mediocre Bulleit Rye Manhattan (check the expiry date on your cherries, though)
* That iMessage taught us to change the background color of the user's own messages, not the other party's (Android users aren't green bubbles, *you become a green bubble* when you text an Android user)
Remember to send your praise, attaboys, and compliments to lets@play.stupid.games 📧Searls After Dark #4 - Refactoring vs. TestingJustin Searls2023-03-15 | In this episode, Justin decides what to do with the messy class we wrote last week: should we extract refactor several classes out of it? Or delete it and test-drive a fresh implementation using Mocktail and Minitest?
Stuff covered in this video: • Roku gin and Sudachi vinegar • GPT 4.0 updates • Isolation/mockist/GOOS/discovery TDD with Mocktail • Discussion of The Last Responsible Moment
Remember to email me your feedback at lets@playstupid.games ✉️
See the whole series: youtube.com/playlist?list=PLIuJbrOVyGjkRj7UM_whr-CPoqcXTOsZaSearls After Dark #3 - Going end-to-endJustin Searls2023-03-08 | This week, we go end to end and have a real chat with our AI! On the way there we extract some code into a class and add a bunch of error handling to make sure the UI can render any issues.
We have fun here.ChatGPT being bad at computers but lofiJustin Searls2023-03-03 | Someone suggested I ask ChatGPT to help me resolve this VS Code launch configs issue (https://mastodon.social/@searls/109959841494293175). I gave it 20 minutes of being wrong repeatedly, and got no closer to a solution.
00:00 Trying to make it work 16:45 ConclusionSearls After Dark #2 - the Root RouteJustin Searls2023-03-02 | Hello, it's me, Justin from @TestDouble. Again.
We're building an app that will use OpenAI's API to facilitate Japanese conversation practice, grammar improvements, and translations for language learners.
Please send all feedback wherever you feel like it. Also you can email lets@playstupid.games and I promise to read it (if not acknowledge it)Searls After Dark #1 - ChatJPNJustin Searls2023-02-22 | This is the first in a series of informal videos in which I'm building a brand new Rails app, step-by-step and with (almost?) nothing edited out. All the thoughts that go into building the app will be on display, and we'll talk through them together. We're gonna build an app that beats ChatGPT at its own game, by … using OpenAI's API to teach people Japanese conversation skills.
If you're interested in how people approach building modern web applications with Ruby on Rails, you might enjoy this! Hit me up on Mastodon or in the comments if you've got questions or thoughts: https://mastodon.social/@searls -- as always you can find most of my work over at @TestDoubleConfiguring a Lutron Caseta Pico via homebridge-pico to control a ceiling fan via homebridge-bond RFJustin Searls2021-09-06 | ...Choosing a Career You Dont Want - Advice for New GradsJustin Searls2020-10-22 | This presentation was given to a class at Davenport University. It's just a humble reflection on my own career so far, and advice I'd land on if I had the chance to go back and talk to myself when I was graduating from college.Ooedo Ruby - 生活の例外処理Justin Searls2020-10-09 | This presentation was delivered in February 2020 in Asakusa, Tokyo. It recaps the first 6 months of my time living in a suburb in Nara prefecture, Japan. The topic is exception handling in daily life, particularly as it might affect foreigners living in rural JapanHow I review Japanese vocabulary with KameSameJustin Searls2020-05-11 | This is just a straight example of how I practice Japanese daily with my learning tool KameSame (https://kamesame.com). If you're interested in seeing what an intermediate Japanese learner's vocabulary review practice might look like, or learning more about how to use KameSame for maximum effect, check it out!Intro to KameSame (April 2020 edition)Justin Searls2020-04-12 | This is a tutorial showing how to create a KameSame account, do lessons of Japanese content, review items you're learning, and how to best use the app from your phone.
This is a longer video but it shows off the majority of functionality implemented in the system to date, as well as many of my own recommended approaches to using the app.