Bill Selak: Recent Episodes

Bill Selak

All That is EduAwesome

View Details

In this episode, I explore the famous story of Van Halen’s “no brown M&M’s” rider—and why it was never really about the candy. That idea got me thinking about what I call the inverse of a Brown M&M: the small, intentional experiences that communicate your organization’s values from day one. I share how building a custom onboarding app for new employees changed the way I think about technology, professional learning, and school culture, and I challenge you to identify your own “inverse of a Brown M&M” as you prepare to welcome new members of your community this fall.

View Details

In this episode, I react to Anthropic’s new Claude for Teachers announcement and explain why I’m excited—but also frustrated—as a school technology director. Great AI tools need great administrative tools, and there’s still work to do.

Then we zoom out to a bigger question: what should educators actually be building with generative AI? I share a few of my own projects, including a private podcast recording app, a new employee onboarding app, and some experiments with web apps and NFC automations. My challenge for this summer is simple: notice the friction points around you, then build something that makes them disappear.

View Details

Before I became a teacher, I made my living as a musician. One of the unexpected lessons I learned during those years had nothing to do with playing my instrument.

A drummer I knew, Gene, told a story about a friend who auditioned to play on tour with The Eagles. The drummer arrived for his audition, only to be told the band was running behind. While they worked through vocal harmonies, he was asked to pick up an egg shaker and quietly played along. Eventually they apologized, thanked him for his time, and asked him to come back the next day.

The next day went much the same way. More waiting. More egg shaker. Still no opportunity to sit behind the drum kit.

When they asked him to come back a third time, he had to be wondering what was going on. Instead of another delayed audition, they simply offered him the gig. Confused, he asked why they had never actually asked him to play the drums.

The answer has stayed with me for years.

“We already knew you could play, or you wouldn’t have been here. We just wanted to know what it was like to hang with you, because we’re going to spend a lot of time together.”

Musicians sometimes call this the hang. It’s the idea that talent gets you in the room, but your personality, your humility, and your ability to make other people better determine whether you get invited back.

Quick aside: I’m using a photo of Gene as the featured image for this post. He passed away a few years ago, but I still think about this story often. It’s one of those lessons that extends far beyond music, and I’m grateful he shared it with me.

I’ve found Gene’s lesson is also true in education… schools are incredibly collaborative places. We spend hours planning together, troubleshooting problems, organizing events, and simply navigating the unpredictable rhythm of a school day. There are certainly moments where expertise matters. I want my colleagues to be thoughtful educators and skilled professionals.

But after a certain point, competence becomes the baseline. What separates people is whether they’re enjoyable to work alongside. Are they curious? Generous with their time? Calm when things don’t go according to plan? Do they leave the room better than they found it?

I still share this story with students who are thinking about pursuing music professionally. They expect the lesson to be about practicing more or becoming a better performer. Instead, it’s about becoming someone people genuinely want to spend time with.

As it turns out, that may be one of the most valuable professional skills any of us can develop.

View Details

While cleaning up old WordPress sites during my recent website migration, I stumbled across a page of notes from an NAIS roundtable I attended in early 2021. At the time, every independent school was trying to answer the same question: How do we preserve our traditions when we can’t gather together?

The notes were meant only for me, but reading them five years later, I was struck by how relevant one idea still feels: Constraint breeds creativity.

The facilitator challenged us to stop asking, “How do we recreate this event online?” Instead, we were asked to begin with a different question: What is the core purpose of this tradition? Design from there.

That shift in thinking unlocked some remarkable ideas.

Our eighth grade musical became a green-screen puppet production. The art show transformed into a virtual gallery featuring every student. Weekly assemblies evolved into edited video broadcasts with guest singers, jokes, and announcements. Student lunch clubs moved online and remained student-led. Outdoor education became faculty-led virtual field trips. Buddies became pen pals, read-alouds, and student-created activities.

None of these were perfect replacements. They weren’t trying to be. They were designed around the purpose of each tradition rather than its familiar format.

One of my favorite examples was our eighth grade recognition ceremony. Instead of one large event with hundreds of attendees, faculty members met individually with each graduate and their family on campus to read their speech in person. Those speeches were also recorded and edited into a premiere video that every family could watch together. Looking back, it wasn’t simply a compromise—it created a different kind of intimacy that the traditional ceremony never had.

Of course, many of these traditions eventually returned to their original form. Most should have. There’s something irreplaceable about gathering together in person.

But I hope we don’t lose the broader lesson.

When we’re willing to ask why a tradition exists before deciding how it should happen, we often discover better ideas than we’d imagined. Sometimes the constraint isn’t the obstacle—it’s the catalyst.

One other lesson is worth holding onto. During those years, we became much better at creating ways for people to participate remotely. Today, most schools have understandably returned to in-person events, but there are still students, family members, and colleagues for whom attending in person isn’t always possible. We now know how to make many of our traditions more accessible. I hope we continue to use those skills whenever we can.

Funny how cleaning out an old blog can uncover ideas that still feel surprisingly current.

View Details

For years, whenever students started making videos, the same question inevitably came up: Where do I find music that I’m actually allowed to use?

The good news is that there are more great options than ever. Whether you’re creating a classroom project, a school promo, or just experimenting with video, here are a few of my favorite resources.

If you’re looking for a huge library of royalty-free music, Incompetech is still one of the best places to start. Kevin MacLeod’s collection includes more than 1,300 tracks, and you can filter by genre, mood, tempo, or length to quickly find something that fits your project.

For something a little different, check out Mobygratis. Yes, that Moby. He created the site to make his music available for independent filmmakers, nonprofits, and students. It’s a fantastic collection if you’re looking for something with a more cinematic feel.

If you’re creating videos for YouTube, don’t overlook the YouTube Audio Library. Every track clearly lists its licensing requirements, making it easy for students (and teachers) to stay on the right side of copyright while still finding quality music.

Another newer favorite is Pixabay Music. While many people know Pixabay for free images, its growing music library is excellent for classroom projects and includes a wide variety of modern, high-quality tracks.

One of my favorite hidden gems is a little more personal. My former neighbor and middle school teacher, Steven Wesley Guiles, has hundreds of original songs on SoundCloud. His music wasn’t uploaded as a stock music library, which means you can often find tracks that sound refreshingly different from what everyone else is using. If one of his songs fits your project, reach out—he’s been incredibly supportive of student work.

