Foojay Podcast #96: Local AWS Development Without LocalStack: Meet Floci, the GraalVM-Powered Alternative
CloudPodcast

Foojay Podcast #96: Local AWS Development Without LocalStack: Meet Floci, the GraalVM-Powered Alternative

What if you could run 35 AWS services locally in under 25 milliseconds, using just 13 megabytes of memory, with a single Docker command and no cloud bill? That’s exactly what Floci does.

In this episode, Frank Delporte talks with Hector Ventura, the creator of Floci, a free and open-source cloud emulator built with Quarkus and GraalVM native compilation. Hector walks us through why he built it when LocalStack dropped its open-source community edition, how AI tooling helped him accelerate development of new service integrations, the challenges of keeping GraalVM happy with third-party libraries, and the road ahead for Azure and GCP support.

If you’re a developer who wants fast local testing, a DevOps engineer writing Terraform, or a student learning cloud without the cost, Floci is worth a look!

YouTube

Podcast Apps

You can listen and subscribe to the Foojay Podcast on:

Guest: Hector Ventura

Content

00:00 Introduction of topic and guest

01:48 What is Floci?

02:15 How Floci compares to LocalStack

03:01 Why Hector started Floci

04:02 Floci emulates the cloud APIs

05:02 How additional services got integrated with AI assistance

06:31 Meaning of the name Floci

07:07 Why Quarkus and GraalVM as the starting point for Floci

09:35 How Floci starts up very fast and only uses a low amount of memory

12:18 GraalVM can be hard with some libraries or frameworks

14:02 What is needed to use Floci

14:56 The challenges to support AWS, Azure, GCP and finding contributors

20:24 Funding Floci

21:04 How data is persisted in Floci

22:37 Verifying Floci versus the “real” APIs with compatibility tests

23:56 In the future: UI for Floci

25:04 Biggest challenges while creating Floci

25:32 Functionality compared between Floci and LocalStack and migrating

28:15 Feedback from the Floci users

28:58 Long-term plans for Floci

29:59 Biggest surprises during the development of Floci

31:00 Best use-cases for Floci

32:12 In the next releases…

33:31 How to get started with Floci

35:00 Conclusion

Transcript

Automatically generated from the audio, so it can contain errors in names and technical terms. Suggest a correction.

[0:00] 24 milliseconds, 13 megabytes, 35 AWS services, and all of that with one Docker command. That’s Flossy. Welcome to the Foojay [singing and music] Podcast, all your news about OpenJDK. Hector Ventura published an article on Foojay.net that caught my attention. It introduces Flocky or Flossy, an open source AWS emulator that he has built himself using Quarkus and GraalVM native image. The numbers in the article are remarkable. 24 milliseconds to start, only 13 megabytes of memory at idle, and support for more than 35 AWS services. No authentication token required, no account, no telemetry, just a single Docker command and you’re running. Hector is a new Foojay author and this is his first Foojay Podcast appearance. So, Hector, welcome here.

[0:54] Can you start by introducing yourself and telling us a bit about your Java background? I’m originally from Dominican Republic and moved to Texas 6 years ago. In my background on Java, I started 20 2008 coding Java with a friend that was teaching me and a friend of mine as well. Since that time, Java got my attention. And also follow those companies that contribute to Java like like Red Hat with Vertex. Quarkus and other technologies like I did the scene. I was also coding on Java and using those those technologies. I am one of the first committer to Quarkus as well. Was not good with documentation but I was using since the beginning. I believe on that technology and now we are using that on Flossy. And then Flossy, what is the idea behind Flossy? Flossy is a emulator, local emulator for Amazon but we are working in others emulators. So, I would say Flossy is a cloud emulator generally for Amazon, Azure, and GCP Google. I think it’s it started as AWS and then the others joined later, yeah.

[2:14] How do you compare it? I know that’s for instance LocalStack is also something like that. It’s also an AWS emulator. What’s the difference? Yeah, LocalStack is just a Amazon emulator. I used LocalStack a few few years ago, but for me it was too slow. Mhm. It’s going Python, but then I started doing some labs like I grabbing from Amazon SDK and try to simulate by myself those those services, but that was heavy. but then I saw that they are archiving the project and moving to a pay license. I said, “Now this is the time to get something done and using the right tools.” The goal is to emulate an AWS environment. was it something you needed for yourself? Did you start building it because yeah, you wanted something better?

