Times Like These
S04:E33

Times Like These

Episode description

Paul and Tod are back and discuss a nostalgia archive on the web, Web Serial in Firefox, real time OSes, a follow-up to last episode’s story on Parachord, and more.

Follow the show on Mastodon or Bluesky.

We have stickers! Request a free sticker here. (US Only, sorry!)

Show Notes

00:00 Welcome

00:20 FreeMediaHeckYeah

3:34 Flipper One

8:55 You Don’t Need an RTOS

15:22 Web Serial comes to Firefox

17:40 USB Probester

23:17 Achordion, a Parachord follow-up

Download transcript (.srt)
0:04

Welcome to The Bootloader.

0:05

I'm Todd Kurt.

0:07

And I'm Paul Cutler.

0:08

The show works like this.

0:09

Todd and I have each brought three things to share with you that will chat about for about five minutes each.

0:14

For detailed show notes and transcripts,

0:16

visit the bootloader.net.

0:18

Todd, what's up first for us?

0:21

Free media, heck yeah.

0:23

When I was younger, the Internet's promise was that it was to be this infinite playground of all humanity's knowledge.

0:28

For the last decade or more, it seemed like a small collection of members-only big box stores instead.

0:33

That's not very techno-utopian,

0:35

but the FMHY.net site brings that feeling back for me.

0:39

FMHY.net or Free Media,

0:42

heck yeah,

0:43

is a hand-cured categorized repository,

0:46

sort of like the Yahoo of old,

0:48

of all kinds of free software,

0:49

videos, audio,

0:50

video games, tips and tricks, and more.

0:53

For instance,

0:54

there's a huge book section with links to many free e-book repositories.

0:58

By the way, did you know that the Internet Archive has a huge collection of e-books?

1:02

They're all free,

1:03

and the modern ones you can check out for a bit, like a library book.

1:06

There's links to a bunch of different e-book reader apps so you can find the one you like,

1:10

but there's also these great lists of repositories of audiobooks, comics,

1:15

STEM books,

1:15

history,

1:16

and even academic paper repositories.

1:18

Almost all these academic papers that are out there, you can read.

1:23

It's all free.

1:24

You just got to know where to find them, and this place has it.

1:26

And in the gaming section,

1:27

there's a long list of places to find abandoned games.

1:30

Ever wanted to play the Windows 7 version of MindSweeper?

1:33

Or play the old Commodore 64 games?

1:36

This site has links for you.

1:38

And of course, there's a Linux macOS section that leads to the various Linux distros and how to install them,

1:45

but it also contains a bunch of great general command line how-to guides.

1:49

A favorite one I found is called, You Don't Need GUI,

1:52

that's showing you how to do things in the terminal that you normally would do with a GUI.

1:57

And yes, the FMHY site also has sections on torrenting,

2:02

which is a very efficient way to support the distribution of free media.

2:05

But it can also be used to acquire not exactly legal copies of media.

2:09

Be warned,

2:10

be informed.

2:12

Torrentine is not illegal.

2:13

And it's a great way to take the pressure off big downloads from the kind people that are hosting those big downloads.

2:18

And it's a great,

2:19

like, for instance, it's a great way of getting a full copy of Wikipedia.

2:23

So, yeah, so FMHY is huge.

2:25

It's wonderful.

2:26

I've had a lot of fun this last week poking around in it.

2:29

Highly recommended.

2:31

I specifically haven't gone there yet because I know that if I do,

2:35

I will get lost in it for hours.

2:37

That kind of nostalgia.

2:39

I just love that kind of stuff.

2:41

And even the old Linux distros that you threw out there, it would be fun to throw those in a virtual machine and just go back and see what those old operating systems and UIs look like.

2:51

Not to mention the games and the books.

2:53

So,

2:53

yeah, I can't get into that.

2:55

I'm just too busy at the moment.

2:57

Yeah, for me, for me, I'm a big educational,

3:01

like,

3:01

documentary video essays sort of person.

3:04

I love watching those things on YouTube or on Nebula.

3:07

Also, I learned that, like, through this, that archive.org has a bunch of really cool documentaries,

3:12

some of which are pretty recent, but some of which are things from, like, the 40s and 50s that were made that are really interesting and, like,

3:21

how clay pots were made in England in the 1950s, in the 1950s,

3:25

an industrial scale.

3:26

They've got a documentary that's all in black and white. It's really cool.