Finally, if your students have iPads or iPhones, don’t overlook Apple’s Clips app. It’s one of the most underrated video tools for schools. The built-in soundtracks automatically adjust to match the length of your video. Record a 20-second clip? The music fits perfectly. Add another few seconds? The soundtrack seamlessly stretches to match.

I’ve even borrowed that Clips feature for more advanced projects. If I’m editing in Final Cut Pro, I’ll create a temporary Clips video that’s exactly the same length as my finished project, export the soundtrack, and drop it into Final Cut. Instant, perfectly timed background music.

Sometimes the best tools aren’t the newest ones—they’re the ones hiding in plain sight.

View Details

When students complete a Google Form to choose a group, how do you put students into groups? And how do you communicate that to students?

Every December, I create 17 (or so) groups for 190 middle school students and 13 more groups for 140 lower school students. Here are my workflows using Google Sheets. I’ll walk you through how I go from getting every students’ top three choices to handing out tickets for the event.

Why should students code?First things first, be sure you’ve read my post on why every student at Hillbrook spends time coding in a schoolwide event. That’s the why with a few details; this post focuses on the how, particularly in Google Sheets as I organize all the things.

Step 1: SignupsSince middle school and lower school students participate in Everyone Can Code on different days, there are different forms. Check out the MS form and LS form to see how they picked their top 3 choices.

This would be a good time to mention that I make a five minute video for LS students and embed it in the signup form. Keep in mind that younger students need extra support in reading, and extra info since some of them have NO IDEA what these robots and websites are.

Step 2: OrganizeThis makes way more sense if you’re following along with the workflow. Here’s a copy of the Google Sheet with fake student names. Open it in another tab and keep clicking back and forth as you read.

Google Forms stores entries on a spreadsheet. That Google Sheet has one sheet titled Form Responses. I never edit this data. My firs step is to create a new sheet (plus button at bottom) and customize the headings. The header is the question you ask and “Which session do you want to go to?” isn’t super helpful. So on this new sheet, creatively titled Query, I type new headers in row 1. The cells are simple so far: First Name, Class, Query 1st, Query 2nd, and Query 3rd.

Then, in cell A2, I type =QUERY(‘Form Responses 1’!B2:F160). That pulls the info from that original sheet; every time a student completes the form, it will appear here. We’re about to add some columns, and things get goofy quickly when a form is being completed and you add columns. So, =QUERY and then…

I added a few more columns. Columns like Query 1 are super useful, but they’re filled with way too many words like “Build a Computer with Piper: physical computing on a Raspberry Pi.” I just want it to say Piper. To do that, I created a few more columns: 1st choice, 2nd choice, and 3rd choice. Buckle up, cuz here’s where the formula gets insane. The goal of this is to basically do an automatic Find & Replace for each choice. Note: if you copy and paste this, smart quotes might break the formula. If it doesn’t work for you, either delete the quotes and manually type them or just manually type the whole darn thing. Here’s the code from cell F2:

*=IFS( (arrayformula(iferror(search("Jawas",C2)))),"Star Wars", (arrayformula(iferror(search("aRT",C2)))),"Sphero Art", (arrayformula(iferror(search("Hackathon",C2)))),"Hackathon", (arrayformula(iferror(search("code a dance party",C2)))),"Dance Party", (arrayformula(iferror(search("LittleBits",C2)))),"LittleBits", (arrayformula(iferror(search("An Unusual Discovery: Make a Cartoon w/ Code",C2)))),"Unusual Discovery", (arrayformula(iferror(search("Build a Computer with Piper: physical computing on a Raspberry Pi",C2)))),"Piper", (arrayformula(iferror(search("Light-up Holiday Card with Paper Circuitry",C2)))),"Paper Circuitry", (arrayformula(iferror(search("Osmo Coding Kit",C2)))),"Osmo", (arrayformula(iferror(search("Bloxels",C2)))),"Bloxels", (arrayformula(iferror(search("Dash-ketball",C2)))),"Dash-ketball", (arrayformula(iferror(search("Superhero",C2)))),"Superhero", (arrayformula(iferror(search("SonicPi",C2)))),"SonicPi", (arrayformula(iferror(search("Javascript 101",C2)))),"Javascript 101", (arrayformula(iferror(search("Sphero Maze",C2)))),"Sphero Maze", (arrayformula(iferror(search("Sphero Goes Green",C2)))),"Sphero Goes Green", (arrayformula(iferror(search("AI for Oceans",C2)))),"AI for Oceans", (arrayformula(iferror(search("Rock, Paper",C2)))),"Swift Playgrounds", (arrayformula(iferror(search("Chrome Music Labs",C2)))),"Chrome Music Labs", (arrayformula(iferror(search("Makey",C2)))),"MakeyMakey Poetry" )* From there, drag the bottom right corner to copy down the formula. In my case, I dragged it from F2 to F137, and also from F2 to H2, and then down to H137. After this super geeky formula, I finally have easy-to-read titles, automatically generated.

I wanted an even easier way to quickly identify what session a student requested. Enter… Conditional Formatting. I created 13 formats for cell background and text color so that I could quickly see who signed up for what.

At this point, I created another column–Grade level–and did the same IFS formula magic and Conditional Formatting craziness. Here’s what that looked like, starting in cell K2:

=IFS(
(arrayformula(iferror(search(“4″,B2)))),”4th grade”,
(arrayformula(iferror(search(“3″,B2)))),”3rd grade”,
(arrayformula(iferror(search(“2″,B2)))),”2nd grade”,
(arrayformula(iferror(search(“1″,B2)))),”1st grade”)

Easier to understand, right? Based on their answer in column B, I could automatically have an easy-to-read grade level column. Again, because this is on a new sheet I named Query, every time a student fills out the form, this info gets added to it. That’s rad.

I also added Conditional Formatting to column K, my grade level column. This time, it’s much simpler, with 4 shades of grey. The reasoning behind this is that I want to instantly see the age of students when I start creating mixed-age groupings. All of this so far is students sharing their top three picks (out of 13). The next step is for me to create groups and put students from grades 1-4 (or grades 5-8 for MS) into groups for their first session (1-2pm in our case) and their second session (2-3pm).

