Search

635: Jeff Robbins and Visibox as an Instrument for Video

Download MP3

Jeff Robbins stops by to talk about his software, Visibox, that was used at Frostapalooza for presenting video at the concert, what it's like building an app with Electron, how it's distributed, how files are used and managed, and how he supports hardware devices inside Electron.

Tags:

Guests

Jeff Robbins

Jeff Robbins

Web · Social

Creator of Visibox, Musician in 123Astronaut & Orbitband, Cofounder at Lullabot, Executive Coach at jjeff․com.

Time Jump Links

  • 01:24 Introducing Jeff Robbins
  • 02:30 Frostapalooza Visualizations
  • 05:18 Jeff's journey through music and software
  • 17:58 Where bands make their money
  • 20:24 Sponsor: Jam.dev
  • 22:14 What else can Visibox do?
  • 28:38 Visibox built with Electron
  • 36:21 How do I distribute an electron app and ship?
  • 45:32 How does it accept large files to upload?
  • 48:58 How do you support hardware in Electron?
  • 52:57 What about mobile?

Episode Sponsors 🧡

Transcript

[Banjo music]

MANTRA: Just Build Websites!

Dave Rupert: Hey there, Shop-o-maniacs. You're listening to another episode of the ShopTalk Show, a podcast all about front-end Web design and development. Today, we might be taking a little turn towards native-y stuff. I'm Dave Rupert and with me is Chris--in his childhood bedroom--Coyier.

Chris Coyier: I am, actually, yeah, visiting the folks here. Sorry about the laptop mic. I need to get one of those... Don't you talk into an MV7, Dave? The little USB--

Dave: Yeah, I do. I have a little Rode Podcaster, like to-go kind of one. NT-USB, so it's pretty good.

Chris: Oh, you don't have the Shure one.

Dave: No.

Chris: You have the Rode one.

Dave: The Rode one is pretty nice, yeah.

Chris: But it has UBS.

Dave: Yeah.

Chris: Which is nice.

Dave: USB is critical.

Chris: Yeah.

Dave: Because you just plug it in. You don't have to do the audio interface and all that junk. Yeah.

Chris: Yeah. I nerded out on it too long. It's funny how you circle back, and you're like, "Wait. It just plugs right into my computer? That's obviously better."

Dave: [Laughter] I mean technically a Scarlett preamp will plug into your computer and then reset itself every few weeks. But yeah.

Chris: Yeah, that's great. That's great. Well, we have another audio guy on here, too. We were just hanging out with him in Pittsburgh not so long ago, Mr. Jeff Robbins. How ya doin', Jeff?

00:01:32

Jeff Robbins: I'm good. How are you, Chris?

Chris: Fantastic.

Jeff: It's nice to get a little view into your childhood bedroom.

Chris: Yeah. [Laughter] Thanks. Yeah.

Jeff: Through the VoIP software.

Chris: It was just another era. You know? I feel like I'm old enough now that I look back and be like, "How did I possibly--?" I had a Snapple bottle that I used to smoke a cigarette and put it into the Snapple bottle and close it thinking that that somehow was good enough to make me not get in trouble for it. My God. Can you imagine?

Jeff: [Laughter]

Dave: Hey!

Chris: Right here in this room. It's fuckin' tiny.

Dave: Better than my Pringles can collection that I decided I must absolutely have.

[Laughter]

Chris: Yeah.

Jeff: I used to blow the smoke out the window, like open the window a little bit.

Chris: Sure.

Jeff: And it would be, like, February.

Chris: I would like to think I did that, too.

Jeff: In New England, blow the smoke out. I'm sure my parents were smelling it out there. Oh, well.

Dave: Oh, it goes straight into their window?

Jeff: Yeah.

[Laughter]

Chris: They were probably doing the same thing.

Jeff: Don't smoke, kids! We're not advocating!

Chris: Yeah. Clearly, we're not. That was a very bad plan.

All three of us took the stage at Frostapalooza, but Jeff had another role as well. The plan was to show off cool visualizations and stuff behind the musicians, like many concerts do, and we did it. We pulled it off.

Brad was like, "Hey, we should use... We'll use CodePen. We'll do some visualization stuff." We did some of that, and that turned out really well. So, if any participated in that, maybe you'll end up seeing yourself on YouTube at some point.

00:03:07

Jeff: We did.

Chris: Yeah.

Jeff: It was such a fun process. Brad knew I had this software called Visibox, which is sort of a thing that I'm focusing on these days. And he went on CodePen and started creating some little visualization kinds of stuff.

It's funny. I hadn't really spent much time doing that. But it was really fun, and there's so much you can do with CSS.

Certainly, if you get into WebGL and all that kind of stuff, you can do really cool, trippy stuff. But you could do a whole lot with just CSS and HTML without any JavaScript at all or any sort of advanced stuff. And we started creating these CodePens, kind of throwing them back and forth and texting each other, and built up a whole library of stuff that we ended up--

Chris: Right. It's stuff you could imagine. Circles getting bigger and flying by and words. It's all near and dear to me because I've run CodePen for a long ass time now and people build visualizations like this every day on CodePen.

But for a concert, there's almost... Every concert is different, but a certain aesthetic. They're constantly running, and they're not necessarily reactionary to the music in this case.

Jeff: Right. Right.

Chris: But they could be.

Jeff: You want something that's sort of animated.

Chris: Yeah.

Jeff: And kind of loopy.

Chris: Right.

Jeff: And sort of ambient. It doesn't necessarily upstage what's on stage and stuff like that.

Chris: Exactly. Let's say you had 100 of them, which I bet we did (in the end), or you did. Tell us what Visibox does. Doesn't it make you the DJ of the concert in a way?

Jeff: Yeah.

Chris: But visually.

00:04:48

Jeff: [Laughter] Where should I start? Yeah, we're kind of jumping into the conversation. I want to catch people up.

I have sort of a dual history as a Web developer and as a musician. I actually started doing Web development, like I worked on the very first commercial website with my wife Jennifer, who has been on your podcast before.

Chris: Mm-hmm.

Dave: Jen Robbins, big fans. Big fans.

Jeff: Yeah. Yeah, she's a book author for O'Reilly.

Dave: Artifact Conf.

Jeff: Yep.

Dave: Yeah.

Jeff: She does lots of stuff. So, I started doing that and, at the same time, I had a band. I started a new band in 1993-94, and we got signed, and I spent the rest of the decade in a tour van doing that.

Dave: [Laughter]

Jeff: And we played lots and lots of shows all over the U.S. and Canada and some in Europe. We did the Lalapalooza Tour in 1997.