3:31

So,

3:31

Paul, what's your first one for this time?

3:34

You may have heard of the Flipper Zero,

3:35

a small handheld piece of hardware that was even

3:38

banned at the New York City mayoral inauguration earlier this year because organizers don't

3:43

understand it either.

3:44

If you visit their website, they describe the Flipper Zero as a tiny

3:47

piece of hardware that can help you explore any kind of access control system,

3:52

RFID,

3:53

radio

3:53

protocols and even exposes some GPIO pins.

3:56

It has wireless,

3:57

RFID,

3:58

NFC, Bluetooth,

3:59

infrared, and more all powered by an STM

4:02

Cortex M4 microcontroller.

4:04

Lifehacker had an article about all the fun things you can do with the Flipper

4:08

Zero from using it as a universal remote to listening in on walkie-talkie conversations

4:12

to taking your pet's temperature.

4:15

But it also highlights some of the things that you can do that can cause a little

4:17

mischief like cloning keyless entry cards,

4:21

crashing Android phones, or reading credit

4:23

credit card information.

4:24

This all comes in a tiny package that fits in your hand for $200.

4:29

And now they want to build the Flipper One.

4:31

In a blog post from late last month,

4:33

the Flipper team

4:34

outlined their project goals and gave an overview of the hardware.

4:38

They specifically

4:39

call out that the Flipper One isn't an upgrade to the Flipper 0.

4:42

It's a completely different

4:44

project with different goals.

4:46

One of their main goals is to have the Flipper One working as a

4:48

standalone Linux computer with the ability to plug in modules like an SSD or

4:53

a cellular modem.

4:55

And they want it to be truly open

4:57

in one that works out of the box with an

4:59

upstream Linux kernel.

5:01

No binary blobs, no closed source

5:03

or proprietary firmware,

5:04

but truly

5:05

open.

5:06

They go on to share how the

5:07

state of arm Linux is depressing,

5:08

their words,

5:09

that every vendor has closed

5:11

source component.

5:12

Look at the

5:13

Pico, the Bluetooth stack is closed source

5:15

for example.

5:17

If you're into Linux, you may have heard of

5:19

Collabora, a consulting company that does a lot

5:21

of work with GStreamer as well. They've partnered

5:23

with the Flipper team to get the Rock Chip RK3576 chip

5:27

into the mainline Linux kernel,

5:29

and they shared a neat article about the process

5:31

which I've linked to in the show notes.

5:34

With all that said,

5:35

the specs in the Flipper One are crazy

5:37

for a small handheld cyberdeck.

5:39

I've already mentioned the chipset,

5:40

but it has networking support

5:42

with two gigabit Ethernet ports,

5:44

USB Ethernet,

5:46

Wi-Fi 6E,

5:47

and you can add a 5G modem using an M.D2 module.

5:51

With this, you could use the Flipper One as a router,

5:53

gateway or even a bridge.

5:55

It features two co-processors, the eight-core rock chip processor I mentioned

5:59

earlier for running Linux,

6:00

and a two-core Raspberry Pi 2350 that controls the display buttons,

6:05

touchpad, and LEDs running its own firmware.

6:08

They've launched a developer portal that includes

6:10

everything you would want to know about the flippers from PCB designs, the enclosure design,

6:14

software,

6:15

firmware,

6:15

docs,

6:16

and more. But that's not all.

6:18

If it's compatible with the Linux kernel,

6:20

it will need its own operating system,

6:22

and they have a plan for that too.

6:24

They're building Flipper OS on top of Debian.

6:26

It also includes FlipCTL,

6:28

a UI for small screens such as Cyberdecks like this.

6:32

You should check out the blog post for all the details.

6:35

I've only covered some of it, believe it or not.

6:37

Towards the end of the article, they talk about the uses for the Flipper Zero,

6:40

and one that jumped out at me is the fact that they've put a full-size

6:44

HDMI port on it.

6:45

You could take your Flipper One with you while traveling and have your own personal TV entertainment

6:49

built in just by installing Cody on it and outputting it to your TV.

6:54

That's pretty awesome.

6:55

One thing that I really like is it is,

6:57

so it's called often a cyberdeck, but like usually

7:01

when I think of cyberdecks, I think something with a screen and a keyboard.

7:03

And this is not, this is like a little handheld thing that looks kind of like some sort

7:08