This new sheet, Query, is awesome, but there’s on big drawback–you can’t sort it. So…

Create a new sheet. I named mine “Work here (won’t pull query)“. Copy the entire sheet named Query and head over to the new sheet and click Edit > Paste Special > Paste Values Only. This no longer updates automatically, but it lets you sort, and that’s a super big deal for the next big step.

Step 3: Create Student GroupsOn this new sheet named Work here (won’t pull query), pull down row 1 so that it stays frozen when you sort. Next, go to column F, 1st Choice, grab the drop down triangle, and Sort Sheet A->Z. Your color coding should make it super obvious which sessions are popular for their first choice. You should have a max occupancy in mind for student groups; any time a group is less than max in the 1st choice column, copy and paste those students into the official group… the new fancy column… the one I called Session 1. These students now have a session to attend!

Since the sheet is now sorted by first preference, take a moment and look at grade level. Is the group heterogeneous, or did all the fourth graders sign up for it? Try to get as many students as possible into their first choice without overthinking things or worrying about overbooking a session. Because it’s time for…

Pivot tables! Select the entire page, go to Data > Pivot Table, and select Create New Sheet. Under Row, Click Add, and select Session 1 (check the box Show Totals). Then under Values, Click Add, and select Session 1 (ensure Summarize by CountA is selected). Be nice to yourself and give this sheet a helpful name like Count session 1. This pivot table gives you a real-time count of how many students are in each group. Rad.

Let’s do the same for Session 2… go back to your sheet named Work here (won’t pull query). Select the entire thing and create a Pivot Table. Same as before… Create New Sheet, Row > Add > Session 2, and Values > Add > Session 2. Name this Count Session 2. You should now have two more sheets. This is nice, but can be nicer. QUERY will be our friend again.

Create a new sheet. Name it something like Counts. Manually type the headings: Title, Session 1, and Session 2. Then in cell A2, type =QUERY(‘Count session 1’!A3:B14). If your sheet has a different name, don’t copy and paste this. That query grabs the names of each session and the count of session 1. You’ll need the count of session 2. For that, type =QUERY(‘Count session 2’!B3:B14). For good measure, add some Conditional Formatting to it–when a count goes above your max, make it red. If it’s in the sweet spot (max or a couple below), make it green. If it’s under, make it yellow. Now it’s just a matter of filling all groups to capacity and attempting to give students their top choices. It’s tricky, but between the color coding, easy-to-read session names, and real-time counts on your two sessions, it’s certainly doable.

Step 4: Communicate Sessions to StudentsYou know where every student should go, but nobody else knows. It’s time to let teachers and students know where to go, and what sessions they’ll be attending.

Middle school student workflow: FormMule if students have email, let them know their two sessions by email. FormMule

Lower school student workflow: if students don’t have email, print tickets for them. Autocrat and Google Slides

View Details

For #springcue this year, I posted a prompt every morning, from Friday, March 19 with “Day 1 – Introductions” and through Saturday, March 27.

The primary goal was to give CUE friends a chance to meet new people, and get to know existing edufriends better.

The daily challenge during Spring CUE is over, but feel free to head over to Instagram or Twitter, and post a photo answering any of the prompts. When you do, please use the hashtags #springcue and #nicetomeetcue.

In the meantime, here are my posts. Enjoy!

Hey #springcue friends! Day 1 of #nicetomeetcue is simple—introduce yourself. If you’re new to the CUEmunnity, tell us about yourself. If you’ve been a member of CUE for a while, tell us about yourself.

Post a photo, and add #nicetomeetcue and #springcue, and then go make some new friends.

#nicetomeetCUE day 1 introductions: Hey #springcue friends, I’m Bill Selak (he/him). I’m Director of Technology at @hillbrookschool, adjunct faculty at Concordia University Irvine, and Chair of the @cueinc Communications Committee (we run CUE Live!). 🎥

I’m presenting twice at Spring CUE this week, along with @hkstinnett, @brianbriggs1, @lisateachestech, @lspenceredd, @joetheintro, & Lucio Padilla. 🗣

Fun fact: I used to play music professionally, and played in a punk rock band. 🎸 I mostly write Ed tech parodies these days… my latest is a version of Walk-in’ in LA. We’re encouraging more walking to Hillbrook School, so our version will be Walkin’ to HB, with all original music. 🚶🏻‍♂️

Hey #springcue friends, day 2 of #nicetomeetCUE is all about food. 🍲

Share your favorite foodie photo from Spring CUE in Palm Springs. If this is your first CUE conference, no worries… just share a photo of tasty food. Quarantine sourdough bread images are 💯 allowed. Remember, the camera eats first. 📷

Be sure to tag your photo #nicetomeetcue and #springCUE, and be sure to live vicariously through these images. 🤤

It’s #nicetomeetcue day 2, food at #springcue.

It’s hard to separate good conversations from good food at conferences.

1️⃣The last time I was in Palm spring was 2019 for spring cue. I bumped into @rushtonwastaken and @stevemcgriff at the airport. We went straight to breakfast, and brought along a bunch of #eduawesome humans. ❤️
2️⃣One of my favorite presentations of all time was with @seanthumb & @scottbedley at CUE 14. Our classes (grades 2, 5, and 10) collaborated in google docs. Still an innovative workflow! 🤙🏻
3️⃣ Eggs Benedict at Lulu’s! 🥚
4️⃣ One slice of cake at Sherman’s. 🤤Pretty sure it took three of us to finish it. Sound right @kmishmael & @adambellow?
5️⃣ Oysters at Ruben and Ozzy’s. Super fresh! Don’t let the desert ecosystem fool you. 😉
6️⃣ Massive steak. Assuming @joncorippo was just to my right while devouring it. 🐄
7️⃣ I missed lunch one day, and I get hangry. @flipgrid saved the day by giving me an avocado! I had some random crackers and made a faux avocado toast 🤣🥑
8️⃣ Obligatory Sherman’s Deli pastrami photo. Because Sherman’s. 💯

CUE friends, it’s Day 3 of #nicetomeetcue!

Today’s prompt: why do you teach?

You might share how you got into education, why you’re still teaching, what you love about teaching… you get the idea.

nicetomeetcue day 3–Why I Teach