My band was called Orbit. Mediumly successful. We were never a household name, but it was my career full-time for seven years until the early '00s when the bottom dropped out on the Web and also kind of the bottom dropped out on the music business. And so, I kind of just switched over [laughter] and started doing Web stuff again, and eventually started a company called Lullabot in 2006, a Drupal-focused development shop that's still thriving today.

But through all of that... And Orbit was a rock band. It wasn't a particularly technological band, and there was sort of a decision that I had made in my life at some point that I wanted my music to be organic and not get sort of overrun by the techy-ness of the kind of ones and zeros parts of my brain when I was doing programming and development and stuff like that but was still really interested in sort of this intersection between audio and visual stuff.

And I had an exit from Lullabot about six or seven years ago. Started a new band. Started playing more music again. And one of the things that I had been doing in the early '00s (around the same time that Orbit got dropped), I started a new band and wanted to more explore this intersection between multimedia and music and stuff. And I had a band that was playing with videos. We were playing with a click track, which was crazy-making.

Dave: That's hard. [Laughter]

Jeff: Yeah.

Dave: It's just like, "Oh, don't make me be on time. Don't."

Jeff: Ugh! Yeah. You forget the first line of the first verse and the whole song is messed up.

Dave: Yeah.

Jeff: It's just a different way of playing.

00:07:49

Chris: I saw a TikTok the other day where they were playing live, and the monitor was literally a click track.

Jeff: Yeah.

Chris: I was like, "Wait. What?!"

Jeff: That's where it is. Especially, as a drummer, you've got to hear the click in your headphones so that you know where you are in the song and line it up. But it's a process, and I have both horror and respect for that whole process.

[Laughter]

Jeff: And anyway, so I started a new band. A guy in my new band had seen my old band play with this multimedia stuff, and he was like, "Oh, I want to do that!"

I thought, "Oh, I could figure this out," and so I sat down and started kind of playing with various stuff.

Long story short, it led to building this software called Visibox, which kind of initially started as a proof of concept. But the more I kind of proved the concept, the more it was like, "Oh, this is... I think other people would like to use this and I could make it user-friendly and easy and awesome," because so much of the kind of multimedia software that's out there these days, it's usually referred to as VJ software, is really complicated.

If you're just a musician that wants to shoot some flowers--

Dave: Like B-roll sort of--

Jeff: B-roll kind of stuff blowing in the wind and wants to show it behind you on stage while you play, or maybe you've got ideas for creating a more interactive thing. You're already playing with backing tracks, and you want to create these little music videos. All this stuff you can do on your phone these days, but the actual process of showing it on stage is usually prohibitive.

I've talked to lots of musicians who say, "Oh, yeah. I looked into that a while back and it never really led to anything," which means it was--

Dave: It's always like, "Step one: get Ableton," or something. You know? [Laughter]

Jeff: Well, it's more like, "Step one: get--" Yeah, I mean, get Ableton. Then set up a click track, so now you're playing to a click track instead of just playing on stage. Now you're all obsessed with that.

Then create music videos for all your songs. Then get Resalume, and then sync up everything together. And then play. It's just a lot.

And so, with Visibox, the idea was let's be able to kind of live edit a music video onstage or focus on looping videos. I found, as we were talking about with this CodePen stuff, if you find something that does sort of a seamless loop, 15-30 seconds, you can certainly get through a song with that, just that, and oftentimes get through a whole set. You can kind of create this immersive show that feels like you've got this vibe going onstage. That's Visibox.

00:10:46

Dave: Can I give my perspective? You're Visiboxing live.

Jeff: Yeah, at Frostapalooza. Yeah.

Dave: At Frostapalooza, and I'm just going to give my perspective, and you tell me kind of maybe some technical details.

We get there, and you're like, "Hey, do you have a projector?" And the guy is like, "Yeah... uh, but it's a 430p or maybe a 720p, or something, and it only has a VGA cable," and you're like, "Okay. I'll make it work."

Then you get the projector fired up. It projects a square, but the shape of the projection surface is a house shape, and so you're like, "Okay, I got that. I'll figure that out."

Then I just see you tinkering. I want to know more about it, but you have a little stream deck out to the side, and you're just like, beep-boop-beep-boop-beep-boop, and it looked modern, I guess is what I want to say. It looked streamer-friendly. If you're a streamer, you sort of get, like, "Oh, I just transitioned scenes," or "I'm just doing this or that."

I think I was really impressed. It's nothing to project my browser [laughter] showing video, but how your software adapted not only to resolution but then to aspect ratios, and then you just said, "No, make them all a circle," I thought that was really cool.

Jeff: Thanks. Yeah. Thanks, Dave.

Yeah, I mean this is the thing. I wanted to make it easy and super, super flexible. The thing that I found is you show up at a venue; you don't know what aspect ratio the video projector is going to be. A lot of video projectors are still 4:3 aspect ratio as opposed to 16:9, which is the current HD. J

For people that don't know what I'm talking about here, 16x9 is wide, modern TVs; 4x3 is TVs from the '90s, CRT TVs. And there are a lot of 4:3 video projectors out there, especially on the used market. They're good, but if you spend all the time editing for 16:9 and you get there, you have to letterbox the content, and you lose impact.

I tried to make Visibox... It's just a totally different way of thinking about a media player because usually you're like, "Well, I'm going to show the Wizard of Oz on this. I don't want to crop off the sides." With Visibox, it's like, "No, we're just showing flowers and vibe-y kind of stuff. It's okay to crop off the sides.

You can set it to letterbox if you are showing the Wizard of Oz and want to make sure it doesn't crop off the sides. But it also has functionality for, like, creating curved corners and different aspect ratios. And so, I was able to make it into a circle because it was, it was this house-shaped space above the stage that the video projector was set up, and it was literally projecting off the edges, the edges of the roof. [Laughter]

Dave: Yeah. Yeah.

Jeff: And it was like, "Uh... What do we do?!"

Dave: Yeah.

Jeff: But this circle shape worked really well there, and it didn't feel like a video projection anymore. It felt like sort of a stage effect. A light or something like that.

Dave: Just an entity. Yeah, yeah.

Jeff: This other entity that I think that show was a good example because it didn't really upstage the content on stage, but it underlined it. It's also nice because oftentimes I'm doing original stuff for my band or other things like that, but doing cover songs, you can kind of take some liberties. It's like, this is the song "Sledgehammer," so I'm going to go out and find some video footage of someone swinging a sledgehammer. [Laughter] It just totally works on stage. Whereas if I were Peter Gabriel, I probably wouldn't be putting up something as literal as that.

Dave: Probably. Yeah. It's probably some more--

Well, I would say one trend I've noticed on at least the big touring bands is more video. Right?

Jeff: Mm-hmm. Yeah.