of sci-fi gizmo you'd see some character use, but it has in it,

7:13

you know, it's got a bunch

7:13

of ports around it.

7:15

You mentioned the full-size HTML.

7:17

It's also got full-size Ethernet.

7:18

And it's got Wi-Fi,

7:20

which means,

7:21

oh, this would be perfect if you're traveling a lot.

7:23

And you want to use the hotel internet that has got like maybe an Ethernet cable come out of the wall,

7:28

which is a much better,

7:29

usually more fast connection than the hotel Wi-Fi.

7:32

And then now you can also got the HTMLI, so you can plug it into the hotel TV.

7:37

Right.

7:38

You've got a really good mobile hotspot plus also entertainment device.

7:44

So, yeah, I'm really curious about this because there's all these Raspberry Pi Lodels.

7:48

like single board computers that use these weird arm chips,

7:53

like the rock chip that this is using is one of them.

7:56

And it's always a real dicey thing to use them

7:59

because they don't use mainline Linux.

8:01

They use like their own custom weird fork of Linux.

8:03

And if they stop supporting it,

8:05

you're kind of out in the cold.

8:06

And so this is one of the reasons why a lot of people don't use these things

8:10

that look like raspberry pies but aren't,

8:12

even though they're actually pretty good.

8:14

Because it's like, well, where does the firmware for it come from?

8:17

And so it's really cool that they're working to get the rock chip core into the mainline Linux kernel.

8:25

That's really cool.

8:27

Yeah, that'll just enable support for everyone and just make it that much easier to install it, fork it, and do really interesting things with it.

8:33

Yeah.

8:34

And this seems like just finally,

8:37

like one of the thing is that bugging me of the flipper zero is it had no Wi-Fi.

8:41

There was like these things you kind of cobble onto the back to give a Wi-Fi.

8:44

I'm just like, come on, guys.

8:45

Like,

8:46

what's the main thing we're all using as the wireless networking protocol?

8:50

Well, they're about to fix that.

8:52

Yeah,

8:52

totally.

8:53

What's your next one for us?

8:55

All right.

8:56

You don't need an R-TOS.

8:58

If you've programmed embedded boards with Arduino and CircuPython, you hear about RTOS or real-time OS

9:04

and how you should be using it to organize your code.

9:07

But relax, you do not need one.

9:09

You probably don't need one.

9:10

Nathan Jones on Embedded Related, wrote a blog post series titled, You Don't Need an R-Tos,

9:15

describing the problem that Artas has solved and some simpler alternative techniques.

9:19

Most notably, he favors the technique of the super loop,

9:22

or putting all your code in the main loop and seeing if that works.

9:25

The posts target embedded C and C++ plus,

9:28

but the techniques, concepts, and math he uses to show how things work.

9:31

Behind these concepts are valuable for any language you use.

9:35

But for his super loop,

9:36

you issue the complexity of schedulers of the Artas

9:39

or interrupts or any of those kinds of things, state machines,

9:42

and just go as simple as possible.

9:44

How much can you do in one big loop?

9:46

Do you really need a complex scheduling system

9:49

if all you're doing is reading some sensors every minute

9:51

and logging that data to an SD card?

9:53

With everything in a single loop,

9:55

huge conceptual areas where bugs can live,

9:57

like race conditions or resource contention,

10:00

are absent by design.

10:01

If you need explicit periodicity,

10:03

a task with a super loop can check the current time

10:06

and run only when a certain time is passed.

10:09

I have to hear this called the blink without delay pattern

10:12

in the Arduino world from learners

10:13

one is to blink an LED without blocking the main loop.

10:16

The problem with super loops could be,

10:18

like the first problem we might encounter with super loops is jitter,

10:21

where a periodic task doesn't happen as regularly as you want.

10:24

In many cases, this is where you start deviating from the super loop with hardware interrupts.

10:28

But it's like a small delta change.

10:30

You'll see this with fast data streams like audio or video output,

10:34

or sensors with critical timing requirements like neopixels say.

10:38

But notice there's still no explicit schedule needed.

10:41

There's just like one tiny change to your main.

10:43

super loop idea.

10:45

So what good is a real-time operating system and why would we need one?

10:49

At its

10:50

basic,

10:50

an R-TOS is just a scheduler for tasks you define. But importantly,

10:54

when you schedule those

10:55

tasks, you define a period of your task,

10:57