I majored in music so that I’d be able to record my own music. It used to take a lifetime dedicated to the craft to be able to record. Now, students have the ability to record their own music… with tools that are in their backpacks every day. Giving students opportunities to discover passions, and use them to make a difference in the world is why I teach. #springcue

Hey #springcue! On day 4, scroll back from some previous CUE a conference photos, share a few favorite photos, and tag a few friends.

nicetomeetcue Day 4 – CUE Friends

It’s fair to say that most of my friends are people I met through CUE. Humans that are fun to hang out with, inspirational, and challenge my views on things.

#nicetomeetcue friends, on Day 5, share your favorite memory of CUE. Whether you’ve been a member for 5 days or 5 decades, tell us about an #eduawesome time.

nicetomeetcue Day 5

My favorite memory from a @cueinc event was the epic selfie with @levar.burton & @techmaverick at #cue14.

Some friends (still don’t know exactly who, but I blame @scottbedley & davidtedu) decided to start the hashtag #selfieswithselak. People stopped by all conference long to take selfies, even during presentations. 🤪

After @levar.Burton’s incredible keynote, @techmaverick brought me onstage for this legendary selfie. 🤳🏼

3 memories from this photo:
1️⃣ I have awesome friends. 😎
2️⃣ @dgrice is in the background, and proudly shared “his” selfie with LeVar. (He’s the one that looks like he’s holding a rubber chicken, just above my head.) 🐓
3️⃣ How has it been SEVEN YEARS since this photo? 🤯

Hey #nicetomeetcue friends, it’s Day 6!

What’s a book or podcast that others need to know about? And, I’d you have your own book or podcast, feel free to double dip and share that, as well.

nicetomeetcue Day 6-

1️⃣ I just finished reading Algorithms of Oppression by @safiya.noble.phd—every educator, especially those at #springcue, need to read this. It will challenge your views on commercial search. A few quotes: “Discrimination is often embedded in computer code.”
“Algorithmic oppression is not just a glitch in the system, but rather is fundamental to the operating system of the web.”
“Search results are seen as normative and popular. Racist and misogynist results are often viewed as the popular view.”

2️⃣The Learn with John Eick podcast. @john_eick drops these 5-10 minute nuggets of wisdom in his podcasts. I love his framing of improving systems in education, love his sound effects, and loves how he challenges my beliefs in a helpful way.

#nicetomeetcue Day 7
Who’s somebody you presented with at #springcue, or who’s somebody you collaborate with that inspires you??

It’s #nicetomeetcue Day 7-
Shoutout to my co-presenters at #springcue from the tech director panel— @lisateachestech, @luciopad, @lspenceredd, @brianbriggs1, @joetheintro—and a big shoutout to @hkstinnett for our session on accessibility. If you’re not following all these amazing humans, fix it!

nicetomeetcue Day 8. You’ve had a rad lesson, a lesson where students deeply cared about the learning. What is it‽

nicetomeetcue Day 8

A favorite project from this past year was reimagining the 8th grade play. My last day on campus in March 2020 was spent hanging stage lights… Shrek Jr was about to start dress rehearsals. Yeah, that didn’t happen. Instead, each student recorded their vocals separately, submitted the audio file via google form, and I stitched it together in #logicpro.