[3:14] Yeah, I started coding by myself because I feel the pain when run a couple of time LocalStack locally Mhm. for myself. That was not That was not something that the community was asking for. It looks like the community was happy with the that we have at that moment, but I feel like that. So, I started doing that. And something that pushed me to move forward was the LocalStack announcement. And at the first Flossy version that I opened at the moment when I pushed it the GitHub was up in my personal problem that was like a five minimal services like SQS, Dynamo and others. So, what you’re actually are simulating are the APIs so that I can test my application towards how I interact with these services?

[4:11] Yes, it’s basically creating an environment that you can use the same library that Amazon provide to you to instead of connecting to Amazon directly that you need to pay for, it will be take time to set up and everything. With a single command line execution, you get that environment running for you and you can really really your SDK. That’s That’s that is not something that I have done. That’s something that belongs to Amazon, right? The SDK. and we connect to that service, in this case Flossy, and Flossy simulate and we try to keep the parity between Amazon Flossy. Yeah. For some services like a databases, RDS, we use Postgres to keep the parity 100%. Is that you started with you made it public with five services because that was solving your problem? How long ago is that? How long have you been working on this? I was working in the in Flossy like eight years ago, but I was not making too progress because I was intersecting the request from SDK and trying to look into the XML, JSON files and everything.

[5:27] And tries to convert those into controller that do the response. That was a hard work and then I said, “Let me try to use AI to combine my idea and that accelerated process. I can fully agree that if you use AI in a well-structured project that you set up yourself, that you can indeed make a lot of progress if you describe your problem and use it as a pair programming Yeah. colleague, for instance. Is that a bit the same thing you do? Yeah. Yeah. I know that people say by coding, I don’t want to use that word by coding. it’s more like an engineering tool that we use. It’s your co- partner to guide you how to You guide it and sometimes they I give you some feedback based on that. But sometimes you need to say, “Hey, that’s the things that I want. Don’t Don’t move in that direction.” Yeah, and not in that direction.

[6:29] [laughter]

[6:29] Yeah. Indeed. by the way, Fluffy, the name, where does it come from? That comes from floccus cloud. they are I learned, when I was looking for the name, about clouds. So, we got I got the name cloud. Okay, this is something that needs to be related to cloud. And let me look something similar. And then I found like a five, 10 types of clouds, and that was the one that catch my attention. Yeah. Yeah. Yeah. It’s a good name. It’s a good name. It Yeah, it keeps sticking in your head. you base it on Quarkus and GraalVM. Is that because those are two things you already knew well and you had to use? I’m [snorts] curious. I love Java. But I’m not I’m not used to the common library and framework. I like to look for something better, faster, less less less resources intensive, like a Quarkus.

[7:37] But yeah, Quarkus Quarkus use on that toolkit that was using before, Vertex. And I create a couple of projects using that library. so, Quarkus, Vertex, Red Hat, that was the line that I followed since the beginning. You combined them in a very nice way. what advantage do you get from GraalVM if you compare it to just the normal Java runtime? Quarkus is doing a great job in speeds and boot time for the application. Even if you are running the application directly in the JVM, Mhm. is faster than many others application in another Mhm. framework. But when you combine Quarkus, because it’s cloud native, if you go to the Quarkus web web page, you’ll see that it’s cloud native. So, since the beginning when Quarkus was designed, was with that on mind, to compile to native.

[8:46] So, also something that make me go straight to compilation natively is that we don’t depends on another JVM. We don’t depends on another application to run your tool. And very small, I think to integrate it also in unit tests or system tests.

[9:05] Yeah. Continuous integration, continuous deployment, yeah. Yeah yeah You had this experiment with Quarkus, did you compare to Micronaut or Spring or any others framework? I work on using Spring a lot. But personally, I prefer Quarkus because as you mentioned, I compared those two. I haven’t compared with the other, but I compared those two. Quarkus is faster and less resources intensive than Yeah. yeah, less resources. We already mentioned some numbers, so you have this 24 ms startup, which is ridiculously fast, 13 MB of memory when idle. Of course, it’s not running complete cloud environment. You’re simulating the APIs, but still 30 MB, and you have 35 emulated services in there. That’s quite quite impressive.

[10:01] What was the hardest part to keep it so small? I think is to make a tool that run fast, right? Not with the boot time. Mhm. Is there also when we are downloading the image from Docker Hub. but about about speed is that when we are coding, developers are always like desperate. We don’t have time. Mhm. When we want to test something, we want to see result quickly to iterate on that.