how often it's called,

10:58

and the deadline of the task.

11:01

For instance, you might have a task that checks a sensor once a second, it's period,

11:06

but it can

11:06

take no longer than 10 milliseconds to do it, its deadline.

11:10

You're specifying a contract to the

11:11

R-Tos, and if your task breaks that contract, it gets killed.

11:15

Normal OSs are best effort, and we'll let processes run a little longer,

11:19

but Rtoss is

11:20

guarantee that no tasks can overtake a higher priority one.

11:23

In a car, you must guarantee the anti-lock brake sensor be read exactly every 500 nanoseconds.

11:29

For instance,

11:30

in a Mars lander,

11:31

reaction thrusters must be fired exactly 64 milliseconds.

11:34

There can be no pauses for file rights or other tasks taking over.

11:38

Artas keep us alive.

11:41

So they are very, very, very critical.

11:43

But in maker-level projects,

11:45

R-tosses are usually not needed.

11:47

We don't have those critical concerns.

11:49

But if you want to learn,

11:50

there are several event-scheduled libraries

11:51

for our do we know that lean towards R-TOS behavior.

11:55

And there is a very minimal free R-TOS

11:57

that works great on ESP-32 and RP2040 chips.

12:00

In fact, if you use the ESP-IDF SDK for ESP-32,

12:05

it uses free R-TOS under the hood

12:07

to make dealing with the vagaries of Wi-Fi a little bit easier.

12:11

In CircuitPython, a MicroPython, you can investigate async I.O.

12:14

It's a sort of DIY method of event scheduling.

12:17

It's a little bit more abstract than just doing it by hand in a super loop.

12:21

It won't be as precise as performance as in Arduino,

12:23

but you can get used to the ideas.

12:26

I used to work in aerospace hardware,

12:27

and now I play with making synthesizers.

12:29

In CircuitPython and Arduino,

12:31

most of the time, I use something like a super loop.

12:33

In CircuitPython, it's a must as you can't schedule things at the hardware level.

12:37

CircuitPython is almost an OS unto itself.

12:40

with its own scheduler and device drivers.

12:43

And the user task that runs your code.PI

12:45

is just one of the many tasks it's dealing with.

12:47

Usually that's fine,

12:48

and it's really nice

12:49

that you don't have to deal with setting up

12:51

DMA buffers and interrupts for audio and display output.

12:54

But if you want more precise timing,

12:57

maybe CircuitPython is not for you.

12:59

This blog post about,

13:01

you don't need an Rtos, really resonating with me

13:02

because I've seen folk get bogged down

13:04

and frustrated trying to set up an Rtos

13:07

for their embedded project

13:08

when it's overkill before they're trying to accomplish.

13:10

This blog post series is almost a college-level course in computer concurrency and uses math and examples to show exactly how much you can do with simple setups,

13:19

while also giving directions for more complicated concurrency models like interrupt state machines and finally R-tosses.

13:25

But if you're starting a new project,

13:27

I would say see how far you can get with a super loop and then go from there.

13:30

You mentioned async and await for MicroPython and CircuitPython.

13:35

And right, CircuitPython doesn't have interrupt level control on that kind of stuff.

13:39

But once you learn async and can wrap your head around it,

13:43

it can do so many things to avoid blocking, for example.

13:47

And it's really powerful.

13:48

It's just really hard to wrap your head around it the first time.

13:53

Yeah, it's a different way of thinking about writing your code.

13:56

And it's the step to what you have to do to start thinking about using these R tosses

14:01

because you've got a chunk of, you've got your little function.

14:03

And you think of, oh, my functions is going to run from top to bottom.

14:08

But in an RTOS,

14:09

your code could get suspended at any point in that flow.

14:14

And you have to know how to deal with that.

14:16

Like if you've got any sort of timing critical things or if you're dealing on the

14:20

dealing, if you're requiring sort of certain efficiency of like, oh,

14:24

these values will be in these CPU registers.

14:26

That might not be the case because your code could get all entirely swapped out for some other code and then swap back in again.

14:33

So, yeah,

14:34

one of the problems why I don't like to recommend ASync I.O.

14:37

for CircuitPython is because a lot of people will think,

14:39

oh, this will make my,

14:41

say,

14:41

display updates more regular

14:44

because I'm like, oh, I'm reading buttons

14:47

and I'm updating the display.

14:48

Well, it turns out on CircuitPython,