For video, we recorded popsicle stick cutouts of students against a green screen. I merged that video with the audio tracks shown here (this screen shot shows about 1/3 of the tracks, added a background after keying out the green, and edited it together into a 15 minute video. Not nearly the same as a live stage production, but a pretty fun video!!!

It’s the last day of #springcue and the last day of #nicetomeetcue.

What’s been your favorite session these past 9 days? Or, if you haven’t watched any yet, what have you learned in the last week?

nicetomeetCUE day 9

My favorite session over the last 9 days was the @chrisemdin keynote. Heard so many amazing people speak, but this talk still deeply resonates with me.

A favorite quote about the need to bring our full selves into our schools and classrooms:
“Education has become a cloning process… extracting out the culture, the dispositions. Then you infuse foreign genetic material in the form of teaching and learning.”

View Details

In this episode, I share how I finally moved my websites off Bluehost after more than 20 years. What started as a simple side project with Cloudflare turned into a complete migration of my domains, DNS, and WordPress hosting—and it ended up being much less intimidating than I expected.

Along the way, I talk about why I chose Cloudflare and KnownHost, how ChatGPT helped me work through each step with confidence, and why having an ongoing AI conversation made tackling a project like this feel manageable instead of overwhelming.

If you’ve been putting off a website migration because it feels too risky or too technical, this episode is for you. I’ll walk through what I learned, the mistakes I avoided, and why now might be the perfect time to make the move yourself.

more-text-here-if-needed

View Details

I shipped an app! It started with a familiar kind of friction: shared listening that didn’t feel shared. My kids each wanted control of the music. I wanted some version of fairness. And somewhere along the way, my Apple Music Replay stopped reflecting my own taste.

That last part stuck with me more than I expected. Replay is supposed to be a kind of memory—a record of what you actually listen to. But in a shared space, it becomes something else entirely. A blended artifact. A compromise.

So I started asking a simple question: What would it look like if shared listening respected individuals?

That question became NextUp Music.

👉 App Store: https://apps.apple.com/us/app/nextup-music-player/id6757323472

👉 Stoked Logic: https://stokedlogic.com/#apps

The Idea (Before the Code)The core idea came quickly:

  • One song at a time
  • One person at a time
  • A clear, fair rotation

No queue battles. No invisible algorithms. No background automation deciding what comes next. Just turns.

But ideas like this are easy to state and surprisingly difficult to hold onto. Every step of building an app introduces pressure to add convenience, automation, or “just one more feature.” So I approached this as a series of small sprints—31 in total—not to move fast, but to stay honest.

The First Few Sprints (Setting the Rules)The early work wasn’t about polish. It was about constraints. (Quick aside for some subtext: I’m hearing a lot of “just tell ChatGPT to build you an app”. These steps below are to help folks understand that there is still A LOT of work that goes into app development. The big shift is simply that you can use agents to write now.)

Sprint 1–3:

Get MusicKit working. Prove that turn-based playback is even possible. Frame listening as a “session” (or a ride), not an endless stream. That shift—from infinite feed to bounded experience—ended up shaping everything.

Sprint 4–6:

Profiles without accounts. Identity without friction. Manual control only. No autoplay. No silent handoffs.

This was an intentional rejection of how most media apps behave. Music doesn’t advance unless someone chooses it. That sounds obvious. It’s not.


Where It Got Interesting (And Harder)Around the middle sprints, the app started to feel real—and that’s where the tension showed up.

Recent Picks (Sprint 7)

This solved a very practical problem: choosing a song shouldn’t require starting from scratch every time. But it had to stay lightweight. No permanent history. No heavy-handed recommendations.

Search + Context (Sprints 8–9)

Search needed to feel like part of the session, not a separate universe. You’re not browsing all of Apple Music—you’re choosing your next song, right now.

Visual Calm (Sprint 10)

Most media apps are dense. I wanted the opposite. Big, glanceable elements. Especially in a car.

Error Tolerance (Sprint 11)

Real life is messy. Songs get skipped. Connections drop. The app needed to absorb that without breaking the experience or blaming the user. By this point, I realized something: I wasn’t just building features. I was defending a philosophy.


Replay Shield (The Feature That Made It Click)The moment the app fully made sense was Replay Shield.

Songs played in NextUp don’t affect your Apple Music Replay.

It’s a small sentence. But it solves something surprisingly emotional. If you’re a musician practicing the same track over and over…

If your kids are deep into a very specific phase…

If shared listening is part of your daily life…

Your Replay stops feeling like you. Replay Shield gives that back. And once that was in place, the rest of the app snapped into focus. This wasn’t just about fairness. It was about ownership of listening history.


The Later Sprints (Power Without Breaking Trust)The final stretch of development was about adding capability without losing the original intent.

Session End + Recap (Sprint 14)

Give the listening experience a sense of closure. A beginning, middle, and end.

Cruise Mode (Sprint 25)

Auto-advance turns—but carefully. Not autoplay. Still bounded. Still human.

Onboarding (Sprint 28)

Shift from explaining buttons to teaching philosophy. What is this app trying to be? Remind (or teach) folks that this is not a typical music player.

Monetization (Sprints 22, 27)

This part mattered more than I expected. I had to decide what should never be behind a paywall. Turn-taking. Core functionality. Those had to remain intact.

Only after that did I layer in optional enhancements.

App Store Readiness (Sprint 31)

Clean up everything. Remove the scaffolding. Make it feel like a real product, not a project.


Building With AI (What Actually Happened)I used ChatGPT and Codex throughout this process. But not in the way people often assume. There’s a narrative right now that you can just ask for an app and it appears. That wasn’t my experience.

The tools were powerful. They accelerated things. They handled details I would have struggled with on my own.

But they didn’t:

  • Hold the product vision
  • Make design decisions
  • Understand tradeoffs in real contexts
  • Decide what not to build

At best, they were collaborators. Which meant I still had to show up with clarity.

It’s not just about writing code; it’s about owning the vision of the app. And maybe more importantly:

This whole idea that ChatGPT can write an app for you—it’s not automatic.

You can move faster now. But you still have to steer.


The Workflow (If You Want to Try This Yourself)If you’re curious about building your own app using a similar approach, here’s what actually worked for me:

  1. Start with a real problem Not an idea. A friction you’ve felt repeatedly.
  2. Define constraints early What will this not become? Hold that line.
  3. Work in small, named sprints Each sprint should have a clear intention. Not just a feature, but a reason.
  4. Build, test, reflect, repeat Don’t try to architect everything upfront. Let the product reveal itself.
  5. Use AI as a collaborator, not a shortcut Ask specific questions. Iterate. Stay involved.
  6. Protect the core experience Every new feature should earn its place without breaking what made the app work in the first place.
  7. Ship when it feels coherent—not perfect There were plenty of things I could keep refining. At some point, you have to release it into the world.

Where This LandedNextUp Music is now live!! It’s a small app. Intentionally so.

It doesn’t try to recommend music. It doesn’t try to optimize your listening. It doesn’t try to become a platform. It just creates a system where shared listening feels fair, personal, and calm.

And for me, that’s enough.

👉 App Store: https://apps.apple.com/us/app/nextup-music-player/id6757323472

👉 Stoked Logic: https://stokedlogic.com/#apps


If you try it, I’d be curious what you notice. Not just whether it works—but whether it changes how the moment feels.

View Details

Three weeks before my Bluehost renewal, I found myself staring at a question that had been quietly growing for years. Do I really want to keep paying for this?

Not because Bluehost had done anything particularly wrong. In fact, it had faithfully hosted my websites for almost exactly 20 years. But over the last few months, my workflow had changed dramatically. My Mac mini at work had become essentially a server for experiments and projects (and also just a daily computer). Cloudflare had just become my DNS provider after I moved Stoked Logic over to experiment with Cloudflare Tunnel. WordPress websites (all 17 WordPress websites!) had become less central to my grad school teaching as Canvas matured into the LMS I now use for adjunct teaching.

Meanwhile, Bluehost had become… expensive. The renewal notice wasn’t really the problem. It was the catalyst. It forced me to look at 20 years of accumulated web infrastructure and ask a harder question:

If I were building this today, would I build it this way?

The answer was an immediate but timid “no.”

The Architecture I Actually WantedOnce I wrapped my head around how hosting no longer has to be “where my website lives,” the project became clearer. I realized I wanted each service to do one job well:

  • Cloudflare for domain registration, DNS, SSL, proxying, caching, security, and Cloudflare Tunnel. (routing web traffic)
  • KnownHost for reliable, boring WordPress hosting with cPanel. (hosting website stuff)
  • Mac Mini for bots, experiments, development, and anything that didn’t belong on shared hosting. (internal scripts, tiny weblinks, network protocols, Claude Cowork tasks, etc)
  • iCloud Mail for the domains where I actually receive email. (This is part of an iCloud+ subscription!)
  • Simple forwarders for domains that exist mostly as aliases. (Who here still has an EduAwesome.com email address from me??)

Instead of one company doing everything adequately, I wanted each layer to do exactly what it was best at.

That sounds obvious now. It certainly wasn’t obvious when I started.

The Unexpected Role AI PlayedPeople often ask whether AI writes my code. That’s actually the less interesting story. The interesting part was confidence.

Over the past several months I’ve built a very focused ChatGPT workspace around my infrastructure and development projects. By the time I started thinking about this migration, it already understood my domains, hosting providers, Git workflow, Xcode projects, Mac mini, Cloudflare setup, and long-term goals.That meant I wasn’t starting every conversation from scratch.

Instead, it felt like sitting down with an experienced systems administrator who already knew my environment. More importantly, it let me approach the project differently. Instead of feeling like I needed to understand DNS, hosting, registrar transfers, SSL, email routing, Cloudflare, and cPanel before making a single change, I only needed to understand the next step.

DNS first. Hosting second. Registrar transfers third. Email cleanup fourth.

Every step was verified before moving on. Every change was reversible. That changed everything.

Step 1: Move DNS to CloudflareThis was actually the easiest part. Scariest, but easiest.

Cloudflare imported my existing DNS records, after which I spent some time cleaning them up (aka pasting DNS records from Cloudfare and from Bluehost into ChatGPT and getting advice on what to keep, change, verify).

Along the way I learned something that probably should have been obvious years ago: DNS, hosting, and domain registration are three completely different things. And while having all those three together in Bluehost was so much easier back in 2006, it left me feeling stuck at the bottom of an immovable mountain whenever I considered any chanes.

Put simply, I had mentally grouped all of them together because Bluehost happened to provide all three. Separating those responsibilities made the rest of the migration much easier, simpler, and safer.

I downloaded all 44GB and pointed Codex at them so it could actually evaluate and inventory every file, and every WordPress database (saved as MySQL). The cleanup included (with ChatGPT telling me what to ask Codex to review):

  • removing years of obsolete cPanel records
  • enabling modern SSL/TLS settings
  • configuring DMARC
  • simplifying SPF records
  • proxying websites through Cloudflare
  • leaving mail-related records as DNS-only

Once most of the stuff was migrated, ChatGPT suggested I run SSL Labs to get a rating of how secure each domain is. A particularly satisfying moment came when SSL Labs went from a B rating to an A simply by disabling TLS 1.0 and 1.1 and tightening a few Cloudflare settings.

Sometimes better security really is just a checkbox.

Step 2: Move Hosting to KnownHostThis part looked scary.It ended up being surprisingly straightforward.

Before asking KnownHost to migrate anything, I downloaded everything from Bluehost: all the websites and databases and files.

Having a complete offline backup changed the emotional equation. Once everything existed safely on my own machine, I no longer felt like I was operating without a safety net. A migration this big was new to me, so having a backup was a big deal. Pro tip: if you’re consider migrating to a more modern and cheaper host, definitely do this step.

But came an unexpected challenge. Of course. I discovered I had seventeen MySQL databases: some belonged to active WordPress sites, some belonged to abandoned experiments/websites, some were backups (I think), and some I honestly couldn’t identify anymore.

Rather than guessing, I worked through each one with Codex until we mapped every database back to its corresponding WordPress installation. (Pro tip: codex command was “Look at all 17 MySQL files and tell me which ones are active.” It was seriously that easy.)

By migration day (from Bluehost to KnownHost), the picture had become wonderfully simple. Three active WordPress sites. Four active domains (billselak.com, stokedlogic.com, eduawesome.com, headsdowntwothumbsup.com). Everything else could be archived.

Step 3: Transfer the DomainsChanging DNS is not the same thing as transferring a domain. Because Cloudflare was already serving DNS, the registrar transfer became almost boring. The websites stayed online. DNS never changed (cuz it already had a few days ago, and took like 5 minutes).

Only the company responsible for annual renewals changed. Today, Stoked Logic has already completed its transfer to Cloudflare Registrar. The remaining domains are simply waiting through Bluehost’s mandatory transfer window.

Things That BrokeOf course things broke. That’s part of the fun. 🫠

One of the more memorable moments came when stokedlogic.com displayed an Cloudflare Error 1000 after migrating hosting. It turned out the migration had copied the files correctly, but the domain itself hadn’t been created inside cPanel. Sounds scary, but again, I just had to tell Codex “Hey, getting Cloudfare Error 1000. Diagose and fix.” And it fixed most of it by itself and told me a couple things to do inside a couple files.

Once that was fixed, another issue appeared. WordPress was still convinced its home URL was Bluehost’s temporary migration address. Again, pasted screenshot of weird URL, and Codex told me how to resolve it. Fix that… and suddenly login cookies stopped working. Fix that… and everything came alive. Yay!

None of those individual problems were especially difficult with Codex. Having ChatGPT act as a troubleshooting partner meant each problem became a short debugging session instead of an evening spent wandering through forum posts from 2014.

The Part I Didn’t ExpectThe hosting migration uncovered a much larger project. Buried inside those old WordPress installations were graduate courses I’d built between roughly 2008 and 2015. Looking back, they feel surprisingly modern.

At the time, Canvas wasn’t part of a teaching workflow. Google Classroom didn’t exist. There wasn’t a polished LMS that handled weekly agendas, assignments, resources, discussions, and course navigation the way we expect today.

So I built my own. Weekly agendas became WordPress Pages. Assignments became Posts. Resources lived alongside the lessons. The entire course unfolded publicly on the web.

At the time, this wasn’t simply following the crowd. It was part of exploring what online learning could become before today’s learning management systems had really matured (been invented?).

Today, I still teach graduate courses. The difference is that Canvas now handles the operational side of teaching beautifully.

But the ideas inside those older courses? Many of them are still worth preserving. Not because the screenshots are current.Not because the software recommendations still apply. Because good questions about teaching rarely expire.

Enter ArchiveSmithOriginally, I planned to manually copy everything into new WordPress pages. That idea lasted about ten minutes. I quickly realized I wasn’t migrating one website. I was trying to rescue nearly a dozen aging WordPress installs, each with its own pages, posts, media, redirects, and quirks.

So, naturally, I built a tool. Well… we built a tool. Working with Codex, I created a collection of scripts that eventually became ArchiveSmith.

It now:

  • reads a WordPress SQL export (a WordPress site is a collection of page snippets and a SQL database)
  • reconstructs pages and posts
  • inventories linked media
  • proposes redirects
  • generates review documents
  • creates WordPress import files
  • prepares clean archival drafts

The first pilot converted an entire graduate course into a structured archive in minutes instead of days. Even better, it standardized the process. Every old site now follows the same review workflow before anything is published.

I started building it to solve my own problem. Now I’m wondering whether other educators, universities, museums, and nonprofits have exactly the same problem sitting quietly on an old shared hosting account somewhere. If so, ArchiveSmith might eventually become a small macOS app that helps rescue those sites before they’re simply deleted.

Looking BackWhen this project began, I thought I was changing web hosts. Instead, I ended up simplifying 20 years of infrastructure, cleaning up DNS, modernizing security, preserving years of teaching materials, and building a new archival workflow I’ll use for every future migration.

The technical pieces are satisfying… Cloudflare. KnownHost. Cleaner DNS. Lower annual costs. Better security.

Those are all worthwhile outcomes. But they’re not what I’ll remember. Well, actually they will. But a better blog post ending is that what I’ll remember is realizing that AI didn’t replace understanding: it changed how I approached understanding. I didn’t need to know everything before I started. I needed enough confidence to take the next well-scoped step, verify it, and keep moving.

Sometimes that’s all the momentum a complicated project needs. And sometimes, somewhere in the middle of cleaning up 20-year-old DNS records, you accidentally build the first version of a tool that might help someone else preserve a little piece of the web.

View Details

In this melodic episode, we riff on the revolutionary landscape of generative AI music, where the fusion of technology and creativity is hitting a new high note. I share my awe-struck experience diving into platforms like Suno and Udio, where I discovered the power of AI to compose music that resonates with our modern times. We’ll explore what generative AI music really means—from the technical beats per minute to the emotional chords that strike within us.

Listen in as I dissect the process of creating a rock song with a melodic pop-punk twist, all about how AI can amplify the creativity of teachers and students. You’ll get to hear the entire AI-generated song, a testament to the astonishing capabilities of these platforms. But don’t expect just a play-by-play of tech; we’ll also ponder the profound implications for music as we know it. Can AI really capture the soulful essence that connects us to our favorite tunes? Will it change the way we experience music, or will it simply become the new norm for background tracks and educational projects?

View Details

In this episode, buckle up for a drive-time rant that shifts gears into the future of creative writing in the age of generative AI. As we cruise through a landscape where technology is rapidly transforming the way we express ourselves, I challenge the misconception that AI tools like ChatGPT will render learning to write obsolete. Instead, I argue that the art of crafting words has never been more crucial.

Discover how being a prompt engineer—or let’s say, a creative writer with a knack for vivid descriptions—can turn anyone into a graphic designer, simply by typing text into an AI. I delve into the importance of adjectives, not for the sake of embellishment, but as the fuel for generating more precise and impactful AI responses, whether in text, image, or soon, video form.

Join me as I explore how the ability to articulate scenes and emotions with clarity and creativity is about to redefine storytelling and visual communication. This is not just a game-changer for writers but for educators and students alike, who now have the power to bring their words to life as never before.

View Details

In this episode, we riff on the evolution of music production and its striking parallels to educational technology. I’m thrilled to share the journey of creating a punk rock song from scratch with my old bandmate Brent, using nothing but our laptops and a dash of creativity. I reminisce about the days of recording in a professional studio, navigating the hefty hardware and the hefty costs, and compare it to the sleek, swift, and virtually cost-free process of modern digital music production.

As we break down the barriers between the past and present, you’ll get an exclusive listen to our latest collaboration, a song that embodies the DIY spirit and showcases the capabilities of today’s tech. We’ll explore how this process mirrors project-based learning, the importance of creative expression in education, and the profound implications of anytime, anywhere, any pace learning.

This episode is a testament to the power of iteration, the beauty of collaboration, and the transformative nature of technology in both music and education. It’s a reminder that we can bring our whole selves to our work and that sometimes, a creative interlude can enhance our focus and passion in every aspect of life.

So plug in your headphones, prepare to be inspired, and let’s dive into a discussion that harmonizes the chords of edtech and punk rock. Whether you’re an educator, a musician, or just someone who loves to see creativity in action, this episode of Bill Selak Talks is sure to strike a chord. ;)