[10:34] Yeah. But the challenges that I had a couple of services that require external libraries. we need to we need to make the library happy with the GraalVM, so GraalVM can look in internally and transcode that to binary. I had couple of challenges with couple of libraries. Yeah. sometimes we keep I spend days looking the right tool, the right library. like another alternative to some of the services to make Flossy keep on the same line. Yeah. I have another challenge is the we have a service on Amazon named Athena Mhm. that require to get documents and parse the document and do query on top of the document. Yeah. So, I was trying to get that the library included into the base image of Flossy, but that was adding like a 45 MB. Yeah. And I said, “No, I don’t want to add more megabytes to my image.” So, we create another project.

[11:39] It’s named Flossy Doc, because it’s based on Doc DB. and people that need it, Flossy automatically will be pulling that image for you. So, we don’t we don’t have the 40 megabytes always. Just the people that need it will pull it. Yeah. And that’s probably an approach you can repeat if you have a similar use case where, yeah, you have a big dependency and you only few people need it. Yes, that’s the base. I have other cases like that and I will repeat the same Yeah. scheme and the same pattern.

[12:15] Yeah. Yeah, makes a nice nice nice approach. yeah, you said yourself you had to look for some libraries which are easy to integrate in GraalVM. That’s something I keep hearing from people who use GraalVM and native images. That’s the hard part. Finding Some of these libraries or frameworks don’t combine really well with compilation to native. Any any specific problems there? Yeah, for example, in the project I’m working on right now, the GCP, I’m trying to use the same entities that Google use for GRPC. so, I’m trying to use that, but it’s not it’s not playing playing nicely with Quarkus GraalVM. so, I find another alternative using this the protos, the same protos that they used to get that compilation. I will try to use that.

[13:21] It’s more compilation time, but it will we’re the system keep small and compatible natively as well. Yeah. Yes, so you’re you’re moving some of the time-consuming stuff to compilation time. So it doesn’t need to be repeated when the application starts. Exactly. Yeah, correct. But were there some things you had to avoid that simply didn’t work in this native image? no. I always find we find always a solution not the right solution or the solution that we want to apply Mhm. but we got something working. And those impressive startup times and low memory, is it something anyone will benefit from? Does it work on any Linux system or Mac or do I need special environment to do this?

[14:16] Well, we just need Docker to get this working, but also we’re planning to distribute this to like normal binary as well. Because we need Docker for those services that require Docker. For example, the one that I mentioned for Athena, they use Docker to be. In that case, you require to run on Docker. But for other scenarios, for other tasks, you can use just the binary and run that in any platform because we compile to Mac OS, we compile for pre-Windows, we compile for Linux and all of them will be happy with the running. You mentioned AWS and Microsoft and Google. Now, they all have a massive amount of services, a very big catalog of services that you can pay them for. All these APIs also keep evolving.

[15:11] Will that not be a very big struggle for you to keep Flossy up to date? Yeah, and I think that’s the main part that I didn’t pay attention at the beginning for Flossy, the Amas, the Ash, the Amazon emulator. But then for the others too, that’s on Cedar I have in place. For example, for Azure, we are using the API specs from Amazon from Azure, Microsoft in this case. From Google, also we are using the specs, the proto that’s the proto booth schemas. So, anything that they change there would be inheriting that automatically. Yeah, yeah, yeah. for Flossy, we are interacting with couple of Amazon developers on the SDK. And they have something named Smithy. That’s the library that they use to create all the services, entities, and everything. So, as soon as we get that included on Flossy, any change that Amazon do on the services also would be that would be will benefit about that as well.

[16:22] Yeah, yeah. So, you’re actually have a live connection between how their data model looks like and how you implement it in Flossy. Yes. Yeah, yeah, yeah, yeah. How accurate does this emulation has to be? Is it one-on-one the same thing or do you just yeah, try to keep it as good as possible so that it works for testing and evaluation purposes? Yeah, I won’t say it would be one-on-one, but we keep we trying to keep the parity the most close as possible. Mhm. So, developers when they are coding a system and they need to move to the real life, right? To the cloud, they at least get something working. They could They can find some bugs, right? And that would be And that’s the kind of feedback that we receive. Hey, I was using Flossy when I push it to production find this. So we say, “Okay, let’s try to resolve down Flossy as well.”

