Reducing The Friction Of Embedded Software Development With PlatformIO - Episode 251

Summary

Embedded software development is a challenging endeavor due to a fragmented ecosystem of tools. Ivan Kravets experienced the pain of programming for different hardware platforms when embroiled in a home automation project. As a result he built the PlatformIO ecosystem to reduce the friction encountered by engineers working with multiple microcontroller architectures. In this episode he describes the complexities associated with targeting multiple platforms, the tools that PlatformIO offers to simplify the workflow, and how it fits into the development process. If you are feeling the pain of working with different editing environments and build toolchains for various microcontroller vendors then give this interview a listen and then try it out for yourself.

Do you want to try out some of the tools and applications that you heard about on Podcast.__init__? Do you have a side project that you want to share with the world? With Linode’s managed Kubernetes platform it’s now even easier to get started with the latest in cloud technologies. With the combined power of the leading container orchestrator and the speed and reliability of Linode’s object storage, node balancers, block storage, and dedicated CPU or GPU instances, you’ve got everything you need to scale up. Go to pythonpodcast.com/linode today and get a $60 credit to launch a new cluster, run a server, upload some data, or… And don’t forget to thank them for being a long time supporter of Podcast.__init__!



Announcements

  • Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
  • When you’re ready to launch your next app or want to try a project you hear about on the show, you’ll need somewhere to deploy it, so take a look at our friends over at Linode. With 200 Gbit/s private networking, node balancers, a 40 Gbit/s public network, and a brand new managed Kubernetes platform, all controlled by a convenient API you’ve got everything you need to scale up. And for your tasks that need fast computation, such as training machine learning models, they’ve got dedicated CPU and GPU instances. Go to pythonpodcast.com/linode to get a $20 credit and launch a new server in under a minute. And don’t forget to thank them for their continued support of this show!
  • You listen to this show to learn and stay up to date with the ways that Python is being used, including the latest in machine learning and data analysis. For even more opportunities to meet, listen, and learn from your peers you don’t want to miss out on this year’s conference season. We have partnered with organizations such as O’Reilly Media, Corinium Global Intelligence, ODSC, and Data Council. Upcoming events include the Strata Data in San Jose, and PyCon US in Pittsburgh. Go to pythonpodcast.com/conferences to learn more about these and other events, and take advantage of our partner discounts to save money when you register today.
  • Your host as usual is Tobias Macey and today I’m interviewing Ivan Kravets about PlatformIO, an open source ecosystem for IoT development including a cross-platform IDE, unified debugger, remote unit testing, and firmware updates.

Interview

  • Introductions
  • How did you get introduced to Python?
  • Can you start by describing what PlatformIO is?
    • What was your motivation for creating it?
    • What are the aspects of embedded development that keep you interested and engaged in this space?
  • What are some of the types of projects that someone might use PlatformIO to build?
  • What are some of the common challenges that a developer might encounter when working on embedded systems?
    • What are the additional complexities that get introduced as more hardware targets get added to a project?
  • What is the workflow for someone using PlatformIO for embedded systems development?
  • What are the different elements of PlatformIO and how do they simplify the work of building embedded systems projects?
  • How is PlatformIO implemented and how has the system design evolved since you first began working on it?
    • What was your reason for selecting Python as the implementation language?
    • If you were to start over today what would you do differently?
  • How has the embedded hardware and software landscape changed since you first started work on PlatformIO?
    • How has that impacted your product direction?
  • How do developers handle testing and validation of their applications?
  • How does PlatformIO help with updating deployed devices with new firmware?
  • What have been some of the most interesting/unexpected/innovative projects that you have seen built with PlatformIO?
  • What have been some of the most interesting/unexpected/challenging aspects of building and maintaining PlatformIO?
  • How are you approaching sustainability of the project and business?
  • What do you have planned for the future of PlatformIO?

Keep In Touch

Picks

Closing Announcements

  • Thank you for listening! Don’t forget to check out our other show, the Data Engineering Podcast for the latest on modern data management.
  • Visit the site to subscribe to the show, sign up for the mailing list, and read the show notes.
  • If you’ve learned something or tried out a project from the show then tell us about it! Email hosts@podcastinit.com) with your story.
  • To help other people find the show please leave a review on iTunes and tell your friends and co-workers
  • Join the community in the new Zulip chat workspace at pythonpodcast.com/chat