View Details

In this episode of Bill Selak Talks, we take a twisty turn into the colorful world of Rubik’s cubes and the unexpected lessons they hold for educators and lifelong learners. Join me as I share my personal journey from curiosity to conquering the iconic puzzle, all thanks to the democratizing power of YouTube tutorials. Discover how a simple quest to solve a Rubik’s cube unravels profound insights into the value of repetition, the joy of learning, and the transformative potential of technology in education.

We’ll delve into the parallels between mastering the cube and fostering student-centered learning, emphasizing the importance of personalized learning paths and the wealth of resources available at our fingertips. From the initial intrigue sparked by a Voxer chat with friends to the triumphant five-minute solve, this episode is a testament to the magic of embracing challenges and the breakthroughs that can be achieved through technology.

Whether you’re an educator looking to inspire your students or a lifelong learner chasing that “someday” skill, this episode will motivate you to harness the tools of our digital age. So, if you’re ready to be encouraged, to take risks, and to find joy in the journey of learning, tune in to this episode of Bill Selak Talks, where we explore the endless possibilities that technology brings into our lives and classrooms.

View Details

In this poignant episode of Bill Selak Talks, we dive deep into the heart of education’s most profound dilemma: the balancing act between unwavering dedication and personal health. Inspired by a story of a teacher grading papers in his final hours, we explore the pressures educators face, the unrealistic expectations placed upon them, and the urgent need for boundaries. Learn practical tips for preparing lesson plans in advance, leveraging digital tools, and most importantly, giving ourselves permission to prioritize health over heroics. It’s a call to arms for educators to safeguard their wellbeing, ensuring they can continue to inspire without sacrificing themselves. Tune in, as we redefine dedication in education.