[17:24] Mhm. Mhm. Won’t errors that they find, won’t that be related for instance to timing issues? Because yeah, calling a real service could go faster or slower than than just running something locally. Isn’t that one of the big problems, timing issues? Yeah, racing condition, yeah. We find a couple of those as well. We need to sometimes we need to like some sleep line into our services because they are too fast as well. Mhm. Mhm. running Flossy. So that’s something that we need to implement a couple of time. don’t you risk burning out yourself while trying to keep up with all the changes and the new services? yes, this week have been hard. Mhm.

[18:11] When I see the when I see the issues number growing growing that was something that would keep me it’s a stressful. Mhm. I’m learning I’m I’m learning how to handle this. Mhm. I’m trying to get couple of maintainers for the projects. I have couple of candidates already. So I want to motivate them to operate but it’s a stressful for sure.

[18:41] Yeah. Yeah. Yeah. Yeah. I can imagine. is it Yeah, it’s it’s your project. Is it a solo project or do you already have contributions from others? I have contribution for others. I mean, we have 100 109 contributors already.

[18:57] Yeah. on Flossy. Asher Asher, we are just two. Mhm. Google GCP is still not open for the community. I’m I’m trying I’m trying to pull all the common interfaces and classes for the others repo to create a GCP but in the in Flossy the Amazon one we have 109 contributors. That’s in it already a big group. yeah, you posted about this on Foojay. I also saw some other articles where it was mentioned or you were interviewed. So you got quite some attention. It looks like you found something that people really need and are looking for, correct? Yeah. Yeah, I think it’s timing. Mhm. The when I opened Flossy was the time was perfect. Mhm. I opened March 15. Mhm.

[19:56] And local is that I cut the project 24 I think was. Perfect timing, yeah. I went to Atlanta for the DevNexus Mhm. this year and I was there with my computer open the whole day. I was in a conference technology but I was coding because I need to accelerate the process.

[20:19] Mhm. Mhm. Yeah, right timing. You did it at the right time indeed. You started this as as a personal project. You have now these these many contributors. Any kind of funding sponsorship that you get for this? No, not yet. that’s something I’m looking looking for to get some funding. I opened the GitHub button to get funding. Sponsorship. The sponsorship, yeah. So I’m I’m working to get something on the Flossy webpage to attract some some sponsor but not nothing at the moment. Mhm. Okay. Let maybe with this podcast we can help a bit.

[21:01] [laughter]

[21:01] Let’s see what happens. so you mentioned about storage. You also use PostgreSQL for storage. Yeah, I can imagine that some services need to store things. How do you do this locally? Do you have Do you use some kind of file storage or is it all in the database? Yeah. when I was using LocalStack, there were a couple of feature that was not available for the community. Mhm. for example, a storage. When you are doing some task and you spend 1 hour working on that and then your computer restart or your container die, everything get lost. Mhm. When I was the first feature that I added to Flossy, if we go to the first PR, was the storage mechanism. So, we have four storage mechanism on our Flossy that didn’t exist for community on LocalStack was the memory, that’s the same that they offer. We have persistence and we have highly and we have something named UAL.

[22:09] It’s right ahead of locks like the same way that Postgres is doing. It’s faster, we keep the data safe, if your computer restart, if your container die, when you start we will be having your whole data there and you can proceed with your task. Mhm. So, if I have a running environment, I do some tests, I use this, I shut everything down, I restart it, it will actually start with all the data still in place.

[22:36] Yeah. Yeah, yeah, yeah. Yes. How do you verify that what you are building actually works the same way as what AWS and the other providers are providing? Yeah. Flossy and the others cloud emulators Mhm. we in the same project we have something named compatibility test and we are using the same SDK that Amazon provide for many languages. We have for Java, Python, Node.js, Rust, Golang, but also we have infrastructure tools like a Terraform and Open Tofu to validate that provide the correct interfaces. Can I use Terraform to set up a Flossy environment, or is that not the goal? You can use Terraform. We provide You need to get Flossy started first, and then you say Terraform, “Hey, let’s create this infrastructure.” Like you are connecting to Amazon. You can create EC2 instances, you can create Lambdas, you can create databases, and everything. So, for those students that wants to start learning about cloud, they don’t need to pay for an account. Then they can just pull Flossy and do their labs locally.