14:51

I'm pretty sure the I squared C and SPI stuff,

14:55

the data transfers are still blocking.

14:57

So even though you're using ASync IO,

15:00

when you say display that update or whatever,

15:02

it's just, it'll just block everything

15:04

until that update finishes.

15:06

But just like, it's like, dang it.

15:09

No, you're absolutely right.

15:09

That's correct.

15:11

But yeah, so, I mean, there are some PRs in CircuitPython to maybe make this a little bit better.

15:17

But it's a complicated problem.

15:18

So we'll see.

15:20

All right, Paul, what's your next one?

15:22

If you've ever wanted to plug in your microcontroller and use the web to install new firmware or code,

15:27

your only choice up till now has been to use a chromium-based browser like Chrome,

15:31

Microsoft Edge, or Vivaldi.

15:33

But as of late May,

15:34

Mozilla has joined the party and now support.

15:36

It supports WebSereal and Firefox with help from ATAFruit.

15:39

WebSereal is a web API that uses JavaScript to read and write to serial devices like microcontroller boards or 3D printers.

15:46

It's been available for years in Chrome and it's nice to see AtaFruit Mozilla partnering up to deliver this.

15:51

For example, if you visit CircuitPython.org's download section and pick almost any ESP32-based board,

15:58

there will be an option to download the UF2 or the bin files with the firmware,

16:02

or there's a button to open installer, and you can do it right over the web.

16:06

One of the things that surprised me reading the article on Mozilla.org is that web serial is still not a standard.

16:13

It resides in the Web Incubator Community Group, and Mozilla mentions their pursuing standardizing web serial in a new proposal.

16:20

I'm glad to have another option for using web serial in a browser.

16:23

I was a longtime user of Firefox until earlier this year when they started shoving all this AI features that no one wanted into it.

16:31

I've since switched to Vivaldi, who doesn't have any AI baked in.

16:35

but kudos to Mozilla for adding support for web serial and giving users another choice.

16:40

Yeah,

16:40

I'm a big Firefox proponent.

16:42

I have turned off all the AI stuff via the config,

16:46

the sort of secret hidden config screen.

16:49

But yeah, it's been really a bummer that like for many browsers, like Safari,

16:53

Firefox until recently,

16:55

that if you wanted to do this really cool configuration of little gizmos via Cereo port, you couldn't do that on these browsers,

17:03

which is like one of the best ways of dealing with a lot of ESP 32 stuff is you just go to like a special URL and you can reflash the entire ESP 32 from the browser window,

17:14

not needing a special program to download or whatever,

17:17

but that requires USB serial.

17:19

Sorry, sorry,

17:20

web serial.

17:21

So,

17:22

yay.

17:23

This is great.

17:23

I've been using a little bit and it's like, oh, finally.

17:27

Yeah, no kidding.

17:28

Finally is the right way to put it.

17:30

Yeah, it's been in Chrome for like a over and.

17:33

a decade, I think.

17:34

Wow, that's just crazy.

17:35

That's been that long.

17:38

All right, what's your next one for us?

17:40

All right.

17:40

Speaking of USB things,

17:42

I wrote a new app.

17:43

Well, you know, wrote in quotes with the help of my junior assistant Claude.

17:47

It's called USB Probester.

17:49

And it replicates as much as possible,

17:51

the beloved to me,

17:52

creaky MacOS developer tool,

17:54

USB

17:55

Prober.

17:56

So USB devices are really fascinatingly complex.

17:59

When you plug in a USB device, it sends several different packets of information.

18:03

to your computer,

18:04

telling the computer all about it.

18:07

First, there's the device descriptor,

18:08

telling the PC roughly what kind of device it is and who makes it.

18:12

Then there's the config descriptor,

18:14

telling the computer how much power your device needs,

18:18

and how many different kinds of interfaces it has,

18:21

and what those are, like keyboard,

18:23

thumb drive,

18:24

Ethernet,

18:24

dongle, display,

18:25

so on.

18:26

Each of these interfaces has its own little descriptor packet.

18:29

For instance, for human interface devices,

18:32

aka HID,

18:33

There's a HID report descriptor that indicates if it's a keyboard or a mouse or both,

18:37

and if that keyboard has the volume up, up, down buttons,

18:40

and if it's got LEDs to light up,

18:42

to indicate like caps lock, scroll lock.

18:44