Dave: Not that everyone has to be a big touring band, but a lot more bands are pulling in these big, multimedia experiences into their production.

00:15:16

Jeff: Well, yes, and you go to a show at your local megaplex centrum kind of--

Dave: Yeah.

Jeff: And there's video. It's just sort of something that you kind of expect. It adds to the vibe on stage. It shows live footage of the players playing and all that kind of stuff.

But you would think it would be easy to do at a club because video is so ubiquitous. Even 15-20 years ago, you couldn't expect that a QuickTime movie was going to play without glitching on your computer.

Chris: [Laughter]

Jeff: But these days, we're streaming 4K stuff over the Internet. It's just kind of everywhere. You're shooting it on your phone.

We can expect that, so you would think we would have hit the tipping point for this to be ubiquitous and that anyone who wants to do it could. But it felt like there was a piece missing, so that's why I created this software.

Chris: Which could also output to a 28-foot 4K screen beautifully, right? That's what's kind of nice is it's super adaptable.

Jeff: Yeah. Yeah, I mean that's the thing also about being sort of like aspect ratio agnostic and all that kind of stuff, especially video walls are all sorts of different weird shapes and stuff like that.

Chris: Yeah.

Dave: Even like the local bar, right? Bars are projecting old movies off of Netflix, right? Like samurai films and stuff or whatever - Charlie Chaplain.

It just seems like, yeah, you go to a music venue, they have a billion dollars' worth of music equipment, and then it's like, video, and you're like, a projector from the 1990s.

[Laughter]

Dave: That's what our experience was, basically.

00:17:07

Jeff: But it's easy enough for a touring band to throw a video projector in their van. There are good, small ones that are sort of business-oriented, and good larger ones, but that takes up that much more space. But the point is that you can kind of get into the whole thing for less than $2,000. Get a video projector for $800, maybe $1,000 laptop, and you're kind of good to go.

The thing about Visibox is you can also trigger it with media devices. If you're a base player or a guitar player or something like that, you can trigger it with your feet.

Chris: Oh, that rules. Really?

Jeff: Yeah. If you're a drummer, you can trigger it with a drum pad and stuff like that. You don't even need an extra person to be driving the video.

Chris: That seems compelling. Part of it is you make less money on streaming and whatnot these days. Isn't it true that a band with even medium success is making most of their money on the road?

Jeff: [Laughter]

Chris: Hard to say, right?

Jeff: We could do a whole podcast on that. But yeah, let's just say live performance is an integral part of being a fully successful musician these days.

Dave: Yeah, and the economics have shifted dramatically.

Jeff: Yeah.

Dave: From $10 CDs, $20 CDs.

Jeff: From the '90s when I was touring.

Chris: And I guess the only reason I bring that up is if you just had a lackluster ass stage show, that ain't doing you any favors. It seems like video is a way to kick it up a notch.

Jeff: Yeah.

Chris: Like you said, for $2,000 or whatever.

Dave: And half of it you have, right? Most of us have a laptop.

Jeff: Right.

Chris: We work in tech, right?

Jeff: Right.

Chris: Right.

Jeff: Right.

Dave: Most of us probably have a projector somewhere because we--

Jeff: [Laughter] My joke is that if you've got an uncle who is a lawyer, there's a closet full of excellent video projectors that no one is thinking about.

[Laughter]

Jeff: I don't know. That one--

Dave: For real, dude. Yeah.

Chris: Yeah.

Jeff: Yeah.

Dave: My dad's office, I could probably raid it.

Jeff: Exactly.

Dave: And get two video projectors. Yeah.

Jeff: Yeah.

Dave: Yeah.

Chris: I'm going to look on Facebook Marketplace right now and see how many there are locally.

00:19:15

Jeff: Yeah. It's like everyone has got a relative that knows somebody with a closet full of video projectors. The old ones are good. You don't necessarily need the newest.

Part of Visibox and the promotion around it has been there is a lot to teach people. If I had created a guitar pedal, people know how to use guitar pedals, right? I don't need to explain that to them. But instead, I've created this software that's not quite music software and it's not quite video software, and you're asking musicians to buy a video projector. How do they know what...?

I've started creating this tutorial stuff. Some of it is written, but a lot of it is on YouTube where I'm explaining to people what's the ins and outs of all the different kinds of video projectors and what they need and stuff like that.

Chris: Yeah.

Jeff: But the short version is--

Chris: You need 1,000 lumens.

Jeff: Yeah, the brightness is more important than the resolution. If you find an 8-year-old, 10-year-old, 5,000-lumen projector for $300, go for it.

Chris: Yeah.

00:20:25

[Banjo music starts]

Chris: This episode of ShopTalk Show is brought to you in part by jam.dev. You've got to check it out. Go to jam.dev. It's a free browser plugin you can install.

As a developer, you need some kind of tool for capturing and annotating screenshots for bugs or, even better, recording little video screencasts of what the bug is. They communicate the bug so much better.

You've got to have a tool like that. That's what Jam does. But it does so much more than that because it automatically captures a whole bunch of interesting, actionable metadata along with that.

Imagine you've recorded this little screenshot now. It automatically becomes this sharable URL that you can put wherever. There are integrations, too. Send it to Jira, send it to Notion, use it in your Slack - whatever.

You can comment on them; leave text there explaining what's going on. But it automatically captures the console, everything in the console - what happened. If it's a bug and the bug threw, for example, a JavaScript error, you'll be able to find it.

You integrate it with Sentry. We definitely have that at CodePen. Now I take a screenshot. If there is some backend problem or front-end problem even, it can compare the timestamps of what got reported in Sentry and then what was happening on the website and marry the two so you can see more even than in the console with Sentry. I think that's amazing. Not to mention you're looking at the video of the problem - super, super useful.

Then it's got the browser, the platform, the version, when, where it happened, all this stuff. More than just the console to other stuff from the dev tools - just a tremendous thing.

And it doesn't make any more work. You need a screenshot tool, a screen recording tool anyway. You might as well use this one and get all the free metadata information and debug information there, too.

I even see there's a little AI tab, so it's like, "Oh, this is representing a bug. Now, with all this information, it'll take a crack at how it thinks you could fix it. Why not? Sometimes you're stuck. Let it help you.

Check this all out at jam.dev. A really cool tool.

[Banjo music stops]

00:22:35

Chris: Did you see that guy who built the guitar pedal for his mouse on his computer? You have it under your desk, kind of, and the harder you press on the pedal, the more sloppy your mouse gets?

Jeff: [Laughter]

Chris: It doesn't stop as good. You know?

Jeff: It's a drunkenness pedal? Is that what it is?

Chris: Yeah.

[Laughter]