[23:55] Mhm. And do you have some kind of UI to see what is running inside that Flossy environment? We have one UI. and today morning I had a call with a team. they are five guys that were trying to create something awesome. Mhm. So, we’ll be creating a single UI that you will you can look for all the clouds provided that we’ll be having in that single UI. And also some providers on no or not providers local application like mine basically inject everything into the same binary. I don’t want to grow Flossy. Also, that UI will be like a side car. If you need it, because if you’re running some tests on GitHub Actions, you don’t need UI.

[24:45] No. No. Flossy should be minimum. Any idea already what they will be using for the UI? It will be a web browser. Mhm. Yeah. It will be a web application. Looking forward to a new Foojay post black post where you illustrate this and show this. In all the services that you emulated, which is the hardest one? I think Amazon Azure. Yeah. Azure because of Cosmos. Yeah. Cosmos DB, that’s the most challenging one. Cosmos is a service that have different protocol, different databases. As the name said, it’s a cosmos. So it’s a it’s big. It’s big. Yeah, it’s too much. Yes. If you now compare Flossy and LocalStack, are they comparable? Do they provide the same services and tools?

[25:42] Yeah. Yeah. They provide the same services. But you need to go but most of the services that provide you need to go pay. Mhm. Right. You need to pay you need to pay subscription to get that. And Flossy offer that for free. Yeah, okay. So if people are using LocalStack, they can just move to Flossy and they will get started really quickly? Yes, quickly. Quickly. [laughter] I like that. Yeah. Is [clears throat] there Is there a page on the website to describe how you should move or is it just check the documentation you will find it without problems?

[26:25] No.

[26:25] [clears throat]

[26:25] No, we have a migration Mhm. page dedicated for that. Yeah, okay. Yeah. So I’ll add this a link to the in the show notes to that page and of course also to the website and the repository and all that stuff. Are there some services that you decided I will not add them to Flossy because not used, too difficult, whatever? Not at the moment, but we have decided to create services that are just the API. Mhm. No actual behavior. For example, we have one name Bedrock. It’s a It’s a Amazon AI service that provide API to for AI. So, we are just creating We are just creating the endpoints and as a stoop, but we are not providing AI No. No. No. That’s not the goal, I guess. And like for instance, an email service, if I send an email through an API on Flossy, where does it end up? We have endpoints for developers when you when this is the e SES service. Mhm. You send the email that will be stored and you can pull it with a endpoint for developers that we provide. The UI will be providing something that you can look at that Yeah. Yeah.

[27:47] Yeah. So, the email is not actually sent, but it’s just stored in a database as this is an email that was handled. You can send that. We provide a interface. We can provide a interface like a MS SMTP. We provide the user, the server, and the user and password and that will be sent it. If you want to see like a real email in your Gmail. Yeah. Okay, so there’s quite some configuration and logic in there even, huh? You said you had quite some issues already and tickets that are created or these mainly bug reports or feature requests or what do you receive?

[28:26] Both. Both. Yeah. And are you happy with the requests? Do they show you that you’re on the right track with Flossy? Yeah, happy with that. and I think that’s the that’s the kind of feedback is making Flossy bigger. Mhm. That means people are using it. I bet that they are finding bugs, But I’m happy that they are reporting and they believe Flossie will solve it and they will proceed with it with the integration that they are doing. So, yeah, a lot of things to solve for you, a lot of issues. It’s also a free open source project. How do you plan to keep that sustainable in the long term? I don’t know.

[29:11] [laughter]

[29:12] I don’t know.

[29:14] That’s a challenge, yeah. I got couple of emails companies that are in interest to talk about Flossie. Mhm. because they saw they use case, they saw the community growing and they see that this is have some potential.

[29:34] Yeah. Yeah. Yeah. And I do as well, but I don’t know what will be the way to benefit this. I like I love open source and I will try to keep this open open forever. Yeah. Yeah, because if you make it a paid service like LocalStack, then you’re actually back at the beginning with the initial problem, yeah. what surprised you when you were developing this? How many services AWS has or what was one of the biggest surprises there? Yeah, when I start coding Flossie, I was trying to solve as I mentioned the problem that I had with couple of services. Mhm. But then I said, “Okay, let me see how many services Amazon provide.” I was on shock because the amount of services I said, “Okay.”

[30:26] [laughter]

[30:27] But yeah, those five services that we start are the most common services

[30:32] Mhm. Mhm. for most of the developers. Yeah. I don’t know if anyone at AWS themselves knows how many services they have.