Links

The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA

Click here to read the raw transcript...
Tobias Macey
0:00:13
Hello, and welcome to podcast, the podcast about Python and the people who make it great. When you're ready to launch your next app or want to try a project you hear about on the show, you'll need somewhere to deploy it. So take a look at our friends over at linode. With 200 gigabit private networking, scalable shared block storage, node balancers, and a 40 gigabit public network all controlled by a brand new API, you've got everything you need to scale up of your tasks that need fast computation such as training machine learning models, they just launched dedicated CPU instances. They also have a new object storage service to make storing data for your apps even easier. Go to Python podcast.com slash linode. That's l i n o d today to get a $20 credit and launch a new server and under a minute, and don't forget to thank them for their continued support of this show. You listen to this show to learn and stay up to date with the ways that Python is being used, including the latest and machine learning and data analysis. For even more opportunities to meet, listen and learn from your peers you don't want to miss out on this year's conference season. We have partnered with organizations such as O'Reilly Media chronium Global intelligence, od sc and data Council. Upcoming events include the software architecture conference, the strata data conference, and pi con us go to Python podcast.com slash conferences to learn more about these and other events and take advantage of our partner discounts to save money when you register today. Your host, as usual is Tobias Macey, and today I'm interviewing Yvonne krawetz about platform IO, an open source ecosystem for IoT development, including a cross platform ID unified debugger, remote unit testing and firmware updates. So Yvonne, can you start by introducing yourself?
Ivan Kravets
0:01:54
Yes. So okay, I've invited Toby. Yes. Thank you so much for hosting me at your party. Yes, my name is Ivan and I am from Ukraine. And I'm the founder of the PlatformIO project, where I currently am responsible for different aspects of this project is the business size, architecture, marketing, and sometimes even technical support. I also feature in the past and spend our 10 years in the web development, the began plus the front end, where I mainly use PHP language.
Tobias Macey
0:02:27
And do you remember how you first got introduced to Python?
Ivan Kravets
0:02:29
Yes, it was 2012 a year. No one introduced me to the Python. I actually moved to the new house and I spend a lot of time for home home automation and use different hardware in the home and I had the problem to manage all these different devices because they use different network network interfaces. And I looked actually for the network during a synchronous framework and Found twisted. And this is actually how I met first and it was at least
Tobias Macey
0:03:06
engine. And have you taken a look at all at home assistant? Or were you involved in the home automation before that what project was even started?
Ivan Kravets
0:03:15
Yes, it was 2012 a year. I don't remember Harry had home assistant this time. But the whole thing which I did in the 2012, it was actually to create the bridge between the hardware and actually the home assistant. And the project was named like smart. And I spent two years for this project. And this is actually the place where the platform IO was born. Because smartphones the product is this is high level abstraction on top on, on the hardware and how my system can actually communicate with the smartphone who uses this API interface and the platform, your worst use here here just to deploy a special, firmer Regards this operating system to the different devices where and developer who will work with smart smartphones the project will actually communicate with that network device. And it doesn't matter which type of network the end device will use that smartphone, emulate one type of connection and one type of interface.
Tobias Macey
0:04:22
And so were you dealing with things like Ethernet and ZigBee radios and 900 megahertz band and all these different types of interfaces that you're trying to abstractly across?
Ivan Kravets
0:04:31
Yes, you're right you're right. So I even I even called my profits Martin like heterogeneous network. So where you can connect different devices, even devices without connectivity, I means that you can connect your work very simple, constrained device through the serial interface. And actually when you will work with the smartphone. You will work with the device which we look for you like a network we can even pin this device we will have special Show addresses device bus. But on the Hot viral liars, this is not an internet networking device.
Tobias Macey
0:05:05
So you had the dubious pleasure of being able to try and make rs 232 usable? Yes, yes, yes, yes. And did you have much of a background in hardware engineering and dealing with these different embedded platforms prior to trying to build this home automation platform? Or is this something that you just learned as you got involved with it?
Ivan Kravets
0:05:26
Yes, this is this is really defining, but I am not an electronic engineer. So I created this but I mean, I found it platform IO, and I am not professional or professional embedded engineer. And I think this is the main or the key success of the platform. I because I done look on the platform yo from this hardware or embedded squarer I don't care if this limits, I look from the perspective where I can build amazing user experience for the developers because when I imagine Before that, I say that I spent 10 years for web development. And when I worked with about tools they look for me are really cool. Because you can press one button, you can do debugging, you can, for example, press the run script, you will receive the result. and if we talk about the hardware about the embedded, this is a really complicated step, even trying to do debugging, you need to know a lot of different couple of complex things, not saying how to configure them, but you actually need to understand how this since work, and I actually with the platform IO learned a lot of things and went to the embed it to get the platform.
Tobias Macey
0:06:43
And so can you give a bit of a description about what platform IO is now and some of the different features that it has and how it helps to simplify the work of interacting with and developing for these different embedded platforms?
Ivan Kravets
0:06:55
Yes, so there are dimensioned before the problem is to Flash or two programs is device the platform IO is the open source tool. And sometimes I even call it like the Swiss knife, because with the platform IO, you could be focused on the code writing. And you can actually just explain platform Yo, what is the type of your heart. And the same when you press run back Run button in your ID to run Python script, the same you do with the platform you press like a platform, please flash this three boards. And before this, you will just expect that from a Oh, I have the bore a it's based on the architecture arm for example, I have the bore be it's based on the architecture is phi, or I have three three boards and circle present is based on the AVR and you ask platformer or please build my protein flesh over this boss and platform IO. Now resolve all this complexity automatically for you so it knows which tool chain to use because he knows it for for this three different architectures, you actually need to use three different tools machines. and if we talk about different frameworks or SDK, you also need to know how to link your software and your project with this framework, you need to write some build scripts are similar to that. But this platform IO, you don't need to do to do this. Because before before adding new hardware or new new development key to the platform, yo, we already provide full detailed information about this device. And we know how to do building how to upload in how to do debugging, or how to do unit testing, or how to decode static analyzing, and different different aspects. Mainly when people work with the platform you they even don't know which tools do we use, or how do we compile code and, and I think this is the best what we could achieve is the platform because now developers companies, they could be focused on the code writing on the getting resolved in days, not weeks, so no need to spend just one week to lower half the programs is bored, or the low long policed data sheets No need to do is is.
Tobias Macey
0:09:05
And so you mentioned that the original inspiration for building platform i o was just trying to solve your own problem of getting all these different devices in your home to be able to talk to each other. And so what was your motivation for deciding to continue working on it and developing it as a product and then building a business around it?
Ivan Kravets
0:09:27
Yes. So the main motivation was just to save my time because platform I wasn't created like the project like the business project, it was the hardware project. And if this is the hobby project, I had, I had a limited time to work on my hobby project lead the smart particle, which I mentioned before, and you know, as a domain motivation was to save my time. So I don't want to spend yet another week to learn how to program yet another hardware. I remember that night was 2012 a year. I think Three different boards on my table and I and I used three different ideas so one one idea to program Arduino board. The second I use our embed today's our embed but before it was embed a project or uses their online ID to programs, this board and the sort I help Texas Instruments code composer studio two programs is a lounge bed orange bed device. So and actually the problem every time and I back to my habit project, I should spend 1020 or 30 minutes just to remember what I did before. Every time I lost the diamonds is was the time on remembers the context of the previous steps on which I stopped. So and the main motivation for the platform was to support hybrid configuration where I can easily add new hardware and no matter on the which type of architecture was this hardware, rebuild or Which which type of framework my projects will be built. So the goal was to to have one universal instrument or two, which will do this work automatically for me.
Tobias Macey
0:11:12
And one of the interesting things that has been a recurring theme and talking to people who start a project as a reason for facilitating a particular hobby is that they never actually end up completing the initial reason that they were starting on this other side project. So for instance, I know that glyph who created twisted, built it because he wanted to have it as a component for building a video game, which you never needed. So I'm wondering if you ever actually ended up finishing your home automation project or if you get too sidetracked into platform IO, and now you've got some half implemented home automation platform.
Ivan Kravets
0:11:46
Actually, I stopped work on the smart article project. And I focus just on the on the platform IO, because platform IO was really small puzzle in the smartphone, and I thought that platform is very good. easy project, but it's it's really complex is already had took its six year or six year or for us and a lot a lot a lot of work. But why I am super, super happy that the platform wasn't started as a business project. And it means that we were not focused on the money. I mean that we, we had a time to talk is the customers we told is the user. I spent a lot of time go into the end user machines where I wanted to learn how users work now, which tools do they use, why they decided to try platform IO, which features are missing the platform and in that this is this first two or three years. They were great for the platform because we could get this market adoption, we finally realized which problems to be resolved and now is Yet another to correct say is another level within the platform. My worry, I go into the enterprise market. And as this experience which we got from the makers, makers world, we are super happy to repeat business enterprise mark, because we need to do the same, you know, is it in the enterprise market, there are also yet another tools and the tools, these tools are different, most of them are closed source, most of them are paid. And actually for the enterprise companies, there is no problem to pay for this tools. And even if our tools are two or three, it's very difficult to convince some managers to use platform you and again you need to need to learn need to understand what is missing the portfolio. I mean, a lot, a lot of forget again for us now,
Tobias Macey
0:13:52
and what are some of the aspects of embedded development that keep you interested and engaged in the space of The developing for these different types of hardware, and what are some of the types of projects that somebody might use platform IO to be able to build.
Ivan Kravets
0:14:08
To be honest, I don't do a lot of embedded programming. today. As I mentioned before I moved from the web world. And in this small developer development developers are mostly focused on the code writing, or the code writing, and semantic because they don't want to spend this hour to get the result. Embedded world is really complex. And every day for me just to improve the user experience, to simplify it simplifies is complex scenes, which I mentioned before, like to change management, these scripts, moving between different cost machines to really decrease the problem. And the last really, really big problem is that the companies which work on the hardware project, the rise the problem for them to find really skilled Embedded engineer. And the goal or the platform IO is to allow these companies to hire just high level professional c++ developers and no need from them to be skilled engineers, I means that if we have some generic generic team, no need to help 100% of super skilled illiterate engineers with the platform Yo, we can have one or two engineers, for example, and eight or 10 just super talented c++ developers who can read API of the operating system or who can lukasik scenes, which is a deed before the embedded rule. What I do there is a would like to be focused just on the code, right and they just want to press some button to the debugging or, or unit testing and they don't have time or and don't want to learn all this complex things, from the embedded sites and in the time Since you first began working on platform I Oh, I know that there's been a lot of renewed interest in embedded systems development and hardware hacking. And there have been different projects that have tried to bring higher level languages to those platforms for at least hobbyist projects, wondering how the overall evolution of the space has impacted the direction that you're going with platform i o and some of the focus that you've put into it as far as what problems you're trying to solve, I think is it the most important what is the most important thing which happened for the last two years the finally semiconductor companies have started looking into the under the open source community. So you see a lot of news where different companies open source their real time operating system is different. The second if you if you take a look at the embedded market, most of IDs are Based on the accolades and today is this cheap vendors they finally realized that the new generation developers they would like to help Samsung much better than the eclipse which has a lot of different features capable for installing new plugins is for expanding and there are a lot a lot a lot of interesting things which change for the six fanatics yes and the SIR problem sorry the sorta things which is very important for the last few years as this is the urban echo system, because you know that before 2017 most of us looked on the early you know, lat like on the natural and open source ecosystem, but you know, that after that time when arm acquired arlena how the problem is Davina today because of their new hardware. They are mainly based on the arm offers, they are new tools, they are fully closed, fully source closed and even paid. So and this is a really big problem for us. Because we spent first three years we like so much Arduino. And we spent three years for the Arduino just to try to improve the second system to provide more advanced tools for developers who needs the more advanced instruments. And now we actually in the, in the stage where we're looking to add more different frameworks to our system. So today, we have support for our 20 different frameworks and is the key and are the you know, this is just a small puzzle in our system today.
Tobias Macey
0:18:41
So for engineers who are building software for these different embedded platforms, what are some of the common challenges that they might encounter? And how does the complexity of dealing with multiple different hardware targets influence the way that they might design and implement their soft software.
Ivan Kravets
0:19:00
So the problem is actually starting from the semiconductor random. So when when you when you start your project with some hardware, the cheap vendor locks, you just was this hardware, because if you go to the website of this ship render, you will seize it this manner recommends using their special tool or ID. And for you it's very the big problem. If you decide to move from this vendor, vendor sakra system to Samsung you For example, if tomorrow there is new MCU, which is much, much better in comparison to the MC, which you used today, it will have a lot of problem issue want to switch to this competitive answer. Because it's the it's the different SDK or different framework. You need to install yet another ID you need to learn how to work with that. And this is this is actually the big problem. And the platform IO is spoolie agnostic to the architecture of the MCU and our customers No need to worry which hardware always bore the use because for them it looks like a change in just a one line in the configuration file. So let's let imagine the same if tomorrow we help the better MC or the better hardware, our customer that will just change this line like my new development kit is something new platform IO please build and you don't need to do any changes your project you can use your favorite ID you can use your your favorite operating system you don't need to move for example today windows if if if a chip vendor supports only Windows you can use you can use any operating system any idea actually have full freedom you personally decide have your development environment will look for you. And what is very interesting is that the only platform to allow developers to use different operating system and work under the same project. So let's imagine the salmon prefer to use Mac OS and Eclipse. The second prefer to use Windows and Visual Studio code and this cert engineer prefer to use command line and V. All of them work under the same project the configuration is located in the one and the one file called platform IO dot and I know as a configuration resolver the platform for example, if you use classic tools, which we have today in the embedded market, the whole configuration is is look is located directly into it. So if you do one change in this ID, you need to ask your colleague to repeat the same like you add new bill flex or you do some change to the debug. You need to explain as a colleague to repeat this step I even done say how many problems you will fail. If you try to move this project to another host machines liens or Kosice BC is a platform my own nose is problem because as I mentioned before, all this problems were resolved with the smartphone because this problems were for this purpose, my profit like a number top of one, because this vision this market, we just explained, what is our hardware, and it doesn't matter which operating system you will use, even car size PC.
Tobias Macey
0:22:24
And so for somebody who is using platform IO for being able to work on one of these projects, can you talk through the overall workflow of getting started and setting it up and specifying what types of libraries you need and the different hardware platforms that you're targeting?
Ivan Kravets
0:22:39
So it's today it's very easy to get started with in bed because you can go to the platform your.or website, we recommend to get started from the Visual Studio Code extension. We have official platform, your extension for the Visual Studio code will just download Visual Studio code, go to the extension section. Search for platform ID press install button. And finish you will see platform your home really nice interface, which will ask you about your hardware, you select your hardware, select your framework with the arlena. And you can start writing simple project line, blink or Hello, similar to hello world. And more flashed, no need to install any two tool chains manually, no need to learn how to write a new script, nothing just just need to be focused on the source code, right. And there is some, some guides how to do embedded development. So it's very easy to the platform.
Tobias Macey
0:23:38
So can you talk through a bit about how the platform IO ecosystem is actually implemented and some of the different components that comprise it and just how some of the overall system design has evolved since you first began working on it?
Ivan Kravets
0:23:52
Yes, sir. It's really good. Good question. So if adult about the smarter smart conference, so the number one reason White pattern was used is the twisted. And if we don't know about the platform, this is a game that is number one number one package or library, which we love so much as this is this is scans or escorts I don't know it is correct pronunciation. So the sconce is super cool. It's amazing. So it could be used like a bill system. So you can use it like the replacement for make or cmake bill system. But the magic side of this counts that you can use it like a library. So this gas is the heart of the platform I owe the whole thing's which we have is the bill build workflow within the platform IO. We do it on the top of the scans, so extended the scans with our interfaces, which we created this unified interface for multiple different development platforms and all and now as this separate development platform we call it like for a VR or for arm or for Architecture, just communicate with the platform your core API and explain Kpop for my Oh, I have this source code, I would like to use this flex to build c++ type files, this flags for assembly files, I would like to do Lincoln process or some system in this way, the upload process should should look in this way. And we call this things like decentralized architecture. It means that if you take a look at the platform, your core is there is nothing in common with this. Any architecture is fully agnostic to any architecture. And you can easily integrate any hardware and any architecture to the platform is no need to do any, any contribution to the platform or your core. From this side. It's very easy to create your own development platform for your hardware and just reuse hope power or the petroleum. And the main benefits is that using this very simple interface, you will just explain it within your development platform have to build in the bargain. And other things and your hardware is automatically integrated into our 10 different IDs, the eclipse Visual Studio code, Qt Scylla. And a lot a lot of that because you don't need to stand again, your time to create extension for this is filler, the disease. If your hardware is integrated to the platform IO, your customers automatically receive this huge list of IDs. Your customer can use any operating system Mac, Linux, Windows, rubies, the even card size PC, your customers can test their product with different continuous integration services. They can use different static tools for static analyzes, they can easily do debugging, even if they don't know how to do Is it because they will just select the type of debugging pro press the login button and they will be the main function.
Tobias Macey
0:26:52
And you mentioned that scans is the sort of core reason that platform IO is built around Python but if you were To start the entire project over today, are there any things that you do differently in terms of the overall design or project focus or the implementation language?
Ivan Kravets
0:27:10
I think our sin of our cinema was done. Correct and, and if even back to the platform, our core history, we haven't had any change in since 2016. So when the architecture which will which were implemented in 2016, will not change today don't they? Don't they want things which we may maybe would like to change? This is the mistakes that they were focused on the avena and today, if you try to talk with someone and you will ask her about the platform i O. Most of people will say yes, we know this is like replacements for the Arduino and amazing tool for for the makers and this is actually the problem. For us because most of people look on the platform i o like for the replacement for Davina, or for the do for the makers. And it makes the problem for us if we try to move to the enterprise market and to have support for this low level frameworks, hardware obsession library and is the case, guys mostly about things, but from adjust only for the makers world, but that is not true. So the I think this is the only one things which our theme for Miss and mistake, I don't know. It was it was it could be really great if we from the first year or this started support, different frames not only are being
Tobias Macey
0:28:40
and so beyond the development of the software for these different platforms, there's also the concern of verifying that what you're building is actually going to work. So things like unit testing, and you mentioned debugging and I'm so I'm wondering what are some of the challenges in the embedded software space for being able To handle those aspects of the software development lifecycle, and some of the ways that platform IO helps in that effort.
Ivan Kravets
0:29:07
Yes. So you know, if you, if you do debugging, for example, if you do the bucket of Python application, this is this is not a so complex technical task, because you do this work on the host machine. But if we talk about the hardware debugging unit test, we should do on the hardware. And you know, that hardware is very constrained, it's very limited, if we could, if we say about the host machine, is a gigabyte of RAM. And, and if we talk about the embedded embedded device, it says kilobytes of RAM, and also sometimes in kilobytes of flash, and you can deploy with some complex the testing framework to this device. And you can do some crazy complex debugging, this is device and in this case, if you try to do this manually It's a little bit difficult because you need to, you need to create some bridge interface to communicate this device. But this platform a Oh, it's very easy because we have some abstraction based on top of the Unity framework and the c++ framework. And you can actually use the same word for which you use which you use for the Python, you can write your unit tests, they look very similar to the Python unit testing workflow. And the same you just press the test button and platform IO will compile your source code, deploy to the end device, gather results, analysis out and just present you some feedback is results on your host machine. You can even do this using part from your remote service. So it means that you can work with your hardware or deploy remote deploy test to a remote device which is not actually connected. Or machine. Let's imagine that you have some device for example a Raspberry Pi a similar to that, you can add some some embedded devices. So the cable or also the Wi Fi, and you can, you can work with these devices from anywhere in the world and you can deploy this unit. So similar to that flashes bought our the this at no need to be connected directly to this device and the benefits of the platform a remote, that you don't need to open any SSH or other ports to your remote machine. But that was the right platform, a broker ensures all these problems automatically for both ends.
Tobias Macey
0:31:39
And one of the other complexities with deployment, particularly in these embedded systems is what happens when something goes wrong. And so being able to prevent that from being the case or for cases where maybe you're trying to deliver remotely over the network where there might be some issues with corruption of the data and transit Or where the network might drop out before the flashing operation is completed and so I'm wondering what are some of the guards that you have in place or some best practices for people who are working in the space to prevent that type of problem from happening.
Ivan Kravets
0:32:14
So is there is there actually like, like to attack two types of a form of flash which you mentioned. So, the first you can flash your device using harder interface devious really USB USB cable or the second option is to deploy firmers through the air like our the air updates. So, all of this operations they are fully different because in the case with with the USB, it depends on the Upload protocol and upload to most of them. Most of them have built in different mechanism, which mechanisms which very File deployed firmer on the target device before flashing, but in case with our the air updates, the end developers should personally implement as this things on the end device. So, the flash which is on the device, it should we split it is minimum into two bars. So, one bank is for for example for the work and firmer and the second bank for the update, which is coming to the hour the air channel. And if you for example, if you mean if the farmer has not been downloaded correctly, you will not change some special flag with your bootloaders a new firmware is ready, it means it if you if you deployed 70% of your fermer for the end devices is not 100% and this format will not be accepted. And it's not it's not a problem and it's this is this is their sponsor. is the responsibility of the developer who will implement these different different different embedded devices requires different approach how to do this.
Tobias Macey
0:34:13
And in the platform IO remote Do you also have a facility for being able to track inventory of the different devices that you have out in the field and the version of the firmware that they're running so that you can see what you have and what still needs to be updated and maybe be able to handle some of those failed deployments by seeing that oh, this still hasn't been updated. I need to retry the delivery.
Ivan Kravets
0:34:36
So bathroom your remote actually Emily's ever seen what you do in your first machine. So if, if you can, let's imagine this is it this device is connected to your machine if you can check from your device diversion or different things you can do is is the same as the platform IO. Mo, this is not like Device Management System. This is actually the tool which allow you to Do the same what you do on your desktop machine. So if you can flash your device or you can connect to the serial port to the end device which is connected to your machine, you can do the same operation with the device which is connected to a remote machine. If you if you provide some information from the serial interface which will return some information about the firmware version, you will receive the same if you if you try to connect this device from the platform a remote
Tobias Macey
0:35:27
and so in terms of the projects that you've seen people build using platform i o What have been some of the most interesting or unexpected or innovative uses of the platform.
Ivan Kravets
0:35:38
So is there is a lot of interesting project built not on top with this user platform. I think the most of the most interesting was me this is this is ESP or and I don't know the correct name, because a lot of interesting projects are built on top of the expressive boredom is the rise this pricing company and it customer in MCU which has onboard Wi Fi, also rice, very interesting project called modeling. So they created a universal fermer. For different different 3d printers. It means that anyone can download their fermer select the type of domain controlling the printer and choose this printer to in configuration and that is also his path is ESP home project. It's very interesting library because it could be used in various home assistance. So installed the home assistant you will use this ESP home library flash your device and you can easily manage your home embedded devices with pharmacies.
Tobias Macey
0:36:49
And in terms of your own experience of building platform i o and working in this embedded hardware space What have been some of the most interesting or unexpected or challenging lessons that you've learned in the process, I think is it
Ivan Kravets
0:37:04
the most interesting things when when we try to add SOP or for some new SDK or operating system, the last time I remember we added support for xfl real time operating system. And it was really a really interesting case for us because Zephyr is based on cmake generator too. And we finally decided to not use static code building it means not to provide static flex 4 million the source code and they actually communicate with cmake generators to and we can provide the same bill bill for for which you will receive if you really use make or other we'll do. So it's really interesting because the final product is it. Find the project is Brother is compatible is the platform IO. And also you can use it with standalone cmake do
Tobias Macey
0:38:06
and in terms of sustainability of the platform IO project and the business that you've built around it, what is the overall business model? And how are you approaching things like project governance so that people aren't driven away by the perception of platform IO, kind of governing the entire process and not really taking community feedback and just the overall community, the ecosystem that you've been able to build up around? it?
Ivan Kravets
0:38:33
was really good question. So we actually we actually had the problem is is because as I mentioned before, the platform i o was a hobby project for me and I didn't think that it will be so so much popular and when I started work full time on the platform, I Oh, it was 2016 year, I hoped that cheap Randers companies they will be interested in things what we do Because our tools are open source, they are free. Developers are super happy. But it was really a wrong way. And I remember the time I even created the post in our community forums and actually asked people what to do next. Because it was the it was actually it was the time where I thought what to do is the platform I go to full time work and again bakla from your like the hobbit Project cultic or continue to work on that. And in Venice in 2017. We added if you interesting features to the platform yo and made them paid. So a lot of people supported us and actually we're super thankful them because they help us to survive. And the previous year 2019 years was really cool for the platform IO we finally made again, platform we are fully open source and fully free Thanks to the Western Digital digital company in the sci fi, so, as they help us to make all the things free even the platform a remote and the second the second part of part of our business model we provide consulting to companies which use a platform to force a project and also the rise new new direction in our in our business. We work so closely with semiconductor companies and health helps them to sail a lot of not only financial resources, but also the time resources because if you cheap vendor and you would like to introduce into the market yet another ship you know, you will need to spend a lot of resources to create yet another ID and to provide interface how to work with this hard normally to take your Six months or even the buzzer, what is the platform where you're with, it can take you days, not even not even not even weeks or months. The previous week, I was done in our social network, really interesting use case where a Chinese company integrated their processors into the platform IO in two days, so two days, and they receive full future at really professional ID as they not only save, save time and resources, they already have a working solution for their customers. So they can personally decide which ID to use which operating system to use. And this is really the great the great use case.
Tobias Macey
0:41:41
And what do you have planned for the future of the platform IO project. So
Ivan Kravets
0:41:46
I don't look on the platform yo like on the project for the one year or two for me platform IO as the project for the years. And my final goal is to see platform IO everywhere. This is similar Similar to the Linux world today alien is the mainstream operating system. This is actually the same so if adult if adult from the end developer perspectives arise the huge problem is this market embedded. Because if you have 10 different hardware on your table, you will need to install them different ideas. Every time you need to switch between this is not matter even even if this eclipse you need to have 10 different eclipses with different plugins and platform IO is unique solution and unique solution for this problems because we can help one ecosystem and one environment among mine development to 4000 different artist MC us and development bores. This is actually they go well, it's not it's not that it's not only the real solution for the developers, but it also divini solution for manufacturers because let's imagine if you if you super talented in Creating new hardware, you actually buy the MCU from chip lander. And you will be in the position where you you will need to provide some interface to program your hardware. And you have a few options. Or you will try to invest in your own software and your own ID. Or you will try to conduct the cheap lander and ask, please, at the support of my custom hardware, do your ID and the last step, it doesn't work. So in the Blackbird platform we have is actually going to be the solution for developers for manufacturers and for cheap vendors too, because all of them will be focused on the one software to for this hardware products.
Tobias Macey
0:43:48
Are there any other aspects of the work that you've done on platform i o or your experience of working in the embedded hardware ecosystem or any of your overall experience? In general of building and maintaining an open source project that we didn't discuss that you'd like to cover before we close out the show.
Ivan Kravets
0:44:07
No, I think our cities colored. All right?
Tobias Macey
0:44:09
Well, for anybody who wants to get in touch with you or follow along with the work that you're doing, I'll have you add your preferred contact information to the show notes. And with that, I'll move this into the pics and this week, I'm going to choose a brief article that I read recently about some research being done at the University of Massachusetts Amherst, about being able to harness electricity just from the humidity in the air by using these protein nano wires connected up to an electrode. So some pretty remarkable work being done and pretty exciting to think about some of the different ways that it can be applied. So I'll add a link to that in the show notes. And with that, I'll pass it to you, Yvonne. Do you have any pics this week?
Ivan Kravets
0:44:46
Yeah, so I actually would like to share on my short experience at the platform IO. So I think that the one really great advice advice from my side is to not to be strictly focused on the Money side of your project is you started to work on that. Because business is this, this is not about the money. This is the about the processes about the management of the processes. And the minus is actually the mark of your of your results. And if you try to work on your own project, I would really recommend to contact with every everyone customer go to their machine using remote tools, learn more, which competitive tools is the use, ask about why does it use done things that you will waste this time this time is very valuable. Very, very.
Tobias Macey
0:45:38
All right. Well, thank you very much for taking the time today to join me and discuss your experience of building and maintaining and using the platform I project and working in this embedded hardware ecosystem. It's definitely an interesting and challenging space. And I'm glad to see that there are people like you who are out there trying to make it simpler. So thank you for all of your efforts on that front. And I hope you enjoy The rest of your day.
Ivan Kravets
0:46:00
Thank you so much for your time and for the invitation. Thank you.
Tobias Macey
0:46:07
Thank you for listening. Don't forget to check out our other show the data engineering podcast at data engineering podcast.com for the latest on modern data management, and visit the site at Python podcasts calm to subscribe to the show, sign up for the mailing list and read the show notes. And if you've learned something or try it out of projects and the show then tell us about it. Email host at podcast in a.com with your story to help other people find the show please leave a review on iTunes and tell your friends and co workers
Liked it? Take a second to support Podcast.__init__ on Patreon!