Chris: It just has less physics. You move your cursor a little bit and it stops when you take your finger off. But the more you pedal it up, the more it slides like ice.

Dave: I didn't know. That's awesome.

Chris: It's ridiculous.

Dave: I bought a foot pedal for my computer.

Chris: Did you?

Dave: So I could plug it into my PC and use as a mic mute, so I could stomp the box and yell at teenagers on video games.

Jeff: A cough button. Yeah.

Dave: Yeah, a cough button, basically. But I use the reserve, like push to talk. I would push down my foot, go, "You're stupid and your dad doesn't like you," and then I'd let go, and then, you know. [Laughter]

Chris: You'd be muted again? Oh, I see.

[Laughter]

Dave: I'd use it--

Chris: For yelling at people on Overwatch or whatever?

Dave: Yeah. Yeah, pretty much.

Chris: Yeah.

Dave: Yelling at teenagers in Overwatch.

Chris: Isn't there some--? It's not just... Visibox isn't a QuickTime player.

Jeff: No.

Chris: It's like, next song. Okay, double-click another video and let it play through the projector. What is all it do?

00:23:53

Jeff: It's really oriented towards the needs of performers on stage, and musicians in particular, but generally different types of performers.

Chris: Yeah.

Jeff: The interface is set up like a set list. Basically, you create your setlist.

Chris: Uh-huh.

Jeff: Then you just drop in whatever media you need for each song.

Chris: Per song. Yeah.

Jeff: And so, maybe you've got a song and you want a whole bunch of different videos of people swinging sledgehammers and, at various points during the song, you'll trigger this one and that one and this one and try and make it artistic. Or maybe you've got backing tracks for a song, and you want to drop in an audio file and have that being the backing track. Or you've got a music video that you've created, which has its own soundtrack, and you want to play along with that on stage - or other things.

I actually did a really cool thing. My band Orbit, we get together from time-to-time. We do about a show a year these days. Each one, we're able to call a reunion because it's so rare and our fans are so old.

I brought the band. It's a three-piece (sometimes four-piece) band. And so, I brought Linda and Paul, the other members of the band, into the studio, and set up a camera on them.

I was off-camera, and we went through about 20 songs in about - I don't know - 4, 5 hours. Recorded them all on multitrack with the camera. Then I went and mixed Linda and Paul's tracks with the camera. Now I've got this virtual band that I can play out live with.

I also shot video of them just sort of standing around between songs and waiting, and so I go to the gig and I set up, and it's them on the screen, but they're just milling around, and it feels like Zoom. And so, then I click the pedal to trigger the first song, and I play along with them. They're on stage. I can even look at them to kind of cue, like, "Where are we in the song?" because we're just so used to kind of doing that. It's created this really interesting experience.

The first time I did it, people were literally yelling out, like, "What's happening? Where are they?" [Laughter] "Why is this...?" Because it's like they're on Zoom, but why would you have a band on Zoom? I mean you couldn't have a band on Zoom, not really.

Chris: Right.

Jeff: But this sort of feels like that. So, yeah, any number of different things that you can do with Visibox.

Chris: Including that, which sounds like you put some effort into it. But most of the effort was getting everybody together and shooting some clips.

Jeff: Right.

Chris: But after that, it was relatively easy, right? You just dragged the clips where you want them.

Jeff: Yeah. Yeah, yeah, I can just go, show up, and play.

Chris: Yeah. Isn't there some literal DJ stuff? Can't you kind of scratch on a video a little bit?

Jeff: Yep. Yep.

Chris: Yeah? [Laughter]

00:26:50

Jeff: Yeah, so you can kind of choose what happens when you initially trigger a clip. Then when you trigger it again, think of it maybe as drumsticks. You're hitting a playing video with a drumstick. Should it keep playing? Maybe.

Should it go back and start from the beginning or could it jump back a little bit Max Headroom style? And so, you can kind of create these rhythmic effects, including the scratching kind of thing where it shuttles back and forth in time to kind of create these rhythmic interactions between the visuals on the screen and what you're doing on stage even though -- and I don't know if I've been clear about this -- you don't need to play with a click track to do Visibox. That was the whole reason that I created it was because I didn't want to play with a click track anymore.

Dave: Yeah.

Jeff: You can just free-form. And if the bridge goes on for 30 minutes with your Grateful Dead cover band, that's fine. Just keep looping it.

Dave: What about this? I’m playing "Total Eclipse of the Heart" - or whatever - or, like, "I really need you tonight!"

Jeff: Yeah, explosion.

Dave: And then a big explosion, right?

Jeff: Right, yeah, yeah.

Dave: Just trigger the explosion.gif - or whatever.

Jeff: Yeah, absolutely.

Chris: Yeah.

Dave: Yeah.

Jeff: Yep.

Dave: That could be fun.

Jeff: Yes!

Dave: Ah!

Chris: Yeah, it's like you have this cousin who really wants to be in the band, but they just can't play.

Jeff: They could do it.

Chris: You'd be like, "You could play the Visibox."

Jeff: Or they could go out and shoot some explosions for you. You know?

Chris: Yeah.

Jeff: I need some royalty-free explosions.

Dave: Yeah. [Laughter] Here's $100 of fireworks.

Chris: Yeah.

[Laughter]

Jeff: Go get really close with your....

Chris: Uh-huh.

Dave: ...window, yeah.

Chris: Also, sign this document real quick.

Jeff: ...with your new iPhone, yeah.

Dave: Yeah. [Laughter] Appreciate it, cuz.

Chris: Oh, that's great.

Dave: Yeah.

Chris: And so, this ends up on your computer via a piece of software that people might be interested in on this show called Electron.

Jeff: Yeah!

Chris: Isn't that right?

00:28:50

Jeff: Yeah, that was kind of why I initially reached out to you guys because it seemed like Visibox itself was a little askew from this program. But initially, when I started kind of prototyping this, I started doing it in Electron thinking, Ah... I don't know if HTML and CSS are going to be... you know, JavaScript is going to be the best, most responsive language to write this in," but you know it turns out that all these technologies have gotten really, really good at playing media files over all this time, and it's just really interesting because, having done... With Lullabot, having run a Web development company, you think of Web development as something that isn't what this is. Right? That you think of Web development as there's a server, and the server is far away somewhere. When I want to watch a video, I need to wait for it to load and buffer.

But it's a whole different thing when it's on your computer and there isn't a faraway server, per se, and you can get access to everything immediately. It turns out, all this technology is really pretty responsive and good and ubiquitous and it's easy to find developers and programming models around a lot of this stuff that might otherwise be a little esoteric.

Chris: I see. It's this union. You get the benefits of having a native app because if you made this thing and said, "Hey, it's available on the MacOS app store," or whatever--