[30:41] [laughter]

[30:41] They are like 267 services.

[30:44] Yeah. Yeah. And yeah, the question is how much of them are actually the most used? That’s probably I think you find that back in your issue list is if people start requesting for a new one, then yeah, that’s one which is which isn’t used. What is the best use case for Flossie? For me as a solo developer or in a team or to handle the CI CI/CD pipelines and tasks of a whole team? Can I use Flossie in all those cases? Yeah, Flossie is for developers that need to interact with Amazon services. It’s for DevOps. It’s for infrastructure. It’s for CI, testing. all those cases would be a good fit for Flossie. Have you seen some use cases you were not expecting? Yeah, I saw one that asked me about if they can use that on production. I said, “You can use it, but I don’t recommend it.” Yeah, [laughter] I Yeah, if so most of these services really act as the real thing, then yeah, you can probably use it in production, but not recommended. Not recommended, yeah. We can In future, we can I don’t know. We can see how where we can get for production. [clears throat] But that was the intention for Flossie.

[32:07] It’s It’s on the other side. It’s on the development side and on the testing side. Okay, what’s next? What’s on the road map? What can we expect tomorrow, next month, next year? Next Next week or next weekend we’ll be having GCP for the community with the basic with the basic services as well as I did for Flossie. We’ll be like a five, six, seven services. I will try to get a maintainer for that project. So, taking more responsibility, I can get concentrated on Amazon. Mhm. The next move that we’ll be doing is trying to take those common classes and libraries from the three cloud and create like a pattern library that we can maintain and all them benefits. We are thinking maintainability.

[33:02] I will keep talking to the Amazon developers. they are very enthusiastic with that conversation we’re having. I’m happy with that and I appreciate their time to make Flossy the Amazon emulator maintainable for the future. Yeah. Yeah. That’s That’s the goal. We are not like adding too much services. We’re trying to make the development experience more simple and easy. If I want to start using Flossy, where should I start? Go to the website, go to the GitHub? Where can I find the best documentation? Of course, the article of Vijay, but what’s the others link I should follow? Yeah, I think the flossy.io Mhm. will guide you right away, have a quick start, and will get to you to the documentation. Mhm. but anyway that you move, you go directly to GitHub, you will find that quick start already there as well. The only remaining thing is for people to start using it, correct? Yes, start using it, go to GitHub, and do a and start to the project, open issues, or open PRs if you’re interested.

[34:16] Or contact you if they are very experienced in Google Cloud Platform, want to help you with that, the maintaining of that library, same thing for Azure. So, people who want to help you in the development, in the testing, maybe sorting the issues, see what’s most urgent or what is actually critical thing people things like that. Can people help you with that kind of stuff? Yes, for sure. And also contribution contribution sponsoring. That’s the most important part. Yeah. That you can find some more time or reserve some more time to work on this and make it even better than it is already. Okay, good. thanks a lot and that’s wrap for this episode of the Foojay podcast. Thank you Hector for sharing the story behind Flossie and for building something that is this useful and giving it away for free although you’re asking for sponsorship and I totally understand that question. it’s a great example of what someone can do who is motivated, who is a Java developer, who knows the tools and actually has yeah, a problem that you want to fix for yourself and then contributed back to

[35:29] The community. If you enjoyed this episode, then please subscribe to the Foojay podcast on YouTube or in your favorite podcast app. You can find all our episodes, show notes and links to the resources mentioned today on Foojay.io and don’t forget to follow Friends of OpenJDK on social media for the latest news and updates from the Java community. Until next time, keep coding and keep learning and if your cloud environment still takes more than 24 milliseconds to start, then you know where to start with your next project and experiment with Flossie. Thanks for listening. Give me a foo, give me a j, give me the friends of OpenJDK.

Found a mistake, or something to add? Edit this page on GitHub

Written by

Frank Delporte

Frank Delporte is a Java Champion, Java Developer, Senior Technical Writer at Azul, Blogger, Author of "Java Programming for Raspberry Pi - A Hands-On Guide to Electronics and IoT Projects", and Open-Source Contributor for Pi4J, Lottie4J, Sheetmusic4J, …

Written by

Hector Ventura

I'm a software engineer with more than 10 years of experience. Developing software based on Java, SpringBoot, and Java EE. Also, involve with new Java frameworks like Quarkus and Vertx.io.

Related posts

Join the discussion