View Details

In this episode, I dive into the challenges and victories of maintaining creativity under pressure. Reflecting on my pre-kids photo-a-day project, I share how a simple challenge evolved into a profound journey of self-discovery, revealing the importance of pushing through creative blocks. From the mundane to the inspired, every photo tells a story of perseverance. I also explore modern creative solutions, like leveraging ChatGPT for idea generation, and the lessons learned from creating my annual Apple Distinguished Educator video under constraint. This episode uncovers the beauty of creating, even when inspiration seems out of reach, and emphasizes my innovative use of Apple hardware and software in education and personal projects.

View Details

In this episode of Bill Selak Talks, I muse over the quirky yet insightful ways my children interact with technology, revealing a generational bridge that I, as a Xennial, find myself balancing. I’m the go-to tech guide for both my parents and my kids, yet I’m also the playful target of my kids’ tech-savvy trolling antics.

Join me as I recount the evolution of photo-taking, from toddler selfies to a near-impossible mission to snap a picture with my wife without our kids’ interference. I’ll share the amusing ways they’ve commandeered my Netflix account, transforming my watchlist into a carousel of Swan Princess episodes and how they’ve turned car rides into a battleground with Siri and Kidz Bop. ;)

But it’s not all light-hearted mischief. This episode dives deeper into the implications of digital fluency, debunking the myth of “digital natives” and stressing the importance of explicit instruction in media literacy and digital citizenship. I’ll explore how despite their intuitive grasp of technology, kids still require guidance to harness these tools for academic success.