Jeff: Mm-hmm.

Chris: --I'd be like, "Oh, that makes sense, Jeff. Let me go check it out," and I'll download it - and whatever.

You could have done it that way and it would have been written in Swift - or something - and I would have certain expectations about how it would work, especially that it works offline, locally, and all that stuff.

Jeff: Right.

Chris: But then you could have also told me, "I built this thing and it's at visibox.com, and you log in there," and then we'd be having a different conversation about how you used Firebase login - or whatever - and everybody has their own account. It would be a SaaS app. And I also wouldn't have been surprised. I'd like, "Rock and roll. That's how you do it."

Jeff: Well I would be because I don't think of an online thing as something that's going to be super responsive like that.

Dave: You get to the venue and no wi-fi.

Jeff: Right. Exactly.

Dave: Boom. Busted, right?

Jeff: Yeah, yeah, that it's not quite as portable. We've been talking about Chrome apps and local stuff for all these years - and stuff like that - but it's still not quite expected. Certainly, when you've got 20 gigabytes of media files as part of your thing--

Chris: Yeah...

Jeff: What is in my local storage? I don't know.

Chris: That's the real hiccup here is the giant videos that need to play absolutely perfectly.

Jeff: Right.

Chris: But anyway, not a SaaS app. Fair enough because just the video alone kind of puts that out.

Certainly, we could be having a conversation about service workers and how you made it all work offline and stuff. But you didn't. You went the Electron route, and I think it's a pretty smart route, really, because it leverages what you already know. Not that that's the only reason you did it.

You already mentioned the fact that, hey, if you needed people to work on this and stuff, the amount of people that know Web stuff is a lot higher. And that's what Electron is, so I guess we've said the word enough times. But it's essentially writing a Web app, just like you would a website, and then you press the Electron button - or whatever - and it turns into a native app.

00:32:15

Jeff: [Laughter] Well, it has a number of APIs. It has Node built in, and it has a number of APIs on top of that that allow you to talk to the operating system and do things like create menu systems and manage multiple windows and a lot of the stuff that we think of as the job of the browser is accessible as part of the Electron thing.

When you distribute an Electron app, it distributes, along with that, a version of Chromium that the app runs on. There's a whole lot of really interesting advantages to that.

Chris: You get a baked-in Chrome on that bad boy.

Jeff: You get a baked-in Chrome, which makes the download a little bit bigger, and that's one of the things that people tend to criticize Electron around is that it's big and bloated and slow - or whatever. But much like most websites and Web development, big, bloated, and slow isn't necessarily a technological problem. It's oftentimes a developer problem. And so, it can be done more efficiently with some forethought. I've certainly put a lot of that kind of thought into this.

But the thing about distributing Electron or distributing Chrome, Chromium, along with the app is you know exactly which runtime version of the whole browser stack is going to be running, which means this... [Laughter] I'm almost embarrassed admitting--

Chris: Yeah, it's a fricken' executable. You know exactly what's going to run when it runs.

Jeff: Well, I'm embarrassed because you know so much of this podcast and so much of Web development, in general, is thinking about cross-browser compatibility and stuff.

Chris: Right.

Jeff: With Electron, you don't have to worry about that at all.

Chris: Only a little. Only that it'll run on Windows as well, and I don't know what that means.

Jeff: Well, Windows and Mac. Yeah, cross-platform a little bit. But even that, a lot of that is abstracted out through Node and through Electron; just sort of slashes in one direction versus slashes in the other direction.

Dave: Because you're not sitting around, like, "Does Safari have the Web API blah-blah-blah codec blah-blah-blah?"

Jeff: Right. Right.

Dave: Right?

Jeff: And we've all seen these Web apps that are like, "You have to run it on Chrome, the latest version of Chrome. Don't use it on Safari because Web midi or some esoteric Web audio." You know?

Dave: The app we're using right now, Riverside, notoriously was like, "Chrome only," for a long time.

Jeff: Yep.

Dave: Yeah.

Jeff: Yeah, yeah, yeah. I mean I have mixed feelings. Going back to the days of Internet Explorer, yeah, I have mixed feelings about that. [Laughter]

Dave: Yeah.

Jeff: You know. On the Web. But the thing is that this is a desktop app, and all of that is happening transparently so the user doesn't even know that it's HTML.

00:35:10

Dave: Yeah. I've recently been exposed to this Chrome-only world. [Laughter] You know? Certain browsers on certain operating systems don't support Safari or need to. It was just kind of like, "Oh, interesting. That eliminates a whole tree of concerns." You know?

Jeff: Yeah.

Dave: Not like, "Yeah. Finally, I get to undermine the Web." But it's--

Jeff: Then again, it's sort of like how much you want to de-webify it. There are a lot of Electron apps out there that are basically just the Web app in a window. Discord is a little bit that way. Slack was kind of that way. They have all gotten kind of better over time, but there are a lot of apps that are that way.

But with Visibox, it was like, "Okay, what would I do if I was doing native development? I really want to populate these menus and make it all very discoverable and kind of interactive in that way."

Dave: What's the process? I make a Web app locally, on my local host, or in CodePen or something. I hit export. How do I package that? And then how does it get onto a computer, I guess?

Jeff: [Laughter]

Dave: I have ideas.

Jeff: How does it get out of the Web? Yeah. [Laughter]

Dave: There's so much code signing and all this stuff that's involved, too.

Jeff: How does Tron break out of the computer?

Dave: Yeah.

Jeff: And become a real boy?

Dave: He's stuck in there. Yeah.

Jeff: Yeah. Well, I mean a good place to start, electron dot... I should say I'm not an Electron person, really. Electronjs.org is what seems to autocomplete.

00:37:08

Chris: I think it's compelling just in that you can say, "I'm not an Electron person," but you made this app. I can go to your website, click one button, download the thing--

Jeff: Download it. Yep.

Chris: --and it absolutely runs on my modern Mac.

Jeff: Yeah.

Chris: And it doesn't give me any stupid warnings about danger or any stuff, so there's some kind of code signing involved, right?

Jeff: It's an app. It's an app-app. Yeah. Yeah, yeah. Yeah, you have to code-sign it.

Dave: And it's like, "Hey, software update available. Restart."

Jeff: Yep, all of that.

Dave: There are app-y things, right? Yeah.

Jeff: Yeah, all that stuff that you expect from a desktop app.

Chris: So, you chose it knowing, like, "Oh, there are some advantages to this technology." Not an Electron guy. Still aren't. Yet, absolutely operate an Electron.

