Jonathan: Hey folks, this week, David Ruggles joins me and we talk with Frank Delport about Py4j, a Java library for exposing GPIO and SPI, all kinds of stuff on the Raspberry Pi in Java. You don't want to miss it, so stay tuned. This is Floss Weekly, episode 809, recorded Tuesday, November the 12th. Pi4j, stable and boring on the Raspberry Pi.
It's time for Floss Weekly. That's the show about free, libre, and open source software. I'm your host, Jonathan Bennett, and today we've got something a little different, out of the box. Maybe outside of my comfort zone. But first we have a co host. We have Mr. David Ruggles, the David Factor. Welcome, sir.
Good to be here. I appreciate you kind of popping in at the last moment here saying, Oh, you don't have a co host yet. I can, I can do that. I could be that guy. I very much appreciate it. You're very welcome. Because I think, I, I, it's on me. It was my fault. It was a scheduling snafu that I made. But I think I was going to do the show solo if you hadn't popped in.
So, very much appreciate that.
David: It's going to be interesting. I don't remember which one it was. It was one of the recent ones I was on. It was about Mac and I ended up, oh, Brew! Brew I said I'm not a big Mac guy so many times it became a joke and, you know, now it's, and we ended up calling it the Whopper episode.
So, for this one, I'm not a big Java guy, but I don't know of any funny saying about that, so.
Jonathan: I am here to learn. The question may be, are you a Raspberry Pi guy?
David: Not, I own a couple. And I've run some code on one, but I just, It doesn't fit into my day job, and I don't have enough time for that hobby.
But I love the idea of the Raspberry Pis and that whole ecosystem, and I've done a little bit of Arduino stuff, it's kind of that same you know, software meets hardware. Bye
Jonathan: bye. Yeah, that's, that's the thing about the Raspberry Pi, and so, like, before the Raspberry Pi, there was the, the Beagleboard and Beaglebone, and before that even, there was the Arduino, of course.
If you go even further back, you have things like the BASIC stamp, so this idea has been around for a long time. But the idea of, well, let's take our, our computers that we're used to, that we interact with, and let's give them more ways to reach out and interact with the real world. And that's just the, that's the addictive part for me.
Like that you can, you can hang real hardware. You can, you could, you could do things. And so a lot of times that's turning lights on and off. That's actually where I really got started with some of this was, you know, okay, let's put a relay inside a lamp and then switch the relay. With the way that I first started doing it was the the relay was connected to the arduino The arduino could switch the light back and forth and then the arduino just had a super simple script on it That talked to the local computer That you know so that it could tell the arduino to tell the light to go off and on and then of course You know you you make a web page with a button on it so that you can you know Pull it up from anywhere and turn your light on and off and that's just you know That's geek nirvana.
Like that's that you made it when you could do that So today's guest is Frank Delport, and we're talking about Java on the Raspberry Pi, which, you know, is kind of an interesting thing. So I could, I could see this. With Java, you could do very, very quick sort of prototyping of programs. And there's so many libraries out there.
And then, you know, you bring it to the Raspberry Pi, and it, it is kind of this, like, really easy to get started, really quick prototyping platform, perhaps. So I guess I can see the point of it. Are you familiar with this project at all?
David: I looked at it a little bit enough to have a question about the change in versions.
Okay. That's about as far as I got, so I'll wait for our guests to ask that question.
Jonathan: We will definitely get to that. Let's go ahead and bring bring Frank on. Welcome to the show, sir.
Frank: Hello good evening from Belgium.
Jonathan: Huh. Well, good morning from Oklahoma.
Frank: And thanks for inviting me. You Java lovers.
Jonathan: I've, I've explained it before. My experience with Java happened. Well, one with a much earlier version of Java and two, a much earlier place in my programming career. So I am sure that some of the frustrations that I have would That I had would no longer be things because hopefully I know a little bit better what I'm doing now.
And from what I understand, the Java ecosystem has sort of come along and things are a bit nicer to work with as well.
Frank: Yeah, so people who are listening to this podcast and have a bad feeling about Java, if you're feeling dates from Java 8 or around that time, Please ignore those feelings and, and take a look at, at nowadays Java.
The fun thing is the Java from then still runs on the new run times, but the language has evolved a lot. The run times has evolved a lot of you can write much cleaner codes than you could do. A long time ago and yeah, debugging and the frustrations you have possibly are all gone now with better tooling and, but yeah, everything has evolved as we have so much better IDEs for all languages.
We have a visual studio code for people who want to start coding for free with a very good IDE. What's that? Plugins for all languages. So yeah Java has evolved a lot and, and I hope I can inspire some people who are, who have some frustrations to retry some of these and see what, what has changed.
David: In all fairness, my experience actually is even further back.
It was Java 6, I think the last Java that I touched. Yeah. As soon as I get copious amounts of free time, I will revisit Java. I've committed to that.
Frank: Okay. If you, if you're looking for a starting point, I also write blog posts for fuji. io, which is the website for the friends of OpenJDK, which is a community platform.
And on that Side, I have a small tutorial getting started with Java 30 minutes of video with all the basic functionality of Java which could be a good starting point if, if it's really new to you or you just want to see what the current state is.
Jonathan: Yeah, so let's, let's start with this question that I, I threatened that I was going to ask, and that is, why, why, who, who thought it was a good idea to put Java on the Raspberry Pi?
And of course I asked this very tongue in cheek but I'm sure you, I'm sure you get it a lot. Like, why Java on the Pi?
Frank: Well we go back, I think, about five years, In history, and I was doing Java development at that time for a company in Belgium, Televic Rail, who builds display systems for, for trains and communication systems for trains.
And we were also using Javavix. So those are, Javavix is a graphical user tool for Java. So those were my two tools that I was used to use to, to work with, and I wanted to create a touch based touch screen based application for my son for his drum boot. So it was then nine years old. So a little application on a touch screen where he could start some lights in his drum boot and, and some flushing let strips.
And I wanted to create that with Java and Javavix because those are the tools I know. I wanted to use Raspberry Pis because I had a few of them because I was I'm also doing a Coder Dojo, the coding club for kids. So we have some, some of the stuff laying around and, and, and they say, if you want to learn something new, you should focus on one thing.
And for me, it was the electronics, communicating with. electronics hardware from software. So I needed to use the tools I already knew, Java, Java, Vix, and, and, and Raspberry Pis. I've used that a bit. I used Linux before. So the new thing for me was communicating with, with those devices. And that's how I started with some basic experiments, blinking a LED.
The hello world in, in electronics and I found at that time that there was not that much documentation about running Java on a small PC like the Raspberry Pi. We go five years back. So there were not the Raspberry Pi five we have now, which is a full power device. So we had the Raspberry Pi three, I think at that time.
So I, I needed to find out a lot of stuff and experiment, and that's when I started writing blog posts and, and people who are watching this podcast as a video, they can see my book behind me here on the side. So I ended up writing a book which landed me a new job. So it's, for me, it was a personal journey of, of combining software and hardware.
And Java is my language, the language I use the most and love the most. So that's why I thought that Java on Raspberry Pi is actually a good, good idea. And during that journey, I, I bumped on Pi4j, which is a project which is already I think it started in 2012 a Java library to make it easy for Java developers to communicate with the GPIOs of the Raspberry Pi.
So interact with electronic devices and, and, and, and in those, those last years, I got involved in the, into the Py4j project itself. Thank you. And that's why I'm here to share this message and this love for electronics on the Raspberry Pi.
Jonathan: Yeah. And, and so, you know, with the, with the Pi it's kind of been interesting because the, the, the Linux kernel in general, the Raspberry Pi, it seems has sort of dragged some of these things into the kernel, like not necessarily GPIO access from the kernel, but exposing that to user space.
Like from, from what I can tell, that, that subsystem Was created because of the Raspberry Pi and other devices like it. So how much, how much of this worked when you got involved with Py4j a few years ago? How much of this was already there and working and how much, how much stuff did you bring to it?
Frank: Everything worked actually. So, so on the Raspberry Pi, you had SPI, I2C PBM, all those protocols. You could use them on the Raspberry Pi from Java. And how that was done was by combining the Java code with WiringPy, which is a library At that time to bring this GPIO to different languages also to Python.
So that was actually using wiring pi. And and that's the same thing that still have is happening. So from pi for J some C code is used. to interact with this GPIOs through JNI, which is a way to include C headers in Java code and being able to call this. And what happens is, is when I found this project about five years ago, It, the original creator of it, Robert Savage, an American guy, he was working on a new version to bump it to newer Java versions and new architecture and modern Java, let's say.
But he got involved into other projects, his personal, his work projects. So he had something which was nearly finished. But not completely finished. And that's when I joined. I mainly focus on documentation, writing about this, telling about this. And then some other people like Robert a Swiss guy, Robert, we call him in the project.
And then Tom arts, who is also an American guy who, who creates a lot of example projects. They also joined the project. And now Robert, the original creator moved out a bit. And that's what happens in, in a lot of open source projects.
Yeah.
People start it, then get in, yeah, get a new job, get, get other priorities.
And we are lucky with Pi4j that we have this community joining in. And like you said, the kernel support or, or what Raspberry Pi is doing inside the operating system to be able to interact with this, with this GPIOs shifted a lot now with the new Raspberry Pi 5. They have this new chip the RP1 and that chip is responsible for the communication with these GPIOs.
And what happened with Pi4j is we assumed that it wouldn't work as is when the Raspberry Pi 5 launched. So it took some time before I had the first device here. I tested it and didn't work. So we created the ticket. We need to find out why. And, and the problem is pretty clear. You have these, these C class files we include to interact with the GPOs and they were not compatible with this new chip and lucky, luckily this is an open source project.
So at some point someone said, Hey, I have a pull request for you, which brings RPI5 support to Py4j and it needed some fine tuning. Then, then Robert Eich joined again into this, this pull request. He fixed it. Then Tom did some improves. So we had this whole thing. Suddenly we have support for RPI5 without planning it, which was really great.
This is a problem with, with this, with this new boards. Yeah. This suddenly appear I guess the compute five is already. Available for some people. We don't have it. So we don't know if it will be compatible. We hope so. The
Jonathan: response that I've gotten to that is we can neither confirm nor deny.
Frank: Yeah, everyone is waiting for it.
So yeah, it will be there. But but that's yeah, that's how this project evolves. And it's nice to see that that people love it. Because they are Java developers. I want to experiment with this. I talked about this at several conferences and then people are building very fancy stuff with it. We know that there are some companies who use it, but don't talk about it because they are not publicly used.
Please. Telling we actually just buy Raspberry Pi fives and put them in a fancy box. But yeah, those things are happening and that's also the disadvantage of open source. It's there. It's on GitHub. It's a Maven library. It's a Java library. You can get from the Maven repository, so anyone can use it without telling us.
It seems pretty stable because we don't get a lot of issues. Issues we get on GitHub also get solved very easily by the community again, so, which is really great. And this is, yeah. How this project is, is evolving and, yeah, for me, so many years ago when I started doing this, the blinking let's.
Was after five days of trying out to get Java on the Raspberry Pi and then having something doing something Yeah, that was my aha moment. It works on my machine. I can blink let's which is no rocket science at all, but Once you get beyond that point and you know, yeah, I can use this library and I can communicate to the GPOs.
The next thing is, yeah, a button and a relay and, and, and an I square C display and we can control everything. And another fun thing is, is a Swiss university, the FHNW university FACS school and something in, in Switzerland, they use. Pi4j, Raspberry Pi, Java, in their education system. So, so hardware and software engineers work together on projects where they build some kind of, like, for instance, the crazy, most crazy example is, is you know, the, the shortest route solution.
So you have a driver and he has to go to point B and he has to pass through all these points, calculate the shortest route, which is a typical software problem to solve. Now they combine it with the hardware. Student who has to build this on a 64 by 64 let matrix where they put some sheets of paper on top of it with different routes and they have to match and then they turn it into a board game.
You have to compete against the computer and you get a few seconds to indicate which is the shortest route. And then the computer tells you if you're right. So they have this whole combination of software and hardware, and they use Py4j and they contribute back with examples and with documentation changes.
And they built I don't know if you know the CrowPy, which is a little suitcase. With the Raspberry Pi and all electronic components as an experimentation kit. And again, they contributed all these example code back to the project. So it's, it's, it's fun to see if you have a, have a, have an interesting library project on, on, on open source on GitHub and you get some traction.
That it starts living by itself.
Jonathan: Yeah, some interesting stuff there. So, was Pi4J sort of originally made like for education? Was that the scope originally for it? As far as I
Frank: know, Robert just made it because he needed it himself. Also as a Java developer, he wanted to use, and at some point Oracle who, who took over the Java brand.
So they are the owner of the Java brand and, and, and also steering this, the evolutions within Java. At some point they also started something like that. So at some point there was an idea to bring this officially as a part of the, of the core of Java. Oh, interesting. And Rob, and Robert was working on his thing and he thought, yeah, at some point I can stop my project because it will be in Java.
But Oracle has taken the part of, of, of Java. Backend server stuff, databases Java fix, which is another love of me to build user interfaces. Also has bits. Yeah. Went, went on the sidetrack because of that, because they focus on the server side. But Java was originally born on embedded devices. The first Java.
Was something which ran on, on set of boxes on, on refrigerators on, on, on car systems. So that's where Java was born, but it's, yeah, it, it has this promise of, of right ones run everywhere. So yeah, it runs on the Raspberry Pi. Of course it runs everywhere.
Jonathan: Is, is Pi for J limited to running on the official?
I don't know if it's the official Raspberry Pi OS or if you throw a different distro on your Raspberry Pi, like say Fedora, does it run there as well?
Frank: I have tested Fedora, Ubuntu, that's no issue. I should try it again with the Raspberry Pi 5. I'll put Ubuntu there. I'm not sure. It depends on a few of It depends on what you want to use of the GPIOs because if it's just an input or an output or a PBM or, or you want to use I square C, those are different.
Mm-Hmm. providers we have within PI four J. And if you start it, if you start the Java application with the PI four J library, it first starts detecting which version. Of the Raspberry Pi board, am I on? Because Raspberry Pi 5 has different, needs different native code than, than, than other boards.
So it needs some way to define on which board it's running. So we, we should try it on Fido. I, I have no idea.
Jonathan: It, it might not be a problem now. I just, I have memories of back several years ago when I, it was actually Fedora. I just first started working on the Raspberry Pi and actually having access to the GPIO, which was great, except if you tried to use, in this case it was Python, if you tried to use the same Python libraries that worked on the official Raspberry Pi OS, distro, it just didn't work because the way the upstream kernel implemented GPIO support was different than the way that Raspberry Pi was doing it at that time.
So
Frank: yeah, so yeah, probably the same native C code, which is missing somewhere or, or yeah, not compatible with, with how it works. And
Jonathan: I think in that case, it was actually the, the kernel drivers themselves. I think that was that was right as the slash dev slash GPIO chip. It was coming online and making it into the kernel.
Yeah, an interesting time. David, you want to, you said you had a question that you wanted to get in. Let's let, let's let David have some fun.
David: Okay so I was looking at your website a little bit. Well, not yours specifically, but the project's website. And I actually went down into the GitHub repo.
And we hadn't really talked about the community around this yet, but I noticed that you are number four in contributors, so that is always a good sign. That means you've got other people committing code and supporting the project. So, and it looks like you've got about 20 committers. But. The actual question I had was around the versions.
Version 2. And 1, yeah. Yep, Version 2 though, you're starting to, or you did develop a new plugin model. To kind of, I guess, allow, More third party integration and stuff. So what is really your catalyst in moving? Yeah,
Frank: so that's dates back to the history of Robert Savage and the creator of the project.
So version 1 is what he initially started in 2012. It's based on Java 8. And it is a massive, big project. It included implementations for specific devices like that kind of LCD display, that kind of IO expander, like this chip, this number of chip, which made it very difficult to expand, change something in the, in the project.
And also difficult, yeah, to maintain it. So, and, and, and have people contribute some, something back to the project. So that's why at some point Robert together with some other people from, from other projects, he looked back at how did I design this project? How do I maintain it? And is there a better way to do that?
And I was around the time that also Java 11 became available. And for people who are not really aware of the history of Java, there is a big change that happened after Java 9 with how Java is architectured. So there is quite some change between Java 8 and 11 and then what happened since 11. So once you're on Java 11 on modern Java, as you can call it And what he started doing is he started working on a new repository on version two, which was Java 11, based on Java 11, and it all, the implementations for specific devices for specific electronic components got removed.
So the idea of this version two is the basic IO functionality that is needed to interact with components. So that's the core of PI four J really provide methods. to interact with the GPIOs, with all the different protocols, I2C, PBM, all those SPI, all those protocols are there. And by providing and building in a modular approach, it is easier now to extend it.
And that's exactly what happens with GPIOs. With the RPI5, with the Raspberry Pi 5, thanks to this modular approach, someone was able to say, for the Raspberry Pi 5, we need a complete different provider, which is compatible with the Raspberry Pi 5. And I can do that because I can just create a new module in this project, which is compatible with Raspberry Pi 5, and implement this specific functionality.
See? And it was very easy to test that because it didn't break any other code. But because the project changed so much and it was in a different repository, we decided to create a new repository, which is, it was a big question at the time, how should we do this? Should we clean that existing repository and put a new code in place?
But I would also break the whole arc history. So it was a bit, yeah, we had a question there, and at some point, yeah, you have to decide. And we decided to keep them as separate repositories. So version one is still a repository on GitHub, but it's archived, so you can still look at it, but it won't change anymore.
And now we have this version two, and now we are again at the point where we have to decide to move forward from Java 11 to a newer one. So, but we will stay in the, in the current repository. That's for sure. But there is we have an open issue about that. The idea is for instance, to, to bump the version to version three, for instance and then have some, some forks where we can.
If needed, go back to add security fixes, but do some breaking change that we're not compatible anymore with, with all the Java versions. But that's something which is now ongoing. It's a discussion which is now open on the Py4j version two discussion list on GitHub. So people who have some opinions there, they can definitely join and share how they think about this.
And, and that's also what we do with this GitHub discussions. They ask people what they think about. What should be the next step? Like support for cellular communication. There are, there is a very good Java library, which does only this serial communication. And we have some basic implementation in Py4j.
Should we keep it or just tell people use this library for this specific use case? And that's also how we use, use the discussion list a bit. So makes, make, does it make a bit clear what we did with the versioning there?
David: Yeah. Yeah, I think it makes a lot of sense to because I've, I've run into that situation with repositories myself where you don't want to lose all the history, you don't want to lose those commits and the logs and everything else, but it's a big enough change that it doesn't make sense to continue that.
So, yeah, that's really cool. like
Frank: if you now would go from Java 11 to Java 21, which is now the current long term support version, it's also already. One year old. So it makes sense to bump to this newest version. But actually that kind of change is just changing some version numbers. In the config files, it doesn't break or change any code.
What will happen if we bump to Java 21 is that we could dive into the code again and write some cleaner code in some places. Java, the language got some new methods which makes it possible to write cleaner code in some cases, like where you have a lot of switch statements and stuff like that, and text blocks.
I don't know if there are any A lot of text blocks in Py4j, but that kind of code can be optimized and can be written in a cleaner way now. So if we bump to this Java 21, which is just a config change and then in the next version, we could go into the sources and decide, yeah, this code now can be come cleaner and we should clean this up.
And in Java 21, I think we also got a new way to talk with C code. So, and, and there are more changes coming in Java about foreign memory, how you can write into the memory, which is shared with some C code, for instance, which will become a lot easier. Those are the kind of changes which are coming to Java inspired by what's happening in machine learning in the eye.
You want to be able to interact with C classes with C code, which is very good in doing this kind of stuff. And, and, and these foreign memory APIs, which are coming to Java, they are inspired by that goal, but it's something we can use to interact with the GPIOs also. And, and so. If we evolve to newer Java versions, that's also how Py4j can keep evolving.
Jonathan: That's actually interesting. Something I have on my list here I wanted to ask you about is the way that the question was going to go is like this, so it, does Py4j have support for the Raspberry Pi camera inputs? And then I know something that people are doing with those, it's interesting, is like AI acceleration to be able to make sense of what the camera is seeing.
Is that, are those two things that are in Pi4j yet? Are they on the roadmap? They
Frank: are not yet. We have got a question very recently, indeed. Can I access the camera? No, it's not unless someone stands up again and says, yeah, I know how to do this. As a matter of fact, I do. I have this, actually for the people again watching at this podcast, you're looking at me through a Raspberry Pi because I use Raspberry Pis as my camera.
Oh, interesting. I have an ATEM Mini to switch between different cameras. So I have other stuff lying around. But I use Raspberry Pi cameras and I want to create a little Java application that I can run on my desktop that I can zoom in with this camera and stuff like that, but yeah, it doesn't exist in Java.
So I'm a bit stuck. Yeah, of course. I could look into the Python version, but I'm a bit that's
Jonathan: heresy.
Frank: I want to do this with Java. So yeah, no, no, we don't have camera support, but it's probably possible. And there are a lot of fun stuff, things you could do at that time. I'm wondering if we should add it to Pi4j itself, because we're really focusing on those 40 pins.
And, and the camera is something different. I guess there are also already enough of Java libraries who are doing stuff with, with images. So, yeah, I don't know. It's, it's something to think about. Yeah. I'm
Jonathan: trying, I'm trying to remember. If the Raspberry Pi cameras, if they show up as like a V4L2 device instead of Linux.
Frank: I don't know. I only played with this, what is it called? Pi camera? What is this? The, the, the, the, the lip camera I think that you can, because that's what I do with this thing. And so I, I just have a little service that starts the, the camera as a full screen. thing on top of everything else. And I just use the HDMI output.
So that's what I'm using, but yeah, that's, that's very basic coding. It's somewhere hidden on my block somewhere there. You can find how I done this because yeah, that's also what I do if, if I experiment something I'm the kind of person that forgets what he's done one hour ago. So then it's fun.
Yeah. Then I have to write it down and it's fun to find back your own that can also be frustrating. I, when I started experimenting with Java on the Raspberry Pi, I always came up on my own questions or on, on Stack Overflow. So I was, yeah, going back to the same problems over and over again.
Jonathan: So one of the most fun experiences I've had is googling for a question and finding the answer in my own Hackaday article that I had written and forgotten about.
That's, yes, that's always fun.
Frank: That turns, that proves that you're an expert in that topic because you had the problem, you fix it, and then you had it again.
Jonathan: Yeah, I guess. Okay, so you have support for the Raspberry Pi devices. What about, what about some of the other. Single board computers out there, do any of the, do any of the Pi4j libraries and does the, does the code run on, say, the Pine64 or the BananaPi devices or the OrangePi devices?
Frank: That was the original idea. It got a bit abandoned in version one and it got totally abandoned in version two, but again, it's a modular approach architecture. So there is a provider in there, which is called the Raspberry Pi provider. So that means that, that when the application, the library starts, it detects I'm running on the Raspberry Pi.
So I'm loading that one. If you execute your code on a Windows machine, for instance, or a Mac, it will load the mock provider. So you can toggle an IO. But actually nothing is happening because the provider just returns. Okay. So we got the question recently. It is an issue again on, on, I have to look it up for another board.
And again, we have the same message for everyone. If you really need it, it's an open source project. We accept pull requests. We cannot support it with the people we have now in the team. We cannot do it because we are, we are Raspberry Pi people. That's the device we are using. If you have another device and you are, you know how to do this, then please, yes, join us.
And, and, and I'm looking in the issues, but I don't find it back. Immediately, which port it was. But that's exactly what, what we want to achieve. Yeah. Little issue we have is, yeah. How do they call these contributions to an open source project? Drive by contributions. Yes. Someone really needs this as this was a project and then it's gone.
Yes. And if you then need an update, yeah, you're stuck. So. I don't find which port it was, but indeed yet it's, it is a question which we got already a few times. And at this moment we are focusing on the Raspberry Pi. If someone has a good idea on how to implement this, the problem with that board was that for instance, the GPIOs were in different headers or different sections or different addresses.
I don't know. So it was not How it is now implemented in the Py4j library. It would become a bit complicated to edit, but it's codes. Anything can be done at the end, but someone has to do it.
Jonathan: You have to have somebody that cares enough about it to want to go in and make it all you know, generic to use the GPIO chip interfaces.
And then you have to have that person care enough to stick around in the project to answer questions and maintain it.
Frank: Yeah, and maintain. And I think with the modular approach we now have, It's pretty easy to add it and to keep it stable. We don't need to, the way how, how electronics are, are, are programmed or how you interact with them will not change much.
SPI is there, I2C is there, serial communication is there just simple input outputs is there. There's not much which will change in the field of electronics. So it's not that we will need to invent something completely new within the library that will need to be implemented for Raspberry Pi for all the other boards, but still the library keeps evolving.
We have some improvements. There were quite some I2C improvements and SPI lately. So yeah, those changes can go back to those specific implementations for. Raspberry Pi and other Pi types. So yeah, we need people to stick around indeed. And that's a bit, yeah. I think a lot of open source projects have that issue.
If, if people join for a short time and then yeah, that specific topic, and that's for people who say that Java doesn't change fast, that's actually Also the reason, and, and what we tend to say within Java is Java is boring and boring is good.
You, you have
fun in your private time, have fun with, with things which break whenever they want to break.
But within a company, you want to have stable stuff.
If you
start your application tomorrow, it should be fine. They behave exactly like it did yesterday and, and, and that's exactly what they want to achieve and what they achieve with Java. Java evolves and at, at this since many years now, we have a new Java version every six months.
There are a lot of evolutions within those new Java versions, but you can always run your old Java code on the new runtime. They're like, like, if you went from Python two to three, no way, but that's exactly what Java wants to have. I still have
Jonathan: PTSD from that transition.
Frank: Yeah, me, me too. And I didn't do Python development teams.
I only have some, some small tools on, on Python, so and that's what Java wants to be. It wants to be stable and boring.
Jonathan: Yeah.
Frank: But on the other hand, it is evolving and it's evolving pretty fast, even Stability in mind, and if you want to contribute something to OpenJDK, actually Java is OpenJDK, that's the open source project it's not that easy to get something in.
And that's the reason they don't want this drive by contributions from someone who has a very good ID. But then, yeah, who is going to maintain it? And, and Yeah, I think that's something we can learn from the Java, the OpenJDK project, definitely.
Jonathan: So speaking of OpenJDK, and I was thinking about this in terms of the kernel as well as Raspberry Pi, do you guys have lines of communication upstream?
Do you have a guy at Raspberry Pi Foundation or a guy at Java or somebody at the kernel that, you know, you could shoot an email to when something breaks and And, and get some opinions or,
Frank: no, since, since I started writing about this, I'm trying to get into contact with, with the Raspberry Pi Company, foundation, whatever.
I contributed a few articles to Magpie Magazine. Mm-Hmm. . But they're not that big fan of Java. Hmm. I know . But for, for reasons but the same thing like they had in the past, some, some, yeah, problems with migrating to new versions. And so, yeah, maybe that history is also from there. Do I have a line with, with Java?
Yes, I'm a Java champion. That means that I I'm one of those 400 people who are community. Selected by the other Java champions to, to, to, to talk about this. I'm definitely no OpenJDK specialist but I know some people. The fun thing is I work now at Azul, which is one of the OpenJDK distributors.
We built OpenJDK versions and, and runtimes. And, and just one example we have a project crack, which is aiming to have very fast startup of Java applications. And when we first announced this, I think one or two years ago, I immediately got the question as being the Java and Raspberry Pi guy, does this work on, does this work on Raspberry Pi?
And I tried it and it failed. For two reasons, the library itself was not compatible, the Java version. But there was something missing in the kernel of Raspberry Pi. And then I found out that, that if you just stand up and make a, make a, make a ticket on GitHub and clearly explain what's happening and what's missing and what's wrong, you don't have to fix it yourself.
If you just are able to tell, this is what I'm missing and you can do it there. It was just something, some, some something which needed to be enabled in the kernel settings, whatever. It wasn't the next version of the Raspberry Pi operating system. It was fixed together with 6, 000 and something other fixes, because I didn't know that the kernel was that big of a project.
And so that was also the first, very first time in my life, I compiled the kernel myself. Which is apparently something you have to do if you want to be a real developer. Yes,
Jonathan: yes, of course, of course. I'm glad to hear that you as well had that experience interacting with the Raspberry Pi Foundation, the technical support there, because I've had a similar instance where, and in my case it was something that the documentation said you can do with the device tree overlay to do to do fun things with the SPI chip select pins.
But and I raised an issue on their GitHub and like, Hey, your documentation says this should work. And from what I could tell, it doesn't work. And it did not take long. And they got back to me like, You're right. That doesn't work. Here's the problem. We'll have it fixed in the next version of the kernel.
I was like,
Frank: Wow. And that's, that's, you know, Jeff Gehling. I think the Raspberry Pi video creator.
Jonathan: One of, one of many, but yes.
Frank: One of many, but he's really great. Yes, he is. And, and that's exactly his message. They're all. Many boards like the Raspberry Pi, there are way better boards and Raspberry Pi for the same price, but the effort you need to take to get them running compared to the Raspberry Pi, yes, that's miles apart.
I have, I have the same experience. I have a few boards, only a few that I tried out and just finding An operating system and how you put it on the cart and how you put it on the device is already a problem and that's, there are many things you can say about Raspberry Pi company foundation and their ideas and how they are evolving, but the tooling they create and how they, how easy they make it.
To use these devices and what you can do with it. Yeah.
Jonathan: I ironically, I was, I was on discord last night talking with Jeff about this exact topic, because there's, there is another, there is another board that we both have copies of. We. But we both got sent copies of them to review and in fact, my review of it is hopefully coming out soon.
The review, my review of this thing is like six months past due, because putting Linux on it was fundamentally broken. And as far as I could tell, nobody cared about it. So I just, it's like I, I can't install the, in this case it was Fedora. It's like I can't install Fedora on this thing because the device trees were just goobered and nobody seemed to care enough to try to get it fixed or, you know, maybe, maybe these people knew how to fix it, but they didn't care enough to put out a You know, an actual guide where it'll tell you now to their credit.
I did this, the discord I was in just explain the program, the problem that people are willing to help. So like, it's not like it was complete radio silence. Yeah. But
Frank: it's strange. Why do they make this hardware? I guess they want to sell it. So they want people to use it. So why, why don't they? Try a little bit harder.
Jonathan: I mean, so in this particular case, you've got, you've got Rockchip at the top that actually makes the CPU and Rockchip, I learned last night actually that there are four kernel maintainers that are at rockchip. com email addresses. So it's not like they're entirely disconnected, but. The amount of effort that Rockchip puts into making things work is not as great as it could be.
And then you've got these small companies that repackage these chips for, you know, for various boards. And they're small, and they do not have an unlimited budget to be able to make things work in the kernel and in uBoot. And so, and then, you know, they sell their chips and they invest the money into trying to make it work, and the money runs out.
And they get to this point where it's like, we can't do anything more for you. We're sorry. Good, good luck. And which I mean, on one hand, like financially, I understand where you come to that point, but on the other hand, that's, that's not a great experience for your users. And Raspberry Pi is just, I don't know, I guess that's why they're the unicorn.
They've, they've managed to make that work. And they are slowly, but they are pushing things up to the kernel. It's just. The, the raspberry pies are such a pleasure to use .
Frank: And, and definitely when you combine it with Java, . And, and I wanna come back to, to one of your earlier podcasts. I, I've written down the number 8 0 1 mm-Hmm.
You talked with the creator of J Bank. Mm-Hmm. . And, and yes, if you want to build a Java application, a full size Java application, you need tools, you need Maven, Gradle, something to build it. To compile it, and then you have someone. Some, some tool like JBang, which takes all of this out of your hands and, and, and within the Py4j website, I have a getting started examples based on JBang.
So what is JBang? You write a Java file and a set of Java. And then the name of your file, you do jbang, and the name of your file, and it will fetch dependencies so you can use libraries it will compile it, it will make sure that Java is installed on the machine, on the Raspberry Pi in this case, so it will do all this for you, and jbang installation is just one line of code, you have one script you have to execute in the terminal, so once you have jbang, you can execute this Java code.
And, and so I have created a few examples where you don't need Maven or whatever. You just need this one file, this one Java file, and it will blink a let, or it will listen for the, for the button, or it will, what did I create with, with a little LCD display, I think, and, and then not even using Py4j but the serial the serial library that JFost serial, I think to communicate with a little microcontroller to control LED strips.
So I have all these examples are on the py4j. com website because they make it so easy to get started with something even create a Javavix user interface application with just one file. One file, all your code in that one file, which is a bad coding practice for Java developers, having everything in one file, but to get started, it's really great.
So you can have all these, this, yeah, pretty complicated functionality in one file. And that's what I love about, yeah, for instance, JPEG, which is a great tool.
Jonathan: Yeah, I'm going to let David get back to, I'm sure he's got some questions queued up. But I've got to ask you about this. And this is, so I think, I think this may be Jeff actually that first suggested this.
And it, I've just loved the idea ever since the new RP1 chip. So that is all of that GPIO and SPI and I squared C. off of PCI Express. That is how the RP1 talks to. And so, the idea is, well, why don't we just take the RP1 and put it on a PCI Express card, and put it in desktops, and maybe laptops. And I don't know if, I don't know if the Raspberry Pi Foundation, I don't know if, If I don't know if you're willing to do that, if Evan, I don't know if Evan is willing to do that, but that would be really cool.
And I have to imagine that if that happens, you guys are going to be right there saying, Hey, look, you could, you could use Java with this thing. Yes, because
Frank: we already have the implementation of, of what's happening on the RPA one. Exactly. It's just sending the data to it. That's also why I love this Raspberry Pi.
I'm, I'm, I'm from the generation from the Commodore 64. So yes, I'm that old 40, 40 years ago. But at that time I found the book in the library as was 14 years old, I think about how you can interact with electronic components with the Commodore 64. So And with the book came a print board for eight relays and I had to go to a shop to buy all these relays and all the connectors and I had to solder it and I've never done this before and I fried my my, my Commodore 64.
It was making this electronic buzz when I started it and it didn't do anything. And I unplugged it and tried it again and it worked. And from that time on, I was controlling my Lego trains
Jonathan: with
Frank: basic codes. And some of the less on my, on my Commodore 64. And then we had all these fancy PCs. And the only thing you had was a keyboard and a mouse and, and now you have this Raspberry Pi four, which is way more powerful than this Commodore 64 was for a price.
I once calculated the price of a Commodore 64. I think it's, it would now be 1500. Euros or dollars calculated to current price and you have a RedBull pie for 50. So you have so much power in this, this little device and you can control whatever device you want to it being less or less or displays or, or, or yeah, let's trips.
Which is a difficult topic, but even those kind of stuff you can control with, with, with, with Java or whatever code you want. So the idea of, you know, that the GPIO header of the Raspberry Pi was actually an accident.
Jonathan: I did not know that.
Frank: I know, maybe it's not true, but when they were designing the first Raspberry Pis, they had this chip and they connected it.
And the idea was let's build a computer for everyone. Everyone has already a television. So they put an analog TV connection in it, so nobody had to buy a new one. And then they find out, oh, but this chip has some IO pins and we are not using them. Let's just put them on a header and see what we can do with it.
And those first headers only had the IO pins. 20 connections, I think.
Jonathan: Yeah, it was, it was different. It was different. So
Frank: the header evolved also, so now we have these 40 pins, but to me, these pins, those are for me, the real differentiator between any other computer and the Raspberry Pi. Of course, you can also do a lot of other amazing stuff when you just use software, but those pins are really.
Yeah, those are great.
Jonathan: Yeah. I don't remember if it was during the show or before we started, but the, the Raspberry Pi, it's, it lets you reach out and work with the real world and it's, you know, it's, it's similar to your story with the the controlling the model trains with the Commodore 64. For me, it was the first, the very first thing was being able to switch a light on and off, and I still think that's great.
So I now have smart switches that have custom firmware on them so that I can, you know, I can I can push buttons here on my desk and turn my lights down and on, you know, and it's just, I don't know, it's the, it's the best thing. It's just the best thing to be able to have a computer to reach out and actually do things with the real world.
Frank: Yeah, and that's, yeah.
Jonathan: David, you want to jump in? I'm sure you've got you've got some stuff queued.
David: Well, I was actually going to ask about J Bang, but
Jonathan: he beat you to it.
David: I exactly. But so the other Hackaday thing that you tied to was J Releaser. Yeah. So how does Py4J and J Releaser work together?
Frank: So J Releaser is a tool you use within your Java build chain. At some point it jumps in and it can create a release and, and, and create release notes and that kind of stuff. And you also had them in the, in the, in the podcast, indeed. We don't use it for Py4j, the library itself, because we already had a build flow there.
But we use it from, for some other libraries and tools. So it's part of our GitHub actions. I, I have to be honest, I really hate pipelines and, and building stuff. And, and this, for me, this is the boring stuff. I want to build new codes but packaging and distributing it. And like live Java libraries, when you have a new life Java library, you have to to be, to, to make it available to others.
You put it in the, in the Maven repository, which is a public thing. This whole flow. is boring. And once you have it set up, it will run forever. And that's exactly what we do with JReleaser. So we have it in a few of the other repositories in the Py4j website Py4j GitHub projects where we use it to create releases, but it's really amazing tool.
It's, it's again, something which those are the best tools, tools that people need for themselves to automate the boring stuff. And then suddenly they find I other people are also interested in this, and then it becomes better and better and better. Mm-Hmm. . And, and, and that's exactly what happened with Bo Jang and, and j Releaser.
They are such an amazing tools within the Java ecosystem. And yes, I using where they are meant for, to, to automate the boring stuff and make it easy to, to publish a new version of a library in the, in the Maven repository.
Jonathan: So I've gotta ask, what, what license is PI four J under?
Frank: It's yeah, that's a very good question.
One of the free ones what is it again? It's Apache 2.
Jonathan: Okay, that's a, that's a permissive license, I think, right? Like BSD celled?
Frank: Yeah, I'm, I'm not familiar with all these licenses. There's a whole discussion about licenses I once had when I started a new Java project. What is the best license? It depends if you ever want to make money out of it.
It depends. That's, that's the big question from the start, but it was already there. So this project is not meant to make money out of it. Not the library itself. You can hire me. No, that's not the idea. Yeah, the license is there. We're never going to change that because I heard from, I think, one of your earlier podcasts is, is you have to go back to all your contributors and ask for their approval.
Yeah. Ask for their approval. So we're never going to change that, I think. And I think this, this, this license is free enough for the project that we have.
Jonathan: Yeah. Okay. So the Apache two is a, is a permissive license. There are few restrictions on the use of the code. It is not a copy left license. And there's like this whole flow chart of like what you could do with licenses and what kind of code you can include in other projects.
And not everybody gets it right, which is unfortunate. But yeah, for, for a library like this, honestly one of these permissive licenses is really what seems to make the most sense.
Frank: I think so. Yeah. If you just look around, what others are using. That's what I do within certain new projects for myself is how do others do this?
Yeah.
Jonathan: Okay. I think I know the answer to this already, but is there any support for using the Py4j on say the Raspberry Pi Pico or any of the other embedded targets?
Frank: No, because the Pico is not a Linux system. So yes, it works on the Raspberry Pi zero. The small ones, which are also a full Linux system.
The problem you have there is there is not a lot of memory. It's 512 megabytes, but you can I have Java Spring applications running on the Raspberry Pi 0, 2, the 0. 2, which has, I think, the chip of the Raspberry Pi 4 or something similar. So the chip itself I know it's
Jonathan: 64 bit. I know Yeah, yeah. I've learned that one the hard way, that it's a 64 bit and the early ones are not.
Yeah.
Frank: So the, the, the last recipe by zero is actually, again, a very powerful device, although it doesn't have a lot of memory, but it is very powerful. So yes, you can run Java. And then the Pico is, it is a Raspberry Pi, but this is microcontroller. So it's more on Arduino. Then it is a Raspberry Pi, if I may say so yeah there are projects I know that compile Java to microcontroller codes.
Jonathan: I was going to say we have MicroPython, surely there's a MicroJava.
Frank: There are things like that. But I didn't try them. I should write this down again. That's another one for my, my, for my to do list. It would be really funny if we could just. Make one video as an example of yes. We are running Java on the Raspberry Pi Pico and then see what happens at the Raspberry Pi company.
But yeah, I have no idea what the status is of it.
Jonathan: Alright, so what's coming, what are we looking forward to next with Pi4j? What are some big things on the horizon?
Frank: The big thing will be the move to a newer Java version. So that will make it easy for us to implement new support for yeah, maybe Raspberry Pi 6, although I think that will be the same RPI.
So that we don't, that's the idea I think of, of the, of the company to have this chip now as, as the, the central point of communicating with USB network GPOs, all these things. So that will probably not break. And then just. Seeing what appears as issues for the moment, the main changes are bug fixes like better support for SPI, I2C, some things that were discovered by users, and, and we are lucky again that some of these users fixed the problem themselves.
With a pull request. So that's really, really great. And thanks to all those people. And for the rest, what we are trying to do with the website is we want this website, pubvj. com, to be the starting point for Java on Raspberry Pi. Even if you don't use the library, how to install Java, how to install Java on a Raspberry Pi 0 of the first generation.
Which has a 32 bit on V6 processor, which is an issue. I have to try that out again with the latest operating system because I think there's an issue again there, but I got, I got it working for, for many years. So keeping that website up to date having all the information available there for people to get started, we get.
quite some issues being reported, which are actually returning issues of, I didn't start the right way. So that means that something's missing in the documentation. And that's what I try to focus on is, is keeping these websites as good as possible with all the information. Like if you want to use a Java VIX user interface application on the Raspberry Pi, what do I need to install?
How can I run this? So that's what we want. I'm now working on a J bank script. To update the, the, the wallpaper, the desktop background of the Raspberry Pi that you, that you see the IP number and, and, and which version of Java is installed. Just a little helper thing, but yeah, this exists of course in Python, but.
With Py4j, we want to have this in Java, of course, so let's do this with JBang, and I have it running, I just need to clean it up, commit it, and document it, but those kind of stuff is making developer life easier for Java people who want to experiment with this.
Jonathan: Yeah, so I've got to ask, what was the, what was the craziest or most surprising thing that you're aware of?
that somebody has done with Pi4j. What has somebody done that you've heard about? That's really surprised you.
Frank: We have a few of these on the website. If you go to my English featured projects, I didn't say it well. Uh, Robert von Berg. So he has a company which uses Pi4j and Raspberry Pis. So he has this, this cabinets for the pharmacy of a hospital, and you have drawers with all the medicines.
So if you start picking medicines for a patient, the drawer you have to pick open turns green. You pull it open the box with the pills turns green. And if you put your hand in the wrong box, it turns red. So that's a business use case. But then on the website, we have a cocktail pie. So that's from the same guy who contributed the code for the Raspberry Pi 5.
He has a cocktail maker, which is based on the Raspberry Pi. We have a street artist robot. So a robot that some street artists is taken with him on his shows. And there are other things. I've built a few gaming examples where you have really have a joystick. And then a game created with Javavix and NavigGL, there are different things but I do invite people who have created stuff with Py4j, let us know and if you have some videos or, or, or.
Pictures. We are more than happy to add them to this, to this section of the website.
Jonathan: Yeah. All right. David, is there anything you want to get in before we actually wrap?
David: I am reading through these featured projects. This is pretty cool.
The jukebox,
Frank: the jukebox for instance, it's just, and that's, that's what's happening in the, in this maker space. Hey, you, you. Upgrade an existing old radio or a television and make it something new. And Raspberry Pi is a really great device for all those. And in some cases people use Java and Py4j to make something nice of it.
And that's like the Pi jukebox.
David: So I You mentioned your connection with trains and I also have been a model Railroader in the past and a real fan. So it seems like a project for the future is going to be Running a model railroad on a Raspberry Pi using Java.
Frank: That would be really, I think I saw a tweet of someone using a Raspberry Pi Zero A train, a model train with a camera to have a front facing camera and live stream.
So yeah, why not put Java on it and have some control over the lets and then the button on the website to turn them on and off. Yeah,
Jonathan: it's, yeah,
Frank: definitely.
Jonathan: So we actually have a question from, from the YouTube. from the YouTubes. We don't usually get questions from there, but I see it. Ozcan asks for open source projects, are there any rules that you really care about, like to keep the community positive and productive?
Is that, is that something that you guys have run into? Do you have any, any of those community rules?
Frank: We don't have a rule based, we don't have a rule written down somewhere. I, I find the community pretty friendly Java community. Definitely. I don't know other ones, but I only once stopped a discussion on GitHub on an issue where someone says.
I really need this. You have to fix this. And that's not how it works. Sorry. And that's what I told him. It's, this is not how open source works. If you really have an issue, then please hire someone. If you cannot fix it yourself,
Jonathan: I will be glad to fix that for you. Here's my hourly rate.
Frank: Yeah, you could also interpret it like that, but yeah, sorry, this whole Py4j project is a pet project for everyone involved.
We don't make money out of this. I, I get money for writing articles about it for some magazines at one euro cent per letter. So it, it, it, no, I don't earn money out of it. Sad, but true. So we have, we luckily have a bit of support from this, from this university. Because they really need updated docs and that's the only support we have in this project.
And that's with all projects, with all open source projects. Maven. I talked a few times about it. Maven is a built tool in Java to build your application. It's, it's how libraries are distributed. It's how the whole Java system runs on Maven. And there are four main contributors doing this. next to the job.
And that's, that, that's what's a returning problem with open source. You know, this, this, this this, this cartoon with a lot of blocks stacked on top of each other, and then one little block at the bottom. is holding up all the rest. And there's one contributor and it's an illustration of the open sources.
And I'm happy that you looked into the contributors of PI4J and said you have 20 contributors. I don't even know. And those are the people keeping a project alive. And I can only ask to people, if you have an issue, yes, we definitely want to help you. We cannot promise And as long as you stay friendly and, and help us find, if you have a problem and, and that those are the issues which are fixed very rapidly.
Someone says, I see this problem. I tracked it down. I think this part of the code could be wrong because this and this and this, and then someone says, yeah, you're right. And we can fix this. And you have the next version tomorrow. That's, that's how things get fixed. But if you just throw something like, yeah, it doesn't work.
On my machine. Yeah. Sorry. I cannot help you. Not always the most
Jonathan: helpful. Yeah.
Frank: I cannot help you. It's keep in mind that people doing this. Want to help you, but they're really doing this in spare time. Tom arts, who is creating all this example implementation, half of the website is creating has examples of him.
He just has had the surgery and he messaged this afternoon. I'm no. Dragging myself back to my desk to find Raspberry Pi that I can take with me that I can do something for the project. Those are the people working on a project like this. These are the people who really want to get things evolving, but it's in their spare time.
It's yeah. Don't, don't yeah, keep, be polite.
Jonathan: So to, to condense all that down into a single statement, your, your most useful rule is users don't get to abuse the developers.
Frank: Yes. Stay friendly. Stay friendly.
Jonathan: Alright, so I am required to ask two final questions before we let you go. And I know the answer to at least one of them, maybe, maybe it depends upon how you understand the question.
What's your favorite text editor and scripting language? I know what
Frank: you think about the language.
Jonathan: Well, see the, the obvious answer there is going to be Java, but that's a, it's a question of, do you consider Java to be a scripting language, which is kind of a loophole.
Frank: Yeah. And since Java, I don't know which one you had to do two things.
So you write Java code in a Java file, dot Java. Then you had to go through the compiler. Then you get a class file and then you could execute the class file. So you had to do two things. But since Java, I think 11, you can just, just do Java, my file, dot Java, and it will actually do the compilation for you in the back.
And then run it. So as long as you don't have external dependencies, you can just execute a file like that. So all the things I would do in bash or whatever, like going through a list of files and find something. I can do that in Java because that's, that's the code I know. So yes, it's my scripting language.
Sure. And would you bang that? And then, yeah which text editor? I am the guy. I actually did film school, so I'm actually a video editor. So everything I use is graphical. So no, I don't know how to exit film or VI. If I have to, I use nano. And yeah. Intelligent ID is the Java, itd but also Visual Studio Code.
My website is, is in, is in Cohero. So that's something I do with visual studio codes. Mm-Hmm. And those are the tools I use.
Jonathan: Yeah. Yeah. Good stuff. Thank you so much, sir, for being here today was a lot of fun and for me too. Got to learn some about Java on the pie. I've, I've gotta admit, I, I do not have time to do it and so I am very much.
restricting myself to not go in and try to hack together a quick backend to talk to GPIO on all of the different devices. Cause I just, it would, it would very much be a drive by contribution. It would not help you guys very much. So.
Frank: And, but if you make something, send us some pictures for the future projects.
Yeah.
Jonathan: Yeah. There you go. All right. Frank Delport, thank you so much for being here.
Frank: It was a pleasure. Thank you.
Jonathan: All right. So you've already told us that you feel the need to go and make your own little Java based Raspberry Pi powered train set. Whoa,
David: whoa, whoa. You might be reading a little too much into that, but okay.
Jonathan: I mean, I'll have to roll back the tape. I have to feel like that's almost exactly what you said. No, I said
David: it needed to happen, not that I was going to do it.
Jonathan: Ah, I see. I see. So, what do you think? Have we talked you into picking up Java as your next programming language?
David: Maybe? Again, you know, it's that whole copious amounts of free time, you know, that most people experience.
But, I will say that I will not be as excited Automatically negative of job going forward, as I have been to this point.
Jonathan: Oh yeah, indeed. Indeed. So Frank has his evangelism has made a little bit of progress there. Yes, absolutely. Oh, alright. Yeah, no, it's cool. And I love to see people sort of thinking outside of the box.
You know, the box that I would put them in. And You know, if you had asked me a couple of weeks ago, what about Java on the Raspberry Pi, I would have thought it was a bananas idea. And now maybe it makes a little bit more sense. And obviously there are people doing it! Doing cool stuff with it. Love to see it.
Love to see it. Alright anything you want to plug?
David: Ah, the only thing that I would plug is something and I actually plugged it on ULS, so I'll plug Twit, the Twit Network and the Untitled Linux Show, but check out the Zen Browser if you've never heard of it. Ah, yes. It, I've seen several people talk about how Arc, the browser company, they really love its simplicity and features and everything.
But the com, the Arc browser. Company went a different direction and Zen is out there trying to fill that niche and they are based on Firefox and they're open source. So I would say go check out the Zen browser.
Jonathan: All right. Appreciate you being here, man. Thank you for stepping in at the last minute.
David: Glad to do it.
Jonathan: Yeah. All right. So as far as my stuff, of course, I'm going to plug Hackaday. We appreciate Hackaday being the home of Floss Weekly now. We've also got my security column goes live Friday mornings. And then there's some other Hackaday stuff that happens for me from time to time. Just keep an eye out for that.
Do check out the Untitled Linux show over on Twit. And as far as next week, we don't have a guest yet. So if you want to be on the show or know somebody that should, you can let us know. Either tag us on the socials or you can send an email to floss at hackaday dot com and that'll get to me and we can get people scheduled.
So sure, appreciate it. Thank you everyone that was here, caught us live and those on the download. And we will see you next week on Floss Weekly.