And that's just one kind of interface.

18:45

There's interface descriptors for all the different kinds of devices,

18:48

too, like disk and Ethernet

18:50

and display and all that kind of stuff.

18:53

This is a lot of information.

18:54

It's packed up as packed byte codes in a concise way as the standard was created back in the 20th century.

19:01

when you was doing USB was expensive.

19:03

But getting at this info,

19:05

once your device is plugged into an OS,

19:07

has been surprisingly difficult.

19:09

In Mac OS and Windows,

19:11

there's really been no good built-in tools.

19:13

In Linux, it's a breeze.

19:15

You can use the LS USB command to see some of this data pretty easily.

19:18

But if you programmed USB stuff and used a Mac 20 years ago,

19:21

buried in a hard-defined developer bundle was a tool called USB Prober.

19:25

It was great.

19:26

It was able to get all this USB descriptor info and it parsed it,

19:30

showing it all out in useful English and a nice tree view.

19:34

And it can save the entire state of your USB set up as a text file.

19:36

So you can just dump it out and you could look at it and refer to it later.

19:39

And it also saved the raw bytes of these descriptors.

19:42

So you could compare descriptors against devices if you're making your own device.

19:47

As someone struggling to make Arduino pretend to be a device back then,

19:51

USB Prober was so instructive.

19:53

I would give a zip of it to anyone having USB questions,

19:56

even though I think that was technically against some of the turns of service

20:00

of being an Apple developer.

20:02

And I use it almost every day when programming,

20:06

since it's a great way to answer questions like,

20:09

is that PICO actually in boot mode?

20:11

Because all this information will change when it's in boot mode.

20:14

Or did my changes to CircaPython's boot.

20:16

Dot Pi to enable the second serial port actually work?

20:18

So you can just look and see,

20:19

oh, is the second interface for USB-CDC there?

20:24

But MacOS Prober is dying.

20:28

As Mac OS has evolved,

20:30

it's starting to not work right.

20:32

The writing has been on the wall.

20:33

I needed to find another tool.

20:35

But nothing I could find replicated what USB Prober did.

20:38

So for the last month or so, I've been recreating it.

20:41

I've become okay at writing these Tori native apps where the back end is in Rust and the front end is HTML.

20:47

So I started there.

20:48

There's a nice cross-platform Rust library called InUSB.

20:51

That's like a pure Rust version of the Lib USBC library that I'm an occasional contributor on.

20:58

That could get me most of the information.

21:00

On both Macawson, Windows,

21:01

I still had to do some hacks to get the Hid Report descriptors

21:04

for reasons those are hard to get at.

21:07

Thanks,

21:07

Claude, for helping me figure that out, especially on the Windows side, where,

21:10

man,

21:11

Windows.

21:13

You actually can't get the Hid Report descriptor out natively.

21:16

You actually have to reconstruct it from data structures inside of Windows.

21:21

And thankfully,

21:22

that's a solved problem.

21:23

Other people have done it.

21:24

So I was able to kind of crib from that.

21:27

And parsing of the descriptor data,

21:29

like this is just getting the bytes.

21:30

You actually have to parse it out to make it human readable.

21:33

And this parsing is something I did not want to work on.

21:35

It's mostly grown work, so I put clot on it.

21:37

I had many test cases of known good output from the existing Mac USB programmer,

21:44

sorry, the existing USB prover for various USB devices and what the output should be.

21:50

It made the tasker really quick.

21:51

And I think it's a pretty efficient use of these LLMs for programming,

21:54

where you've got a lot of good test data.

21:57

So the end result is an app that looks a lot like the old USB programmer,

22:01

USB prober, but updated in a few useful ways to me,

22:04

including providing a command line tool that acts like LSUSB.

22:08

I now have an LSUSB for Macintosh and for Windows.

22:11

And it's cross-platform,

22:13

all three platforms,

22:14

Mac Windows and Linux.

22:16

So I can have the same view on all these different OSs for USB devices.

22:22

So I can see like how different OSs kind of see the different,

22:25

how the different was to see the device in case that's something that can happen.

22:30

It's been pretty exciting for me.

22:31

If you're interested in this tool,

22:33

give it a download.

22:34

There's links in the show notes and tell me what you think.

22:37

That's really impressive that you made a multi-platform.

22:39

I can't imagine having to rebuild those data structures and Windows

22:43

and what you had to go through to do that.