Jeff: I don't know what it means to be an Electron person. It's interesting because Lullabot, as I mentioned, was focused around Drupal, which is not only an open-source project but it's an open-source community. There are conferences and stuff you can go to, and you can kind of understand where it came from and how it got built and who is doing what and stuff like that.

I have no idea where Electron comes from exactly. [Laughter] I think it's a GitHub project or it started with GitHub. It's called Electron because it was originally the framework that was built for the Atom IDE, and then they decided to kind of break it out as a separate project.

But I don't quite know where it comes from or who it is, which is a shame. If I were more involved, I would advocate for a conference to get together and kind of bring some enlightenment around that stuff.

That being said, great documentation (for the most part). There is a community. There's a Discord server and stuff like that where people are talking and all that kind of stuff.

But yeah, you create an Electron app, which may be a Web app, but you might just write it from scratch. You kind of need to decouple your brain a little bit from the client-server thing because I think there is a tendency to kind of fall into that, "What's going to be on the server? What's going to be on the client?"

It can be kind of more intermingled in Electron. That being said, there are different processes. There's the main process, also called the browser process, which basically does what the browser does in Chrome and kind of acts as a server. Then there are renderers, which are windows, which run in separate processes (much like separate tabs in Chrome).

You need to communicate between them, so in that way it's sort of client-server-y. But it may be overkill to do some more conventional Web dev client-server stuff.

00:40:11

Chris: Let's say you have... I'm fascinated. You have this 500-megabyte .mp4 that you need in here because that's the whole fricken' point, right?

Jeff: Uh-huh. I mean, is it user media on your drive or is it part of your app? Let's just say your app is an app that plays -- I won't pick Wizard of Oz because it's not in the public domain. You wanted to create an app that you've distributed. You opened it, and it played the movie Metropolis.

Chris: Mm-hmm.

Jeff: That's all it does. You could do that. It's public domain. I think you could distribute it with your app, and maybe you've got this gigabyte 8K version of Metropolis in your app.

There are various sort of bundlers and builders for Electron, packagers that basically will package your app as an app. And there are different stages. There's a development version. But you can use things like Webpack and other things to kind of bundle and... I guess bundle. Bundle is the word I'm using for.

Chris: Yeah, it's a bundler. Yeah.

Jeff: Then you'd distribute that file. It would be one of the assets of your app. But you also have other assets that you don't think of much as a Web developer. Maybe there are some sort of the icon.ico kind of files like you have a ping-type file or Macintosh files that are the icon of your app. There are other things like that that, from a Node perspective, a lot of that stuff gets defined in your package.json and/or in the bundler configurations. Then it all just gets bundled with your app.

There are also signing tools that will do the Apple developer thing that we don't see as Web developers of uploading all of your binaries to Apple and then Apple running their automated stuff on it to make sure that it's all kosher, and then giving you back a signature file that you bundle in with your app so that when you launch your app on the Mac, it doesn't say, "You can't run this app because I don't know who the developer is." Instead, they say, "This is the good people at Spaceage, Jeff's company, that developed this and we know who they are."

Dave: So, you still have to do the open it in X code, do the signing process.

Jeff: It doesn't happen in X code. It happens in sort of commanded automated processes.

Dave: Okay, that's better. Yeah.

00:42:54

Jeff: There's a lot of automated testing stuff is the same. We're using Mocha and Chai for testing and Playwright for end-to-end testing and stuff like that.

Chris: Oh, that's cool.

Jeff: Yeah, and I've had some opportunities to contribute some.

Chris: And Playwright doesn't care. That's fascinating because it's a Web project. Are you working on it at a URL while you're developing it? Or is it--?

Jeff: No. No.

Chris: No?

Jeff: No, you can launch Electron. Launch it in development mode. Then oftentimes there's even sort of like -- What's that called? -- hot loading kind of stuff.

Dave: Hot module reloading?

Jeff: Yeah, yeah, exactly.

Chris: That's probably why Webpack is involved because it offers that.

Jeff: Yep.

Chris: Yeah.

Jeff: Part of it, but I can change my CSS files and either reload the page or it just happens automatically.

Dave: If you have Playwright inside your Electron, you have an Electron inside an Electron?

Jeff: [Laughter] No.

Dave: I'm sorry. Chromium inside Chromium?

Jeff: Playwright runs separately.

Dave: Okay.

Jeff: Playwright runs externally.

[Laughter]

Dave: Okay.

Jeff: We don't distribute Playwright with the app.

Dave: Good. Good.

Jeff: So, you end up with this sort of... You know all that stuff that's in the package.json, which is the development dependencies versus the dependencies of the app become kind of important. Although, Webpack makes a lot of that moot.

Dave: Yeah.

Jeff: Where it's doing a lot of tree-shaking stuff.

Dave: I do want to fill the audience in. I did do an AI search generated image of an Electron guy, and it is a man using a computer with an ElectronJS poster in the back. But his laptop also has a screen on the other side of the laptop.

Chris: It's very disconcerting to look at, everyone. I'll say.

Dave: Yeah, he's using a laptop. He's facing the laptop, and we see the back of the laptop, which also has a screen on it.

Chris: Yeah.

Jeff: That's the future, man.

Dave: Electron guys, man. Always--

Jeff: Screens on both sides.

Dave: Screens on both sides.

Chris: It's just so your boss can see but not you.

Jeff: Yeah.

Dave: They're just showing off their building an app. That's the thing about coffee shops. Listen, guys. I'm solving problems.

Jeff: [Laughter]

Dave: You go to a coffee shop, no one knows what you're working on. No one knows, does this got an app developer, a game developer? No one knows. But Electron guys have it figured out.

Jeff: Yeah, replace all those stickers on the back of your laptop with a screen--

Dave: With a screen!

Jeff: --that shows stickers on the back of your laptop.

Dave: Change the stickers every day. That's your next step, Jeff--

Jeff: It's a new paradigm.

Dave: --is a laptop sticker app for your top screen, your lid screen.

Jeff: Yep.

Dave: Yeah.

Jeff: Yep.

00:45:28

Chris: The thing I'm stuck on here is we had endless videos for Frostapalooza, right? You're chucking them in there right and left.

Jeff: Mm-hmm.

Chris: If I was building a website and I was waiting for you to drop a file onto it, which I've done many times on the Web--

Jeff: Mm-hmm.

Chris: You drop a file on there, and it was a 500-megabyte video file. I'd be like, "Uh-oh!" You know? Where am I going to put that? And have a spinner, and it would take... I'd have to uploading. But on this it's like, is there some kind of Electron API that's like, "Accept file"?

Jeff: Yeah.

Chris: "Put in folder."

Jeff: Yeah.

Chris: "Done." Yeah.