View Details

In this episode, I delve into a curious parallel that struck me recently: the stark contrast between the fluid timelines of construction projects and the rigid deadlines we adhere to in education.

As I reflect on a roundabout construction near my house, it becomes a metaphor for the challenges and flexibilities we encounter in teaching. I explore how the unpredictable nature of roadworks can shed light on our approach to educational deadlines, and why adapting might sometimes be the key. Join me as we navigate through these thoughts, uncovering insights about flexibility, planning, and the unexpected lessons life throws our way.

View Details

In this episode, I celebrate a milestone: the 100th episode of the podcast! We’ll dive into themes like Student Engagement and Learning, revisiting anecdotes from past episodes. From ed tech experimentation to personal teaching experiences, join me in reflecting on the journey we’ve taken and the future of education. This special episode is not just a look back, but a vision forward, packed with insights and inspirations from our podcast’s journey.

View Details

In this episode, I share a candid conversation with my third grader that reshaped my understanding of identity and creativity in the age of AI. As I delve into the world of app development with the help of ChatGPT, I confront my own self-identity and explore how emerging technologies are redefining what it means to be a creator.

Also, join me as I reflect on my 15-year podcasting journey and anticipate the excitement of the 100th episode. It’s a celebration of embracing new roles and recognizing the transformative power of AI in our lives.

View Details

Device-free time can be magical in a classroom (and at home). Lots of learning happens without devices. Lots. But… what does a school like when you can’t imagine it without devices? Without the ability for a student to write a song, publish a book, start a podcast, create an infographic, or create a video to […]

View Details

I am not impressive to my fourth grader, nor are most (all?) of the things I share with her. But… there are some extraordinary, dare I say magical, things that exist in the world that did not exist when we were all kids. And I’m okay with her not being impressed with things I share. […]

View Details

So you want to podcast with you students? Awesome! I definitely have a list of gear that is my favorite for schools–high quality and good prices! I’ll walk you through what gear to buy for both a (mostly) permanent podcast studio as well as a mobile studio. Here’s the gear you need: Rodecaster Pro Amazing […]

View Details

As my phone auto-played a song this morning, I was vividly reminded about the hour we spent in 2002 at Orange Whip Recording Studio with the band Bad Astronaut trying to find the one perfect lyric. That level of passion, detail, critical thinking, and perseverance is something we need to be doing way more in […]

View Details

As school leaders, how do we have a high impact on our school’s culture without adding another thing to teachers’ plates? Where’s that sweet spot where you get high impact with low effort? My answer to that is this year’s Talent Show act for employees at Hillbrook School. Hear how we made a music video, […]

View Details

I’ve learned so much this year in my leadership coaching with Aimee Giles. We’ve talked a lot about my values–imagine the islands from the movie Inside Out… that’s what we’ve created, and what we use to check decisions I make (and don’t make). In this episode, hear about two of those values (“I’m going to […]

View Details

What is good teaching? It’s complex. It’s not easily replicable. Let’s listen to an MxPx song, and hear why that song accomplishes its goal, but why my songs don’t.

View Details

Technology in education keeps getting better, faster, cheaper, and easier. In this episode, I talk about how the audio plugin Abbey Road One: Orchestral Foundations completely changes how you can write and record music (unless you happen to have access to an entire orchestra and can rent out a world-class studio). Click on that link […]

View Details

In your early 20s, you really don’t need to have everything figured out. I’m glad I didn’t. In this episode, I share how following what matters to you–particularly in your 20s, but also throughout your entire life–is one of the most important things you, your students, and your kids can do.

View Details

I am talking about my professional goals for the 2021-2022 year. Spoiler alert… here are the goals: Advance diversity, equity, and inclusion work.  Upgrade and fine tune Hillbrook’s technology infrastructure  Support our new Tech Support Specialist  Next Steps with The Hub 

View Details

This past school year was… different. I like to end the school year with a big year-end reflection. Previously, I’d write about each of my professional goals, and how I did and didn’t meet them. Since so much of this past year was driven by the pandemic, I’m taking a different approach to this post. […]

View Details

You’ve probably heard about viewing the world through a Scientific Lens, but what about a Musician’s Lens? What might that look like, and why might more educators adopt this way of looking at teaching and learning?

View Details

  • Podcast episode template
  • https://anchor.fm/signup
  • https://pinecast.com/signup
  • An educator’s guide to podcasting beyond the classroom
  • Teaching Podcasting: A Curriculum Guide for Educators
  • How to record audio on an Android using a built-in app on your device
  • How to use Blue microphones with a mobile device
  • Example: https://podcasts.apple.com/us/podcast/bill-selak-talks/id304781138

View Details

Have you ever had a perfect slice of pizza? I’m not sure I have (yet), but my preferences have shifted over the years away from ridiculous pizzas like the Roadkill to a simple slice of…cheese. Oh, and I also talk about a plethora of tech subscriptions and managing technology budgets.

View Details

Being an educator during a global pandemic is incredibly challenging. Hear how this slice of deep dish pizza is getting me across the finish line. 🍕

View Details

How hard do people have to think to use something at your school? In this episode, hear about everything from light switches to websites, and how the goal of all systems at schools should be to make things as obvious as possible.