22:45

So that's a good use of the AI.

22:47

Yeah, it was totally less me and more Claude.

22:49

And one of the really awesome benefits of doing this in this Tari environment is you kind of get

22:55

cross-platform for free if you just don't do anything,

22:58

obviously,

22:59

single platform,

23:00

which is

23:00

amazing.

23:03

I'm a big believer in native apps, and this is, this is as native as,

23:06

as native as I can

23:08

get. I've seen a couple of comments on social media already of people excited to use it, so well done.

23:12

Oh,

23:12

thanks, thanks.

23:15

All right. What's our last one for this at this time?

23:17

Last episode I talked about Parachord,

23:19

an open source multi-platform music player.

23:21

The day our episode

23:23

dropped,

23:24

the developer announced the other half of what

23:25

he's been working on in addition to Parachord,

23:28

and that is Achordion,

23:30

which he describes as an independent

23:31

music community and data layer.

23:34

And it's pretty cool.

23:35

The first thing to know about it is that it's

23:37

built on top of music brains and requires a music brains account.

23:41

If you're not familiar with music

23:42

brains,

23:42

their goal is to be the ultimate source of music information.

23:46

Think Wikipedia,

23:46

but for music,

23:47

and almost all of their data is public domain.

23:50

They offer a number of services in addition to the APIs they expose.

23:54

There's Picard, an MP3 tagger that I swear by.

23:57

And then there's ListenBrainz, which is just kind of like Last FM.

24:01

If you're using a compatible music player, it shares what you've listened to while streaming to ListenBrainz.

24:07

But anyway,

24:08

there's also a social network component to Achordion.

24:11

Based on your listening history, it will recommend other users to follow.

24:15

And it also has some blue sky integration,

24:17

but outside of linking my profile, I haven't really tried it yet.

24:20

But it's more than just a social network that's being built.

24:23

The goal is to build a real community.

24:26

And that takes us to the Explore tab on the Achordion site.

24:29

It displays a ton of information from new releases of artists you listen to,

24:33

to playlist recommendations,

24:35

other recommended artists,

24:37

similar listeners like you and more.

24:39

And it's all integrated with Parachord.

24:41

Choose one of the playlists in Explorer.

24:43

And there's a play and Parachord button right there that starts it right up.

24:48

I'm digging it and I'm all in.

24:49

I was a last FM user 20 plus years ago before they got bought by CBS.

24:53

but I deleted my account when they got bought as I didn't want to share my data with a big corporation to do who knows what with.

24:59

But I should say congrats to the last FM team for going independent and recently leaving CBS.

25:05

I've included a link to that in the show notes too.

25:08

Anyway,

25:09

I've also had a music brains account for probably 25 years going back to when I was ripping CDs into MP3s

25:15

and submitting albums that was missing from music brains.

25:19

My account is so old that's actually under my old gamer tag and I've linked to it in my Achordion.

25:23

and profile in the show notes.

25:25

And being a vinyl music guy,

25:28

I wanted a way to capture what I was listening to

25:30

get it into ListenBrainz.

25:32

So I've updated my song Matrix project

25:34

that has a small mic plugged into a Raspberry Pi,

25:37

and every few minutes,

25:38

it takes a sample of the background music

25:40

and sends it to Shazam to identify it.

25:42

It then displays the song title

25:43

an artist on a LED matrix

25:46

that I have set up using Adafruit I.O.

25:48

So now,

25:49

after it identifies the song,

25:50

I just shoot that off to ListenBrainz using JSON

25:52

via their API,

25:54

and I now have a history of my vinyl record plays.

25:57

Sometimes it's fun to be a geek.

26:00

That's really amazing.

26:05

This Achordion is so cool just because I hear people talking about Spotify all the time

26:10

and how the fun interaction of being sort of social with your music listening.

26:14

And I just don't want to participate in the whole Spotify infrastructure.

26:18

Sorry,

26:19

you know, this seems more my speed.

26:21

Yeah,

26:22

exactly.

26:23

Much like the Fediverse,

26:24

it's an alternative community to some of the bigger ones that are out there.

26:28

And I really dig what the developer is doing,

26:30

both from the music player's side and from the community side.

26:34

Yeah, this is great.

26:36

Well, that's our show.

26:37

For detailed show notes and transcripts, visit the bootloader.net.

26:41

Until next time,

26:42

stay positive.