Jeff: Yeah. A lot of it is Node or built-in Web APIs. Even some of that is kind of stuff that we don't tend to use because it's sort of like, "Uh... Not all the browsers support that." And Electron tosses in a couple of extra APIs. It even tosses in a few extra Web APIs, especially things that are sort of on the horizon that aren't quite there yet.

Chris: But then where do you put the file? I don't know. IndexDB? That's Node, too, right?

Jeff: With Visibox in particular. I can't speak to, in general, how people do this with Electron. But with Visibox in particular, when you create a project, on the Mac we create a -- What do they call it?

Chris: Application support folder - or whatever?

Jeff: No. Well, there's that and all of the configuration files go in the application support folder. But we create a project folder. But on the Mac, it appears to be a single file, like iMovie files or logic files.

Chris: Oh, package or whatever? Yeah. Yeah, yeah.

Jeff: Yeah, it's this package thing that's--

Dave: Garage Band does that, too. You can right-click it and show package content.

Jeff: Yep. Yeah, yep, yeah.

Dave: Yeah.

Jeff: It's all in there, but it's one thing that just keeps getting bigger. And so, we copy all--

Chris: You got to invite your own file format.

Jeff: Yes, exactly. Yeah.

Chris: Uh!

Jeff: Yeah.

Chris: .vsbx, nice.

Jeff: Yep, that's exactly right.

Chris: Classy.

Jeff: Yeah, and then you register that with the system so that when you double-click on that, it opens in Visibox.

Chris: Look at that! Not an Electron guy.

00:47:47

Jeff: Visibox also has custom URLs. We're not using this too much. We're using it for sort of the demo project. But basically, I'm able to create a visibox:// that the system will recognize as, like, "Oh, I need to open this in Visibox," and Visibox is going to download this file and run it.

Chris: Do you have to care how Windows does it? Do you have to write code for that?

Jeff: Yeah.

Chris: Does Electron hook it up?

Jeff: Yeah, yeah. There's not a whole lot. One of the nice things is that there's not a whole lot of if process equals windows. There's not a whole lot of that.

There's certainly some of that. But like on Windows, there is no bundle thing. There's no way to bundle a folder in the same way that we're doing on the Mac.

But I've named things and stuff so that you could drag, you know, put one on a thumb drive, a project on a thumb drive, and open it on a Mac from Windows or Windows from Mac - or whatever.

Dave: Cool.

Jeff: Yeah.

Dave: Okay. I do have a question, back to Chromium only. I see on the website you support (and you said it, you support) midi pedals and stream decks and stuff like that. Is the support of Web midi kind of critical to your business? How do you make all these peripherals -- unknown hardware, basically -- work on your app?

Jeff: Well, one of the nice things about midi is it's basically the same spec since 1984.

Dave: [Laughter]

Jeff: It's pretty ubiquitous in terms of what we can expect. These days, most midi is not happening through five-pin cables but through USB, midi over USB, which is confusing for novice users because they're like, "Midi is this five-pin thing, but this only has a USB output," so I've got a YouTube video on that, too.

The short answer is yes. The longer answer is Electron keeps updating new versions. But if for some reason that API got dropped, we could use an older version of Electron for some time.

There's also Node-based kind of stuff like the -- Was it called Jazz? There's a sort of native Node library written in C that does midi not technically in the browser but more at the... Not in the browser, which means the renderer process of Electron but in the browser, which means the main process of Electron. And so, we could use that kind of stuff, too. You can get into all that sort of native Node code written in C.

There's also Wasm kind of stuff that we can get into.

Dave: Mm-hmm. Mm-hmm.

Jeff: And it just seems to be the direction that things are heading, and this does all that.

Dave: Yeah. You mentioned midi, and I was like, "Can I use Web midi?" It's like Chrome and Firefox only, so that would have been a deal breaker for the Web app.

Jeff: For the Web app.

Dave: Right in its current...

Jeff: Yeah. Yeah, yeah, in its current stage. Yeah, and I'm using the Web audio API. I'm using the Web hid API to talk to the stream deck right now. There are just a whole bunch of these APIs.

I'm watching those, you know, "New in Chrome!" videos on YouTube, excited to see what's new in Chrome because of all the new APIs that I can use immediately.

Chris: Yeah, because you just get it. Oh, my gosh.

Jeff: I don't need to wait three years for the table to all fill up with all the browsers that can do it. [Laughter] You know?

00:51:36

Chris: That seems really compelling. There are alternatives to Electron. I saw this show about Tauri recently.

Jeff: Yep. Yep.

Chris: Which seems cool, but it's not Chrome, though. You can't absolutely guarantee that whatever Chrome does you get.

Jeff: Exactly.

Chris: Which does seem an awfully compelling reason to use Electron as this very modern - I don't know. Guaranteed Chromium seems like a big win for a developer.

Jeff: Yeah. You can output Mac and Windows and Linux as well. We're not doing that because it's just sort of a hassle to kind of do the hardware support, and some of the APIs don't work on Linux right now.

Chris: But not mobile, though. Nothing, right?

Jeff: Electron does not output mobile, per se. Part of the reason -- I'm projecting here, but I think part of the reason is because you can't run Chromium on iOS.

Chris: Probably.

Jeff: And so, yeah.

Chris: Ugh!

Jeff: It seems like that's starting to chip away. That's another thing I'm watching very closely. But you've got all this code that's written in conceivably portable code.

Chris: Right.

Jeff: Right?

Chris: Right. Right, right. That's another thing about Tauri is that it can because it uses Web views, which are supported on iOS and stuff, so you get the mobile thing going on. It might be of interest to you. You already are watching it, you said. I'm sure you're watching it a lot closer than I am.

You would think a musician, that could be big for the musician community to not have to crack open a laptop. Just have your dang phone in your pocket be able to power Visibox.

00:53:17

Jeff: Oh, yeah. Yeah. Yeah, yeah, yeah. And our users are asking for that. Even these days, it's like, "Oh, we've developed an app that does this," and app to a lot of people means mobile first.

Dave: Mm-hmm.

Chris: Right.

Jeff: It's a desktop app. "Oh..."

Chris: Oh, I thought you said app, bro!

Jeff: Yeah, exactly. I thought I could do everything on my phone. A big thing about... One of the reasons that we haven't pursued it more... I mean it's certainly something that's on our roadmap and we're trying to figure out.

What we've created, basically, is presentation software. This is PowerPoint or Keynote for musicians and performers. And so, it really demands a two-screen solution much like PowerPoint or Keynote. You want the screen that you look at as a presenter, and then you want the screen that the audience sees.

Chris: That's a good point. Right.

Jeff: Up until very recently, two-screen stuff on mobile was not... It was very secondary.

Chris: Yeah. You can output what you're looking at on a phone, but not like a totally different thing than you're looking at.

Jeff: Right. Right. Yeah.

Chris: Yeah.

Jeff: And I think, these days, if you guys have spent any time in clubs performing these days, most sound people are mixing on an iPad.

Dave: Yeah.

Jeff: They have wi-fi, which funny enough has meant that most clubs actually have really good wi-fi these days, which is something I was not expecting. But they're mixing there remotely from oftentimes a Barringer mixer. And I think we could do that kind of thing where you've got the laptop that's kind of the base station for this, and then we've got software.

Dave: That's your mixing board, and then you have the controller.

Jeff: You can control it over wi-fi or something else.

Dave: Yeah. Well, I mean, yeah, with iPhone pairing and IO MacOS whatever, maybe that's something. There's a bridge, maybe.

Jeff: Yeah. Well, and the other thing you could do with Visibox is you can connect cameras to it as well. So, you can show cameras on the screen, you know, a closeup of your guitar solo or whatever.

Chris: Oh, yeah.

Jeff: Switch to the drummer. The drummer hits the drummer pad and plays.

00:55:35

Chris: You could imagine having three cameras and using Visibox only for that.

Jeff: Yeah.

Chris: Like which camera is showing right now.

Jeff: Yeah, you could. Yeah. There are some hardware issues around that. If you've got 4K cameras, they can saturate the USB bus pretty quickly.

Chris: Oh, I see.

Jeff: But with some smarts, you can make it work, and it certainly works for a few cameras. But then these days, you've got things like Apple has the continuity camera where you can just use your iPhone as a webcam, basically. That means that Visibox sees your iPhone camera as a camera that it can use. Yeah, but also if we had a dedicated app, it could also do other things along those lines where maybe it's more than just controlling Visibox but somehow creating content.

Dave: Man, I feel like we're six years away from you saying, "Now powering the Oscars." You know what I mean?

Jeff: [Laughter]

Dave: I'm like, you could do it. You could, in theory, do it. But just like, "Okay, best actor. Pre-roll." Bing-bong.

Jeff: [Laughter]

Dave: You know? Switch. Pan to Meryl Streep. Okay. Back to... You know?

Jeff: [Laughter] Yeah. Yeah. Yeah.

Chris: Yeah, the live aspect is the coolest part to me, that kind of you're reacting. You're a musician, too. You're the visual musician.

Jeff: Right. That was the thing. It was like, how can we create a media player as a musical instrument? What if you interacted with it that way?

I've been thinking about this for a while. [Laughter] But also sort of thinking about videos in terms of the same way you might think about, like, synthesis or something like that. With synthesizers, usually you have what's called an ADSR curve (attack, decay, sustain, and release), which sort of defines what happens when you press the key down. How quickly does it attack? How quickly does it decay? And where does it sustain?

But thinking about videos in terms of... How does this start? We just talked about these explosion videos. If you trigger the explosion right at the beginning of the video, then you've got something very percussive that is this kind of thing that fades out. But if you hold it too long and it loops, it's going to explode again, which might be out of time and kind of weird. But it does sort of have this ADS kind of issue to it as well.

Dave: Pop in, pop out.

Jeff: Yeah.

Dave: Using animation, right?

Jeff: As opposed to something that's more ambient like a field of flowers or just something that loops very seamlessly where there's kind of not an attack but it's more of a pad is what we refer to it in synthesizers. Yeah, so it really does overlap a lot with sort of musical thought in ways that I think that people in video don't oftentimes think about that stuff. Maybe if you're... I don't know. Even if you're doing music videos.

Dave: Where an artist would, right?

Jeff: Yeah.

Dave: I'm replaying Kate Bush videos in my head. You know what I mean?

Jeff: Yep.

Dave: Just like, "Heathcliff, it's me, Cathy..."

Jeff: [Laughter]

Dave: I'm just picturing that.

Jeff: That was an excellent Kate Bush.

Dave: Thank you. I wish I could do the dance, but I can't.

Jeff: [Laughter]

Dave: People in Austin get together once a month to do the dance. I wish I was that.

Jeff: [Laughter]

Dave: Anyway, it's art, right? You're not buttoning your music into your visual art, potentially, or it can be whatever, a sci-fi movie or whatever.

Jeff: Yeah.

Dave: But it can be whatever, right?

Jeff: You could kind of step in at whatever level of depth you want, right?

Dave: Yeah. Yeah, yeah.

Jeff: I just want to put up some flowers to create a flower vibe on stage, and that's just going to loop through the whole show. Or maybe you're really taking that on as part of your creative expression.

In the Instagram age, I feel like artists... It's a shame, having come from the previous generation. But really have to think about brand and brand presentation and sort of their vibe.

Oftentimes, it even comes down to colors or filters or these visual looks of their thing. But it also means that so many artists these days, sound artists, musicians, are also in the visual world, even if it's just through filters and Instagram.

Dave: Yeah.

Chris: Fast cuts, too. I feel like it's adaptable to that style, which I feel like is so hot right now. Short attention span. Two seconds before the next cut.

Jeff: Yeah. Yep.

Dave: Failed videos. Pump it full of cat fails. Dude, my kids would love it.

Chris: [Laughter]

Jeff: [Laughter]

Dave: Jeff, I think you've made a cool thing. I'd love to talk more, but I do kind of have to head off... scoot off to a meeting. But thanks so much for coming on the show and jamming with us. If you need a talk box in your band, Jeff is your person.

Jeff: [Laughter]

Dave: The wa-wa....

Jeff: That was...

Dave: Just a girl was perfect, so really--

Jeff: Brad asked me to play the show, and I said, "Can I buy a talk box?"

Dave: Yes.

Jeff: And I did, and that was--

Dave: The answer is always yes.

Jeff: Yes.

Dave: Thank you. But for people who aren't following you and giving you money, how can they do that?

Jeff: Spaceage.tv is the website, and we're on Instagram and YouTube and TikTok and those things. And we've got a mailing list. Come get on our mailing list. We have sales every so often on Visibox. There's a free, 14-day trial. Just download it even if you're just sort of a curious developer who is listening to this, giving us the hairy eyeball going, "Eh... Desktop app from HTML, I want to see this thing." Download it. Check it out. I think it's not what you would expect.

Dave: Awesome. Well, thank you so much, again. Thank you, dear listener, for downloading this in your podcatcher of choice. Be sure to star, heart, favorite it up. That's how people find out about the show.

Follow us on Mastodon. That's the good one. Then join us in the Discord, patreon.com/shoptalkshow. Chris, do you got anything else you'd like to say?

Chris: Hey! This was excellent. Nice to talk to you, Jeff. ShopTalkShow.com.