You can view all of the show notes for every episode at http://podcastinit.com?utm_source=rss&utm_medium=rss
Brief Introduction
- Date of recording – Apr 21st 2015
- Hosts – Tobias Macey and Chris Patti
- Overview – Interview with members of the Kivy core development team
Interview with Kivy Core Developers
- Introductions
- How did you get introduced to Python?
- How did the Kivy project get started?
- What made you choose Python as the basis for Kivy?
- What were some influences on and inspirations for Kivy’s design?
- One of the amazing things about Kivy is that it’s comparatively simple to learn and get started with. Did this ease of use occur by design or accident?
- What were some of the biggest challenges to designing or implementing Kivy?
- If you could start the project over, what would you do differently?
- What are some of the most interesting things you’ve seen Kivy used for?
- What are some changes/features that you are particularly excited about for the future of Kivy?
- Are there any platforms/operating systems that you are trying to add support for (e.g. Sailfish OS, Ubuntu Phone, Firefox OS)?
- Is there anything in particular that you would like to ask for our listeners to help with?
- Google Summer of Code – If you didn’t get accepted, DO it anyway!
- Start small – documentation fixes
- Fix issues
- Huge backlog – help answering questions
- Maintainers for subprojects – like PyJnius
- Sponsors – Kivy core team looking for new hardware
- Increase unit test coverage
- If you find a bug submit a test case
Picks
- Tobias
- Chris
- Mathieu Virbel
- Akshay Aurora
- Ryan Pessa
- Gabriel Pettier
Contacting the Kivy Core Team
The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA
[00:00:15]
Unknown:
Hello and welcome to podcast.init. Today, we are recording on April 21, 2015. Your hosts today are Tobias Macy and Chris Patti. And today, we're happy to be speaking with a few of the members of the Kibbe core development team. So, Ryan, if you would please start off by introducing yourself.
[00:00:37] Unknown:
Alright. Yeah. I'm I'm Ryan. I'm a developer in Kansas City. I originally am from Washington State. I've been programming since I was, like, 9 or 10, and, my favorite part of programming is making the computer talk to other things and make them do stuff. So like from routing drivers to interface with hardware or making my phone control my TV and computer.
[00:01:04] Unknown:
Gabriel,
[00:01:05] Unknown:
I would like to introduce yourself. Hey. Yeah. So I'm Gabriel Petitier. I'm, from France. I'm living near near Paris right now, and I'm a I'm a computer scientist too, and I've been working in the industry for a few years now. And I started programming, like, you know, when I was a teenager. And I I've been really interested in this and how to make things things work the way I want, and I've been tinkering since then. And, so, I've been playing with Python because, as soon as I found it, I I was, like, in love because it was a first long grace to to make so much sense. So so I was so I've been, very happy to to be able to work with it since.
And, so that's all I came to Kiwi because it was a great framework in in Python, so I came and gave a hand. So that's for me. Great.
[00:02:05] Unknown:
And, Matthew? So I first claimed for thinking to making a podcast about us. It was a a real surprise for all of us. So I'm mature about 32 years old, and I love musics, and I love programming. And it's, the same as, Ryan. I learned about, when I was 10 years old. It was literally writing something I got on a book on a screen. Even if I didn't knew how to run it, it was like opening edit, typing to come online writing some things and then try to rename the file with a dotcom doesn't work. DotExecute doesn't work. That that doesn't work until, my uncle start to teach me what was programming exactly, teach me me basic, teach me to visual basic.
I was actually working, in that, in the police department. And then computer science. I did a lot of stuff. It's like full stack development from Securinals, from the script, from managing servers, system administrator, web security. I don't know. Until I got, I find pythons, and I wanted to do a project with, some music in pythons. And, well, the rest of the story, I guess, would be on the next question we we will ask, but that doesn't.
[00:03:51] Unknown:
So how did you folks get introduced to Python initially?
[00:03:55] Unknown:
Well, on my side, it was on Linux, like, Linux affair. It's like, a French website, talking about lot of Linux stuff and stuff. And it was really when I was sick of doing all the same stuff in c, managing a list, thinking always about memory, creating class that is taking a lot of time. And I was wanting to focus on the artist side. I wanted to create not to do the same things all over again. And just show me a solution about it, and it was called Python. This is how it started.
[00:04:38] Unknown:
Well, I can I can go on that too because I was I started developing with the QBasic at first? And, for a number of years when I was teenager, I I linked in code with this. And when I start started learning other languages, I was surprised because I didn't find anything that was as easy to to learn and that but, so it seemed like the power of to do complex things had to to use very more much more complex languages. And, so I was ready to to let go of simplicity. But, when I found Python, I was light shocked because, it was even simpler and a lot a lot better than everything I have I have found until now. So I, I I just I I started when I was in a in a computer course.
I was learning about a lot of stuff in computer science, but there was no no no course about Python. But I just found a little book about Python, and I learned the basics of the syntax. And, and got from there, I thought I thought it on my own, thought it myself. So so it was, like, yeah, finding the the right language from my mind. So it was quite a discovery.
[00:06:08] Unknown:
That's very cool. It's always neat to hear when people sort of, you know, have these problems and especially when it, you know, it's at the intersection of our art and technology. That's great.
[00:06:18] Unknown:
Ryan, why don't you go ahead and tell us about how you got introduced to Python?
[00:06:23] Unknown:
Well, we needed to rewrite the software at our work and the old software was written using Zul Runner. It was all in JavaScript and it was just horrible and slow. It was hard to work on, poorly designed. So I was looking for something that I could use for make making desktop applications, and I didn't really wanna do CC plus plus. I wanted it to run on Linux. I wanted something with rapid development capabilities. And looking around, I found Python, and I fell in love with it once I got past the lack of braces.
[00:06:57] Unknown:
Akshay, thank you for joining us. Could you just give a brief inter introduction and tell us about how you got introduced to Python?
[00:07:06] Unknown:
Hi, guys. Akshay here. Okay. Now I got introduced to 5. Essentially, I started with, you know, working on the market at that time, in some level, I think. And I was looking for a framework that we're working on those. The only 2 available options at that time were, Jiwi and, empty corrugate, automated.
[00:07:33] Unknown:
Yeah. Empty 4 g. Yeah.
[00:07:36] Unknown:
Yeah. So in my research, I found out that the only option that was any worked for me was, Kiwi. That's when I started and came into, like, actually, it was first thing that I, worked on with. Right? Great.
[00:07:55] Unknown:
So, anyone who knows the story, can you tell us about how the Kibbe project got started?
[00:08:04] Unknown:
As we've mentioned. Yeah. It's it wasn't Kibbe at the start. It was named Pianti. At the same time as, what Ashkei said about, MT 4 g, we were, Thomas Simpson was the initial creator of the toolkit because he was trying to, to make, user interface easily in multi touch, and he didn't found anything that works for him. Also, secure on solution was was not working with with multi touch concept. It's like UT, GTK, it was not even started. There is not even a multi touch event on Linux. It was before everything. The tablet was not something you are you were using. So we started the toolkits, and at, like, 3, 4 months after, I was having the same issues, troubling, having issue to find a good toolkit about it. And until I see the option, see about Python, starting to play with it, and then I just found a Google code, with PyMt on it. I joined this.
I asked Thomas to join the project, and it was very welcoming. We did a lot of cleanups. We have been able to join the Google Summer of Code via NU Group because we work far on it. And we have been able to meet, from now at least 1 time per year. And then when KMT was quite of great, Android was growing a lot. And at some point, we we were forced we were forced to rethink the toolkits to be able to be more performanced and to have a graphic stack stack that works on mobiles because all we were using the all of NGL function, etcetera. It absolutely doesn't work on mobile.
So we did, like, free iteration before getting Kiwi the way it is currently. And all has happened in a week in US. We're at is, parent's house alone in 1 week, and we just think about what we want and really didn't check what the other were doing. Just think what we like, how we would like to do it, and we were brainstorming the whole day. And we invented, like, the language. We invented the way of the input event are working right now, etcetera. There's lot of thing happened this week. And TVs growing every month?
[00:11:19] Unknown:
I think it's because, you are working on this since at least 2 years, I think from 2, 008, 2, 000 to 2010. And then when you decided to rework everything, you had a lot of stuff in mind that you wanted to change, and you had a lot of a lot to experiment at this time. To experiment, but, for example, the Kiwi language, I at this time, I didn't even knew about QML
[00:11:45] Unknown:
or QT. I heard about it few months after, and, yes, we are very similar even if we are far more powerful than us. And but it's it's really like brainstorming. We tried to write it in a way. Like, we tried YAML, and it just didn't work. We tried a lot of other language. Like, what about XML? Even in parenting, we were being able to build a whole UI and attach events in XML. It was working, but, well,
[00:12:18] Unknown:
it doesn't please us. Yeah. Nobody likes it.
[00:12:23] Unknown:
But it's something that happened.
[00:12:25] Unknown:
Yeah.
[00:12:26] Unknown:
Right. Well, I mean, it it it kinda makes sense in a way, right, if you're thinking in terms of what's the most elegant way to express a user interface. And other projects have done that at various points in times. Right? And inevitably, when they choose that, nobody's happy with it. But you guys just had the foresight to say, we're not happy with it, and we're gonna go a completely different direction. And we're certainly glad you did.
[00:12:51] Unknown:
And and this is something that drive us from the start actually because we never think about how the other we're doing. Otherwise, we will fall into the same issues. Yeah. If you think about GTK and QT, so where they build UIs, the way they use events, it's they have an historic, and we were being able to just create from the start what would be a modern way. But I guess if we were doing it again right now, we might just came up with a different solution, a different way to do things.
[00:13:31] Unknown:
So so this kinda leads really well into the next question. What made you folks choose Python as the basis for Kivy?
[00:13:39] Unknown:
I don't have a real answer about it.
[00:13:42] Unknown:
Because Python is the language of metal make that make sense.
[00:13:47] Unknown:
That's all I think. It's the right language at the right time.
[00:13:51] Unknown:
Yeah. I think you you you you had used, Python for some time before. You had tried a lot of technology, and if you did that in Python, it was yeah. I mean yeah. You you said earlier because you you you wanted something different than from c. So I guess that's that's answer.
[00:14:12] Unknown:
I was starting a project called, and it was, a software when you can put well, actually, it's kind of, what you are doing on your day job, Gabriel. It's putting objects on the table and making music with it. And I was I was needed a simple things, having a possibility to have buttons and labels in OpenGL. Yeah. There is absolutely no good solution for it, at least a solution that looks good and when you can do everything and easy to use. I was starting to write it in c plus plus and spending so much time on it. This is how I discovered Python, TNT, and, you know, the rest of the story. Just, as I say, came up at the right time. So that is so bad. Go, JavaScript. But we don't know why Thomas
[00:15:06] Unknown:
chose chose the Python. No. And he's not here. He's not here. He's lost at the sands of time. Yeah. I lost. His story is lost. Okay.
[00:15:16] Unknown:
Alright.
[00:15:17] Unknown:
I I honestly, just guys, is at least a language that, give you time to focus on issues, not in the language itself. Right. Yeah. But not really dealing with the language. That's what I love to. Yeah. Yeah. Yeah. Me too. Forget about it. You just sometimes say, I love Python because you you just gain so much time of doing things that on over language, you will spend a lot more.
[00:15:46] Unknown:
Yeah.
[00:15:48] Unknown:
Well, that's 1 of the things that makes Kivy so enjoyable to work with. Right? Is because language, as you said, it it kind of allows you to be so expressive, and it kinda stays out of the way. And you can think in very high level abstract terms. Mhmm. I haven't had a lot a lot of time to play with Kibby, but I was very impressed when I was doing the prep for this episode, how I was able to sort of, like, download Kibbe, download the tutorial, and it's like, hey. I'm actually assembling, you know, a UI on the screen with widgets and labels. And and it's it all just kinda works and is very straightforward. And, like, it's not like you mentioned some of these other UI paradigms like, cute cute or or GTK, where there's this whole huge, like, conceptual framework that you have to wrap your head around before you can make anything happen on the screen.
I I think I think it's awesome that you guys did do choose Python, and also it's a testament to your good design that using Kivy is just such a pleasure to pick up and run with.
[00:16:48] Unknown:
Well, some people we have the concepts in Kibbe too, but you have to to learn. But some some people struggle more than others to to get them, but it's easy. Once you you got them, it's easy to forget about it because they fit your mind really well, I think. But so we we try to to to improve the documentation, because for some people, it's more important for than for others. But, I I I do think the concept are good. They they may need better explanation sometime, but I agree very good.
[00:17:25] Unknown:
So what were some of the major influences and inspirations for the way that Kibbe was implemented, or was it all just happy accident?
[00:17:35] Unknown:
Definitely a few happy accidents, I guess.
[00:17:38] Unknown:
At least the Kiwi language is not the accident. Yep. Wow.
[00:17:44] Unknown:
The the the event system is more, traditional, I guess, I would say, the the way It's the event system. Yes. Not the inputs 1. Okay.
[00:17:56] Unknown:
So in Kiwi, we have all the inputs are are the same but separated. It's like you have the same base place, and it's not really surplus. It's like, to be simple, you have a touch event. And in the touch, you know what the touch is capable of. So on the documentation, we have The profile. Yeah. There is a profile. I the profile said your touch is able to spot a 2 d position. A 3 d position is supporting a 2 d pressure or etcetera. So and for each profile, you have a set of attributes that is added to the original touch glass. So it's kind of, it's making the input completely abstract because it work on touchpad, but it can work also on, a table with camera behind when it is able to detect the pressure or the shape of your finger. This is information that you can receive and use it, or it can just work with a simple cursor.
And we tried also to use I have been able in the Leap Motion beta developer, so I received and no. Even before the before the beta, I received a a late motion device. And it's it was quite nice to to try, using it. We we were almost being able to use directly in giving. Just a little bit of rubber, and it was done. And the same for Kinect. And you cannot do that with other toolkit, honestly. That's amazing. In Kiwi, you can just provide there, and all your widgets will be able to to use it because also 1 of the big things in Kivy is every widget we've wrote is built on the touch events.
And the touch, by design, very there can be multiple 1. So you always think about it. Mean meaning, you can press 2 buttons at the same time on a Kiwi application. You cannot do that on other application. Gdk, q t, or even the web. It's not made up. You create 2 button on a form, you cannot press at the same time. You can do it in Kibbe, and it's opening a lot of, multi user application.
[00:20:45] Unknown:
Mhmm. You you mentioned the the conception of widgets, and and that's what I something that I really appreciate in Kivi. When you're doing Python and using, for example, GTK or Qt over frameworks that are repels of c plus plus layer libraries, and you you you don't have access to the underlying layer. You can't extend things the way you want. And when you are working in a library that is built in the language you are using, And especially in a as dynamic language as Python, you are free to extend about, anything, and you you can plug your parts just the the way you want. And I think it's a freedom, but you you rarely have, even because, for example, if you extend the C plus plus program, you do not have as much freedom to tinker with the with the elements of the framework as, as in Python because things can be closed, things can be built, and you aren't supposed to integrate too much with the framework.
Based on you have quite a lot of power at this level. And I think it's more like being on the shoulder of Giant, which is Python, and having the the feature as at the right level just so you can grab them. And, for for the the touch system, and just like other things, it's a bit of a throwing to the object oriented philosophy. So that instead of putting places on on things, you have 1 place, but eventually you have multiple places to to describe your events. It's not the object model which shows what, the event is. It's the data inside. And that's I I think it's indeed quite quite a good idea, quite a powerful
[00:22:53] Unknown:
Abstraction?
[00:22:54] Unknown:
Abstraction. Yes. Perfect. Perfect. So But I I I guess that's A bit a bit like duct taping, but for for events, it's a if it asks something, you are you can use it this way.
[00:23:09] Unknown:
So to to answer to the question, the influential or inspiration on the Kiwi design, it's like Python itself.
[00:23:19] Unknown:
Yeah. Yeah. That's great.
[00:23:23] Unknown:
That is very cool. It's like it's like not only is Kivy written in Python, but it's also designed to be Pythonic in nature.
[00:23:33] Unknown:
It's a concept because what is Pythonic? When you start Python, you you read a lot about being Pythonic. This is Pythonic. This is not. Where's definition of that? There's absolutely no documentation saying this is something that looked great in Python. This is not. So at the time of writing Kibbe on clientele.
[00:23:57] Unknown:
There is the the Zen of Python. But, there was a a great, conference about this, in the in the last Python that I watched on on YouTube last week. It was the explaining the difference between watching the PEP 8 compatible code and watching Pythonic code, and it was very, very interesting.
[00:24:18] Unknown:
So I think I don't really know who who did it, but it was really great. Yeah. It was Raymond Headinger. I I was there for that talk, and he definitely did a very good job of that. So, we'll we'll certainly add a link to that in the show notes so that other people can watch it because it was Great. It really did give a very good concrete example of what is Pythonic and what is not because, like you, I've when I first started learning Python, I kept coming across these references of Pythonic versus non Pythonic code, and It's it's very subjective, and there doesn't really seem to be any firm conclusion as to what really makes something Pythonic. It's more just the way that it feels when you're dealing with it. So Yeah.
You really did a great job of distilling it down to its essence.
[00:25:03] Unknown:
So speaking of distilling things down to their essence, 1 of the amazing things about Kibbe is that it's comparatively simple to learn. I mean, I understand that there are some concepts that you have to wrap your head around. But as I said to you, you know, I I was able to sort of at least pick up the rudiments of it and and if not run with it, then then walk with it with in a matter of a couple of hours. And that hasn't been my experience with various other UI frameworks that I've attempted to use, like cute or, you know, I remember getting pretty frustrated with with tickle t k back in the day. Mhmm. Yeah. So how did you folks make how did you folks come up with a design, that embodies this ease of use? I can only imagine it was it was on purpose. It can't have been just a happy accident. Can it? I I think what,
[00:25:56] Unknown:
Matthieu described earlier, it's, and some something I try to do, sometime too is to to say, okay. Forget about or or technically, things can be done, but what would I want to use? It's like a, design driven development. You you say, okay. I want to use something like this. Let's let's imagine it's possible. And then we then then you you you write the code that you would want to write, and, when you can you try to make it happen. It's a just to put some some code. What would wouldn't it be wouldn't it be nice if this code worked this way? Just and I think that's something very. But when when I write Python, something some a lot of time, I don't have to look at the documentation.
I I say, what if it worked this way that would be that would just be nice, and you want it on this works, And that's I I think what's the pleasure of Python is that things just comes naturally. You don't have to to to check the people for for the long a lot of time about how, what would be the most natural way to do 1 thing. And you can come up with it and be right 90% of the time. And I think building the the API this way is just the the what I would call, call Pythonic. So you you can just avoid experiment experimenting with API even before building it. I I think it's the key for this.
[00:27:35] Unknown:
This is what my experience I'm being with Kiwi in terms of designing. What we generally do is, first of all, look into how it's been done in other interfaces. For example, let's see how something is implemented in Android or in Qt. But after that, after first looking into how it's done in other places, we generally tend to ask ourselves how would it be more intuitive? How would it be simpler, and how can it be made in such a way that it can be, you know, just something that clicks into your mind and something that you can just, write down without having to look at the documentation.
And, generally, if you what we do normally try to do is pass everything to Tito or Matthew for that matter, and that's what is on IRC, we call him Theater. So he generally makes it very simple and figured out how it should generally be, and he has an art for it for making things as simple as possible. Even if the rest of us miss it, if it goes through him, it's simply divide to such a, such a place that, you know, it just becomes very simple, very straightforward for anyone to use.
[00:28:53] Unknown:
Cool. Thanks.
[00:28:56] Unknown:
Yeah. I have some problems.
[00:29:00] Unknown:
So what are some of the biggest challenges that you have experienced in building Kivy both, you know, either early on or most recently some of the biggest challenges that you've come across whether it's in the design or the actual development or maybe in, making it making it performant enough?
[00:29:19] Unknown:
I think performance is definitely the biggest 1 there. Biggest challenge. It's really hard to get everything to work the right way and get it all fast and everything, especially when you get on to these mobile devices where we're kind of almost trying to put a square peg in a round hole by putting Python on these Java based Android devices. But really I think that's the biggest challenge is just getting it to work and be fast in that native speed. And on desktop, it's pretty good most of the time, but on on the the mobile devices, it's a little harder.
[00:29:58] Unknown:
I bet. I mean, to me, that's that was 1 of the things that really blew my socks off about Kivi is that this 1 toolkit works so well on the desktop, on mobile phones, on mobile tablets. I mean, that is an achievement unto itself.
[00:30:12] Unknown:
When you compare it to Java, where Java is really all about being heavily multi threaded, and that's what these devices are made to do is these heavily multi threaded applications, and we have this Python application that's stuck in 1 thread.
[00:30:25] Unknown:
Yeah. And that
[00:30:27] Unknown:
And on it, I have a word about it. Even if I I talk, the kid about it, 2 years ago, but still all the current solution that is going on the community, like, it's not going to work for us in mobile. K? They have a good solution that works that will work only on desktop. If you want to do mobile development, this is not how you need to think. And I'm very, very, very sad to to see that there is absolutely, no consideration about mobile development in the Python community, except for us. It's like 3 weeks ago or yes. 3 weeks ago, I got an invitation to be part of the language summit, on TICON. Mhmm. And because they wanted to talk about the mobile app, In the end, there is absolutely no discussion about it. Still, there is so much thing to do on the language itself.
Can you imagine, like, right now, to be able to support Android, we still need to patch Python to be able to cross compile it. This is not something that is supported from the start in the language. So it can might not be something that you can understand or or or realize. But for me, having a language that I need to patch to change to be able to support a new platform like Android, and it's like Linux or being able to to compile for from my desktop doesn't look great. Right? And this is 1 of the step. There's so many other step. And then fixing the JIEL, a lot of, Evan Giddos say it's not an issue, etcetera. We on Android, there is no multiprocessing, and you will never been able to use it because this is not out.
So
[00:32:26] Unknown:
Yeah. They they don't want it. They they don't want it. I I tried to I spent, in early week trying to make it work, like, 2 years ago, and and, in the end, I understood that it wouldn't work because there's a system feature that is lacking, and the Android dev don't want it into because that will that could be a performance problem. So there's there's just no way for for Yes. So to communicate and, and to and to to do what's what's needed for multiprocessing. So you just can't have it. So you have to find over solution, indeed. And we have services to to to delay to put task in in the background, but it's clearly not enough. We are we have to find This is not this is absolutely not enough. Let's say you have a request,
[00:33:15] Unknown:
you are doing some I don't know. You you are loading images in synchronously. Okay? So you are putting time, for getting your data from the web, decoding it, the PNG into RGBA, uploading it into the GPU, etcetera. There is 1 part we can make it a little bit faster with with threads. But because it's threads and it's, a Python threads, it's the same as having just a callback in the clock on your main thread?
[00:33:49] Unknown:
It's it's actually worse. Or threads just they are just good to to avoid blocking the UI, but they won't make anything faster, except if you are able to to release the deal. But you have to go very low level for that. So it's not and you have to it's very limited. You can't do a lot without the deal. So
[00:34:10] Unknown:
Yes. And I don't so if anybody remember about the the project I heard about, and somebody is trying to solve that by starting 1 interpreter for each call. Okay? And he's able to move object, Python object, from 1 interpreter to another.
[00:34:33] Unknown:
I I didn't know about this. And
[00:34:36] Unknown:
so in that way, we might be able to do some work on 1 interpreter completely separated on 1 core but in the same process. And when you're done with it, you can put an op the object on the queue and get it on the first thread without any cost, without any deal. That will be awesome if it's actually work on mobile. It can be a solution for us.
[00:35:02] Unknown:
It sounds like to me, it it you know, it's really interesting hearing you guys talk about that. I've kind of I was a Ruby person before I was a Python person. I've been into Python now for 4 or 5 months, and I I saw many of the same discussions over there. Like, you know, it seems like the old school dynamic languages are all kinda struggling with these same issues. They don't really transition very well to the platforms, and they don't really have a good concurrency story. They really don't do threading very well. Anyway, it seems like it seems like hope you know, there there should be, like, either a new generation of of these languages or maybe some new language that supports these paradigms out of the box.
[00:35:44] Unknown:
Yeah. If if you if you want to support multiple calls and to to be able to to transition to share memory, this way, yeah, very dynamic languages are are not really able to to help. So, not yet. Maybe there is some discussion.
[00:36:05] Unknown:
Absolutely. So if you folks were to start the project over, what would you do differently?
[00:36:12] Unknown:
I suppose, if you don't mind, I'd like to mention 1 thing. Okay. 1 advantage of Kiwi on par on, mobile essentially is that the whole UI is based on open g s. I don't think we've talked about that. But because of that, essentially, what happens is, you know, anything that is based in graphics is essentially very fast. And if you really want to do do some share this and stuff like that. That part is not worked on by anything. So Yeah. That is 1 of the advantages that is, you know, not available in other, languages. We in TV, shear is in, effects, that you shared is up made very easy.
Implement Alexander Taylor. He did a effect widget and even before that using shear is was pretty easy in Kiwi. So in that sense on mobiles many things can be made very easy so if you were let's say doing anything related to, Open GL or, graphics directly, that wouldn't be bogged down.
[00:37:20] Unknown:
But it's this is 1 example of the design we choose. It's like not showing OpenGL to the users. And even if if it's not fully complete, like, there is still a lot of room for improvement here. But still, we have simple class that you can just use it to build your graphics, and all the OpenGL is optimized and done in the background. It's completely transparent, and this is what is making Kibbe on the graphic fast. Even if some people are making even faster with new project, still, the the initial solution is quite better than
[00:38:02] Unknown:
the other 1 can be. And and it it's it's actually a pretty thin wrapper. It's not very hard to to go around it and to to poke at the low level. And, there's I think that that's something that's quite a success to in the in the design, that you you can you you can easily use very advanced features, like stencil or or touching graphics, textures, or making them wrap, or more modifying, to change and building mesh mesh or things like this. And but it's very, very easy to just go To do the same thing in raw OpenGL, would be like, for well, it's a nightmare for for simple minded people like me.
So but about about performances, yeah. The the graphic part is is is very great. It's not not the issue. You can can do a lot if you manage to to to to be careful about the important parts. It you can do a lot because you have all the full power of the of the g p GPU. What's hard is is if you have number crunching or a lot of AV operations to do in the background. So that's that's a bit a bit harder.
[00:39:25] Unknown:
Yeah. Most of the time, this is you could you'll Python that you can make this, the application slow. If you are building a UI with, 1, 000 widgets, you might have an issues, with it on mobile. Instead, if you are able to write 1 widget that can manage the 100 behind, let's say if the 100 were, blocks on 2 d games, I don't know, or maze, so you can find a way to manage it yourself, not using the Kiwi widget. Then you will, execute less Python, and the graphic bar will just follow
[00:40:13] Unknown:
as you want. Yeah. I think that's what, is is pushing a lot on Kivant to do the for game development. We have still a lot of work on it, but it's very promising for every game development with Kivi. It's again further to Kivi. Yes. It's a very good project.
[00:40:34] Unknown:
To answer the question on, what we would change in the project, if we were to start from, scratch today, I think we already discussed about this. We were essentially looking for changes that we need to do in a major, release, let's say. So something like 2 0. And for that, we discussed on things like this. Essentially, 1 of the major drawback as we discussed discussed earlier is the concurrency. So I would hope we would be somehow able to solve that issue because that is 1 of the major issues considering even, your smart word is gonna have multiple codes. But you should be able to take advantage of that.
[00:41:15] Unknown:
About that, just 1 word is I was talking about it on, earlier on IRC. It's about React dot GS, and I read few things about React, native. So it's a project from Facebook that JavaScript is driving UI, the UI of your application. And the way it work on the native part is, like, they're they have a thread executing the UI. But also UI is driven from JavaScript on another thread. If you think about Android, they do the same. They have a UE thread. They have a that, is right that run on UE thread. So you can drag your UE thread, and you have threads around it that can control and push things into your UI.
This is something we completely miss in Qlik by design. And our biggest thing is because we are using opengl and OpenGL require you to execute all the commands in the main thread. If you think about shared context, etcetera, we can't go this way because, we have a lot of platforms to support, and means we cannot just use it. So we are stuck with this approach right now, and we we would need to redesign it from scratch. It will integrate with Ashcase that maybe trying to find a way of having a thread just displaying the UI and focus on that, loading the images, doing all the OpenGL and then having your main thread driving it.
We might get better performance. But, again, you cannot assume it unless you have an experiment about it.
[00:43:13] Unknown:
Yeah. But would it be hard, currently, for example, to say, okay. I I put every every everything in the all all my logic in separate thread, and I only, everything that will change the property that affect widget is, like, you know, call call call later, call schedule once, would would it you think it would be a lot of work? It will be a lot of work. Yeah. Okay.
[00:43:44] Unknown:
So what are some of the most interesting or strange things that you've seen to be used for?
[00:43:51] Unknown:
I think the coolest thing I've seen to be used for is what Gabrielle works on at work. That object is stable. That's just Yeah. Really cool.
[00:44:02] Unknown:
Well, if if you want, well, I I can thanks a lot for for the props. Yeah. I'll I'll I'll explain a little for for people. So we are I I I may be a bit unusual, because I'm 1 of the people not using currently Kiwi for mobile or platforms. I'm using it on big tables, like, giant iPads from, 40 to 80 inches the so so we are putting key key application on on on these tables, and, we are using the the the point that objects are to do when we put them on the table and, to to detect the features. And, this way, we we we check about the the ID of the object, and you we use protocol TUIO to send this data to other applications. So this way, we can build application that make use of objects.
And, this is all done in TV, so it's quite cool, I admit. It's but, I've I've seen a lot of cool things done done with Kivi, and the things I didn't have an idea that people will do. There's a project that is using Kiwi for for commanding, sending commands to to telemetry equipments for for cars and the prototypes adjusting. We are TV being used for educational gains, for, for children. There is TV used in medical equipment, for indoor on on Android Android applications for for pharmaceutics or IV industry. It is quite cool to see Kiwi used in all sort of places like this. So the I think what's what cool about it is that the framework doesn't force you in a direct direction. You can you can take it and build what you what you want with it. So it's it's very interesting.
Yeah.
[00:46:21] Unknown:
Is a framework. It's really, a toolbox for the developer. You can use it just you are making buttons, inputs, scroll view, etcetera. Or you can do a complete custom UI, and then it's the artist inside you that is picking Can do anything with it.
[00:46:43] Unknown:
Neat. Gabriel, do you think you'd be willing to or can you I don't know if your work will allow, but, if you can, maybe put a link just to anything that's that's out there about your work project with the big table.
[00:46:56] Unknown:
Of course. Of course. Of course, my work will allow. Yeah. I'll put a I'll put a put a link so people can check what we do. And, yeah, if that's if they enjoy it, that would be great.
[00:47:09] Unknown:
Okay. 1 of the coolest things that I've ever seen Kiwi being used for was done by Matthew. Now he used it for an interactive movie. What he eventually did was like
[00:47:21] Unknown:
Yeah. It was a project last year to tell stories. I was contracted to be able to to make a system for displaying movies k, on the theaters, and a lot of people in the rules was adding lasers. And they was able to point out something on the movies. K? So we have a infrared camera that is looking on the screen and we are able to analyze them and put it back into the movies. So there is multiple movies. 1 is like, say, it's a boy who is trying to let a girl, but he want to show it's the best boy ever. So every step, he's trying to do something like drinking the beer faster by his friends. And to drink the beer faster, all the audience must put the pointer on the beer of the heroes and move the pointer as fast as possible until there is no more beer. Okay.
And then gain some points, and there is another game when the audience must follow a shape and the shape is starting to shrink more and more and more. And if there is too much pointer of size or shape, then you'll you'll lost. Or if all the onions stay in the shape, you win, etcetera. So you get the ID. And at the end, you have, an amount of points, and depending of the points, the plot is not the same at the end. This is 1 1 usage of Qb really, yeah, really fun and interesting to explore.
[00:49:06] Unknown:
I don't suppose by any chance you have a link to that that you can share?
[00:49:10] Unknown:
Yes. Excellent.
[00:49:13] Unknown:
That'd be great. So what are some of the changes and features that you're particularly excited about in the future of Kibby?
[00:49:20] Unknown:
I think a big thing is gonna be getting in some multi language support. Allowing right to left text and reshaping of some of these, Eastern scripts where a character looks different when it's next to a certain character and just opening up Kivi to more people in that way Yeah. That can work in their language.
[00:49:46] Unknown:
So that's Yeah. That's an interesting challenge because a lot of, text is actually quite complicated to display, and we're doing It is. Everything in in Open GL means we have a lot of the burden, on us. So but, thankfully, there are some libraries we can make use of, but it's still quite
[00:50:08] Unknown:
some work. And even the standard solutions like HarfBuzz, there's virtually no documentation for it. You just have to go and find examples, look at other people's code. That's really all there is available for us.
[00:50:23] Unknown:
In terms of features, we we were essentially looking to, you know, change everything we can in terms of next, we're looking forward to a 2.0 release. So, hopefully, we'll have not released before that. But for DuPont release, hopefully, we can fix almost as many issues that we have, essentially, for multithreading and extra, other things like that. And 1 other thing that we didn't talk about was UI. Right now, the widget sets that we have are generally started, something that was geared geared towards desktops. They weren't really started from the ground up thinking mobile in mind.
So 1 of the things that I'd like to see come up next is widgets that are designed, keeping in mind mobile, and their speedy and vast performance on mobile.
[00:51:20] Unknown:
Yeah. And integration in in platform specific UIs, it's something that people ask quite a lot. Even these days, people use temps a lot more or as more, like, thankfully, thanks to Google Material UI. They understand that they can design the UI in the way they want, and we give a lot of freedom for that. So they they I think they they they there may be less demand for it in the future. But even on desktop, for example, being able to integrate more in the in the UI as a user is used to, maybe an important step to to do. And even using, for example, shortcuts or accessibility features, there's quite a lot to do. And I think something to note is that Kiwi, historically, has not been developed with a longer, what, road map.
It was like, oh, I need some I need this. Let's try to add it and see how it works. And thinking the design, but 1 step at a time. And so we are there's not a lot of long term features that we are planning, but we we we try to do that for 2.0, as as what I said before. But, so we have a Wiki page about this. So if people are interested, we'll we'll try to we'll put a link on that. Absolutely.
[00:52:52] Unknown:
Now may maybe just I I would like to talk about 1 thing, about it. It's like even if the podcast is about TV, Kiwi is just 1 piece of all the project that we, as core developer, are managing. It's like we, are doing Python for Android. It's a separate project that is, is being able to comp you can compile Python and some of the Python extension on Android. So most of the time, you need to patch the extension if you want to be able to combine it. We're exactly the same for, iOS. It's not Python for iOS because it is a separate project and application, so we call it Kivi iOS.
We also manage, we invented actually because there is no good project about it, library to use the native language of the platform directly from Python. For example, if you want to touch some of the Java API on Android, Before, it was very complex to get it. It's like you need to route a gany, a wrapper that we call you Java, and so you will wrap it into a Python extension, and then you can use it. Let's say there is absolutely no contribution on this part, then we invented Pygenius. So because Java can instruct, instruct
[00:54:29] Unknown:
I don't Introspect introspect.
[00:54:31] Unknown:
Introspect it. Then we build that just use the power of the Java language to be able to do the duck typing as you would do on the Java. And you can call directly methods that even if you didn't import them. This is very cool because we have also another project called the Kiwi remote shell. You just start the Kiwi application on your mobile. It gives you an SSH server. Then you can connect onto it. And you have a Python console where you can start to import Pygenius and test the Android APIs in lives. You can create an Android widget in Python and add it to your PV application, etcetera. This is something cool. We don't have the same for iOS, but it can be completely durable.
And the same for what we do for Pygeneus. We do the same for iOS, with objective c, and it's called Pyogr. G. So as you can see, kv is only the u v part, but to be able to execute it and allow the user to use a feature on your form. We have also a lot of opportunity. I miss the 1 most important 1, is player. And player is also a good invention because we build all first step. So the solution that the buyer and buyer is like the wrapper to be able to call the language the destination language, whichever are object. Now we have player, and it will abstract all the the features of yeah. Platform specific features. Like, if you want to access to the GPS, you don't want to write, specific code for Android and iOS and other platform.
So we have just, a facade as we called, and we have different implementation pair platform. And we have that for a lot of things. That's it. So currently, this is that the future of Kiwi, it's bad that the question is only for the Kiwi because Mhmm. We did a lot, outside Kiwi, And we have also a card to play on that. As you said, Gabrielle, people were asking about, is there a way to make, to create native interface in Python? And there is absolutely no good alternative, today. And we have all the tool to build a new library, not Kivy, because it doesn't work the same, and I'm not sure who do it with, with it. But if we will start from scratch like Ionic did, it's we have all the tool for it.
It might be 1 of the future of the new Python library.
[00:57:33] Unknown:
Yeah. Because we are trying to cover a lot of use cases, and maybe some of it, they are not covered correctly in or can't be correctly covered in HTML laundering. Yeah. We yeah. Said actually a a very, very bad bad thing to to try with
[00:57:52] Unknown:
Gmail. Yeah. TV have no tools to be able to do HTML rendering, And we will not be able to provide, not soon, not in the future because it's a very big things to have. In Open GL, this is also our our core issues. It's it's a big point for us, and this is where all the performance is going on. Because we're in opengl, try to find the library that works. You can try webit directly. It's just a mess. And there is project around it that's trying to do it and it's not going to work on mobile soon either and except if you want dependencies that was you I don't remember how much. 50 megabytes, let's say. Mhmm. Might be even more. Yeah.
[00:58:38] Unknown:
But 1 of the things that we we we did effectively, was the the things that are separate and the Python prompt read, kv, EOS, and, player and pygeneus, everything is separated and can be reused. So, indeed, we tried not to put everything in Kiwi, and, and so people have to have to understand. But if they if they want something in Kiwi, in the the Kiwi ecosystem and, not everything. They can go and work with us anyway. We we are when we are open to to and we we and we are very open for help in the various project outside of Kiwi. So they we can we can come 1 of the best example.
[00:59:29] Unknown:
It's using people are using it as an alternative solution that's not working very well, and we are very performance on it. So there is a lot of contribution and a lot of focus on this project. Mhmm. This is awesome.
[00:59:45] Unknown:
That's very cool. The Kibbe remote shell project in particular sounds really, really neat. I mean, I can just envision people sort of live coding on their mobile devices from their the the the comfort of their laptop. It sounds really, really nifty.
[01:00:00] Unknown:
Yeah. No. Except
[01:00:02] Unknown:
it's just for testing. You don't you have no way to save what you did.
[01:00:08] Unknown:
Just a share. But it it could be improved. It just Yes. As a share, but it it could be improved.
[01:00:14] Unknown:
Remember that we are very few active contributor.
[01:00:18] Unknown:
Mhmm.
[01:00:20] Unknown:
We and the community is growing, in my point of view, very fast, and we are not a lot to handle everything. We are we are getting so much backlog.
[01:00:31] Unknown:
Yeah. Lot more new user than new new contributors.
[01:00:36] Unknown:
But Yeah. And maybe this is something that can keep us because if you are not be able to answer everything and letting all things goes by itself, it's not good. That's what can we do, Ad? Yeah.
[01:00:51] Unknown:
Well, 1 of the last questions that we have here, I'll save I'll save it for that, but maybe we can maybe we can help with that.
[01:00:59] Unknown:
That would be great.
[01:01:02] Unknown:
So, yeah, before we get to that last question, just 1 more. Wondering if there are any new platforms or operating systems that you are looking to add support for such as the Sailfish OS from Jala or the new Ubuntu phone, operating system.
[01:01:18] Unknown:
I I've been wanting to to to, to help, Ubuntu Ubuntu support, but I've I've had a a few look at it and tried when we were adding SDR because that was a path to for it. But I didn't find the time in the last 6 months to work on it. So if anybody is interested, that will be cool. I'm pretty sure Firefox OS won't be possible, but, I because
[01:01:45] Unknown:
Don't say don't say impossible.
[01:01:49] Unknown:
Well, it would be but if if somebody is able to do it, that would be great. But I don't think Mozilla people would be happy about this. But if you have an idea, I I I I I wouldn't say impossible for you. Okay? But,
[01:02:06] Unknown:
I think with the question of practicality on Firefox OS, the specs of the base phone are so low that right now, I think it's not practical.
[01:02:17] Unknown:
Mhmm. Yeah. It's very, very is it is it cheaper is it cheaper Firefox phone is quite local. It's it was low spec. Yeah.
[01:02:30] Unknown:
Very cool. So now here is that question that I mentioned previously. This is your opportunity to to rally support to your cause. Is there anything in particular that you would like to ask our listeners to help with? It can be something as simple as, you know, you guys need help fixing some documentation problems or help dealing with the backlog or whatever. Like, how can how can our listeners help, because Kivi is an awesome project and it deserves it deserves to be supported.
[01:03:02] Unknown:
Well, probably the best way is just people get out there, start using it, start figuring out, you know, what they like about it, what do they not like, what could be improved upon it. The feedback helps a lot. There's always room for help in the documentation and examples especially. We allow people complaining there's not enough examples of how to do things.
[01:03:24] Unknown:
Yeah. There are a lot of things. They they can try to reproduce bugs if they they see something. Maybe some bugs have been resolved and not fixed and not marked as fixed. Or if, somebody pushed a a a a pull request and that nobody finds the time to test it Mhmm. They can say, oh, it works for me too. But that's a lot of help for us because we have confidence that it's we can we can check it, and, and, it will probably be a good work to to manage. And, yeah, giving feedbacks. View is a lot of work on the documentation already, but it's a big, big, big documentation.
So it's always great to to to have a look and see maybe things have been changed or they they need improvements. That's that's always great to to to look. And, anyway, I'm sure a lot of people use TV and, not sure if they can help, and, they they just have to know, but we are very welcoming to to that. We don't always have time to react, immediately to but we we try.
[01:04:34] Unknown:
Yeah. I'd like to add this thing. Now, GSOC selection students just ended, and there'll be a lot of students that didn't get through. I'd like to tell them, you know, they shouldn't just wait for ESOC. If they really want to go forward, they should just go ahead and choose the project of their liking. Let's say, if you like Kiwi, just go there, start contributing to it even if you weren't selected for the SOC. Just continue working on project that you're interested in. And, you know, just start small. Start with some simple documentation fixes. In fact, not this is not just for students. For anyone who's interested in helping out here, we really need a lot of people helping out. And if you can just start smaller, just add some simple documentation access, and GRDF makes it very easy. All you have to do is create a login, open a web form, just look at the documentation.
We feel even if it's just as simple as, you know, English correction or grammar correction, just go ahead and do it online and then submit. All you have to do is click on the submit button and a new PI submit it. That's it. That's how easy it is to get in. Now once you get in and for people who are already aware of, they're a bit more advanced, they can get into other stuff. You know, slowly either either gradually increase your commitment level or if you are comfortable straight away go to the number of open issues on gidhub and see what you can work at. And I'm mentioning this in terms of GSOC because, you know, contributing to any open source project helps. It helps not only the open source project itself, but it also helps you, the contributor, in terms of adding to your portfolio. And right now, open source is a very good way to add to your portfolio.
A lot of the major companies are looking for experience people experience with open source.
[01:06:39] Unknown:
Absolutely. I think it's no accident that, LinkedIn now has a very prominent place in your LinkedIn profile to add your GitHub repository. Yep.
[01:06:49] Unknown:
Oh, could I miss that?
[01:06:52] Unknown:
I have 2 things to add about it. It's like you guys asking for that we are open to all the contribution. It's almost the case for everybody. A lot of open source project. Right? What you are really missing is people that are able to each time ever step back about the feedback of of others and giving us a good solution for for it. Because we have so much backlog that even if we have a lot a lot of more contribution, if it's documentation issues, most of the time is merged right away because we are always great. But when you when people are starting just to ask a little bit of question and then when we have to talk about it, it's taking a lot of time for all of us.
It's will be nice if great people also can contribute us directly with solution or having, asking to maintain a project like or for Android, just having a a looks from time to time, like, 7 day per week will be awesome on Python for Android just to answer to other people saying, okay, your recipes on the Python 400 is great. You have few things to change, etcetera. We, Evan, on the small team cannot handle so much. It's already too much, in my So we need maintainers and, and that's 1 of the first points. The second point I I want to raise, if if if somebody in the world would like to sponsor us even for the Kiwi Association, to be able to buy new hardware. The current 1, we are using, already too much for building our unit test, and Matam, another core developer, is trying to use it also for releasing, kvnightlies as a well built package.
We are able only to run Linux Windows when you start to run iOS, OSX, sorry, all the server is crashing. We are very limited by the environments we are testing on. And I'm sure if we have, better hardware, we will be able to choose the. Madam, we're very happy to push all of it, There is Kiwi iOS when I want to do the nightlies, but there is no hardware for it. And at some point, we need also to increase our unit test coverage. This is very, very low. Every time we move something on the code, even Python 400 on Kibbe, it will it might have an impact somewhere else, and we don't see it. We see it only because an user is reporting us, an issue of we as code developer are using a part where we're completing master and then it breaks. This is not cool. This is something that can be seen before that, and this is a critical point of the project.
There is a lot of, lot of widget we need to maintain. We are, looking forward, forward to the version 2, and we don't have the 2 to be able to do it in a in a clean
[01:10:24] Unknown:
way. So talking about increasing unit test coverage, it strikes me that that might be a tricky thing for people who say, I wanna help, I wanna dive in. Right? Because in order to test write tests for code, have to have a really solid understanding of how it works and what you're testing.
[01:10:42] Unknown:
Yep. Not necessarily. But if I can say, I mean, is that's actually how I started coming, helping Kiwi in the very first place because I I I found the bag, and I say, okay. I I just want to to check if it's ready or bag, and to reduce my my card to very simple. And when it was simple enough to to test, directly, well, it was nearly a new unit test, so it could be introduced directly in the in the in the little library. So just doing a little little test case of a simple bug, It's already quite helpful, actually. If you if you look at a bug report and you generate a a news a test case for it, it's a it's a very, very, very cool contribution.
[01:11:33] Unknown:
Well, I'd like I won't like to discourage anyone from use writing unit test case directly, but I think what the, Matthew was hinting at was we recently added a link on our web page for donation directly. We, lack the hardware, and we would definitely love to get some new hardware for testing. And as he said, we need, new hardware to be able to, you know, set up nightly packages for testers and stuff like that. We need a lot more, influx in terms of money also. So if best way would be if someone would hire, Matthew directly, I think, for working with Kiwi.
[01:12:24] Unknown:
No. Honestly, at least supporting for the. You don't know about it guys, but for example, the new reboot of the KPI US, the version of the, it was done to be to support all the different, CPU, not only area, but also the 64 version and the the simulators. Okay? And last week, I booked, 1 new iPad to be able to finally test it. But, it's like nobody else will do it and will offer me an iPad, and it's very hard to ask that on the Internet. I don't know how to do. And, well, I don't know how to say. But, yes, sponsoring at least, the kiwi product may give us a little more space, to buy things and at least maybe put bounty on the biggest issue to be able to make the community participating more on the biggest issue we've got.
[01:13:39] Unknown:
Yeah. I mean, it's it's definitely a tricky problem. Right? Like, I I'm definitely and I'm guessing Tobias isn't either. Neither of us are particularly connected with mobile hardware manufacturers. You know, we can certainly I can certainly contribute some cash, but it's tough. I don't I don't know how to hook you up with those hardware manufacturers. I mean, 1 thing that I would suggest is, you know, yours is a project that an awful lot of people get an awful lot of value out of. Maybe a way to handle this might be to reach out to the Python community through things like, you know, the Python weekly newsletter or Pycoders or or that kind of thing to to basically say, hey, the Kibbe project is struggling. We're looking for hardware and we're looking for sponsors to help us get that hardware.
I think you might be surprised, you know, people working in these various companies might might see that and be able to help you out.
[01:14:37] Unknown:
That's a good idea. Yep.
[01:14:41] Unknown:
That's definitely a good idea that we should take up on.
[01:14:48] Unknown:
That's great. Well, we we like to do with every episode, we like to do picks. These can be anything that you're interested in or like or wanna recommend to our listening audience. It can be technology related or or not. I usually recommend a beer because I like craft beer. So, Tobias, why don't you get us started?
[01:15:10] Unknown:
Sure. So I'm gonna keep it short. First pick I'm gonna choose is the Zeal offline documentation browser. So for people who use Mac OS, there's a similar project called Dash and Zeal is the version of that that will run on Linux. So it's a way for you to download the documentation for various programming languages and libraries and have access to them when you're not online. So if you're on a plane, you wanna be able to look up a particular Python method, you have it stored right on your laptop. And the next pick that I'll let you choose is a comic strip called Commit Strip. It's actually published in French and English and it's just a daily comic strip about the life of developers and it's usually got some pretty amusing content. So definitely recommend that.
[01:16:02] Unknown:
So I just wanna second your recommendation of Zeel. I, before I I was made very happy and given the Mac laptop and my current gig, I was working with a Linux, a Linux desktop and a Windows laptop. And, I, I had been a huge fan of Dash for years and still am. Now that I'm back on the Mac, But when I was working in Linux and Windows, Zeel was was certainly a really excellent analog and and does the job quite nicely. And and for anybody who hasn't used this kind of thing before, what's super cool about these things is you can hook them into your IDE or editor of choice. And with the dock all offline and already downloaded and everything, it's like it really is instantly at your fingertips. And and the way the UI works is really, really kind of nice. I highly recommend it.
So I'll move on to my picks real quick. And the first pick that I will pick is unshockingly a beer. Jack at Jack's Abbey Brewery here in in Framingham, Massachusetts is a brewery that I'm rather fond of. I haven't yet tried a beer from them that I really disliked. And, and they make a beer called Smoke and Dagger. And it is a really delicious, dark beer with a lightly smoky flavor. It's considered to be a Roush beer, which is not a a variety that I have a lot of a lot of experience with. But, it's it's really tasty. It's it's I've tasted some German smoke beers that a friend of mine is into, and, you know, it was just a little too much for me. It was kinda like falling face first into a camp, you know, the can't the ashes of a campfire with your mouth open. But, it's exactly.
But this one's this one's pretty tasty, dark and malty, I I highly recommend it. So the next thing I wanna recommend is a movie which for some reason here in the United States, it was slammed by the critics. The critics really didn't like it and I really don't understand. I think they're on crack because I think it's a really good movie and is a story that was well told, well acted, and and just worth seeing. And that's called A Woman in Gold or Woman in Gold, excuse me. There's no a in there. And it's about this woman and her family pre World War 2, you know, during in Austria, when the Nazi Germans were were sort of taking over and about what happened to her and her family and the story of a particular priceless piece of art that used to hang in her household. And I won't say any more than that. I will just say, if you look it up on Rotten Tomatoes or whatever your other favorite movie site is and see it rated low by the critics, ignore it and go see it anyway because I think it's really good.
And the last pick that I have is, a, excuse me, last pick that I have is, jeez, I lost my last pick. Well then, I guess I'm gonna keep it short and leave it at 2. Matthew, what what kind of picks do you have for us?
[01:19:09] Unknown:
The first 1 will be IATAZ. I'm not sure about the pronunciation is, yet another Python formatter from Google. Mhmm. Yeah. K. It's actually a formatter that you just feel, you give your Python file and give you a very great Python file with, with actually state 8. And it's this is the most working tools I ever seen from all the other ones, like auto pet 8 or pet 8 5, if I remember well. And thanks to this project, I own some of the project I'm working on. I just use the tools to clean all the files. And then, with my student, I can ask them to focus on the code and not in the formatting of pythons when they just start to learn Python. So it's a it's a good tool for me. That was my first pick.
My second pick will be a project I'm working on. It's main chinese.com. It's not really related to Python even if all project, is running on Python and it's built with Flask and Jinja, etcetera and very good HTML5 stuff. In Chinese, it's a website that you that will bring, you can learn Chinese, in a story. Okay? You will be a little dragon, and you will, have an in child. The cat will try to add you in the world of all the Chinese, world. And you will learn vocabulary, grammar, and then talking with your browser as a dialogue. So we are using the latest HTML 5, web audio and web speech streams to make it happen. It's still in beta. You can ask for a subscription, but we are launching a kick starter soon, and every feedbacks will be welcome.
And 1 last thing, just because you said beer, I'm sure you might never test it. I tested only 1 time in my life. It's called, in French, La Reine Scrochon. And so La Reine Scrochon is a Belgian beer, and it's made in how do you call I miss a vocabulary. Where is the beer is made?
[01:21:38] Unknown:
A brewery.
[01:21:40] Unknown:
Brewery. Okay. Not an automatist 1, but, an old 1, very old 1. Everything is done by hand. Okay. It's artisanal. It's the word. No. Yes. Yes. That's the word. Yeah. Okay. So it's 1 of the last year done in artisanal in Belgium, and I have been able to visit it only 1 time in Sunday. And after the visit, in front of the sun, we drink a whole beer. I was completely out of nowhere. I it was very hard to get back to my house after that. And it's very light. Just 1? Yes. Just just 1, but very, very light, very tasty. It's doesn't even look like bronze or brown beer, etcetera. It's almost water. Okay? But on the taste, you feel like it's a beer very light.
Right? Just I liked it. That's it.
[01:22:45] Unknown:
Wow. That sounds delicious. If you could, at the end of the show, give us links to that beer and those projects that would be awesome. Okay. So let's see, Akshay, you're up.
[01:23:02] Unknown:
Okay. First thing that I'd like I'd like to share is essentially mangoes. I'm from India, and I love mangoes. And you can try them out at in this season, the best thing to have. And the second thing I'd like to share is 1 of the most ridiculous things I've ever seen giving the use for was essentially, tiktatra playing machine being controlled remotely by a Kiwi controller. So I had no practical purpose other than essentially just playing with that tool with the machine, using a controller.
[01:23:45] Unknown:
That's very cool. Actually, I I I'm a huge fan of mangoes, and I don't know about where you are, but here in the United States, this particular season, you get these yellow mangoes. Sometimes they're called champagne mangoes. Oh, man. Those things are so delicious. I've got 2 in my kitchen ripening right now.
[01:24:02] Unknown:
Amazing.
[01:24:04] Unknown:
Ryan, how about you?
[01:24:06] Unknown:
Alright. Well, for my pick, I used to be a smoker and I have since quit smoking and switched to e cigarettes. Haven't had an actual cigarette in almost a year now and so my pick is a flavor. It is called the Milk Ma'am by Vaping Rabbit. It's described as a frosted fruit tart milkshake. So like a milkshake made with pop tarts, and it's just it's nice and smooth and delicious and fruity and makes nice big clouds. Cool.
[01:24:40] Unknown:
Yeah. It's funny. E cigarettes seem like a like a like, a trend these days. I I nicotine has never been my my drug of choice, but, but, it's I was at ChefCon a few weeks ago, and it was just amazing to me how many people had these things out and were using them. It's, it's it's really quite a quite a thing. So, Gabriel, what PIX do you have for us?
[01:25:06] Unknown:
Well, I have 2 PIX, and, 1 the first 1 is the technology as you as you suggested. And, I'm using a a a Windows Manager that I don't think a lot of people use, but I think it's the best thing in the world. So that we encourage people to use it. And it's called, I3WM, and it's, on the i3wm.org. And it's, like, awesome, but better and way better. And, it's a very really the most flexible thing I ever seen, but quite easy to use. So I will give the link, and I will encourage people to train it and be be out. And this my second gig, is a French comic, author, watching the comic video, comic comic strips on the Internet, and it's it translates some of his, strips, in English. So you can you can read it, too, and it's it's, an amazing artist, and he's and he's quite geeky, and he he has a lot of very, cultural geek, things and, some pixel art are wonderful, some diamonds, a lot of Tim Bank, very and crazy, crazy stories and and a wonderful, wonderful artist. So, Boulay is is called Boulay, and his, his website is Boulay Corp, and I'll give the link to and, it's literally, really a must masterpiece, in the continuous, continuous producer, almost masterpiece. So I I would encourage you to to read this guy. And the EBIT collaboration with, Zach Weiner, which is the author of SMBC comic that a lot of geek knows. So it's quite, it's becoming slowly known, I think, in the US, but not yet, as much as, he should.
[01:27:00] Unknown:
So Yeah. I I said 1, Gabriel. Is amazing. I love it.
[01:27:08] Unknown:
So where was my topics?
[01:27:11] Unknown:
Very cool. Well, hey. You know, this has been an incredible episode. I I have learned so much, and and I was already impressed with Kiwi and its and I have now realized there's a whole constellation of of subprojects and then co projects under the covers there, and I've walked away even more impressed. First of all, thank you all and especially those of you who are up at now probably 3 o'clock in the morning taking the time to talk to us here in the East Coast of the United States. And and thank you all for for just for being such amazingly talented, creative, technically, astute people for creating this awesome piece of technology that we love to play with. We look forward to seeing what, you know, what there is to come from from you guys.
And, hopefully, as a result of this podcast, we can get more people to pitch in and help you along with some of the heavy lifting.
[01:28:00] Unknown:
Yeah. Definitely. Thank you all for joining us. It's been a lot of fun. It's great talking to you all. So for anybody who would like to follow you or find out more about what you're up to, if you could each just provide a way that people can keep in touch and see what you're see what you're doing.
[01:28:19] Unknown:
It was really fun not talking to you guys. Thanks a lot.
[01:28:23] Unknown:
Yeah. It was great. Very interesting. I think we are we we have a dedicated page about us, on the on the kiwi.org website, the about us page. So you can you can see about us here. And, so most of the community activity is happening in the Google Groups and and then the ERC channel. So it's you can go here and and talk to us or or anyway, we we try to be to cover all the bases be it Twitter or or Facebook or Google plus or over or or Reddit. We try to be everywhere, but the the place where I was the most proactive user is IRC. So if you want, you can see here. That's here.
[01:29:12] Unknown:
Great. And thank you, Chris and Tobias, for inviting us because, also, this is the first time we are meeting invoice.
[01:29:20] Unknown:
Yeah. Okay. That's great.
[01:29:23] Unknown:
So thank you for that. Yeah. Thank you.
[01:29:26] Unknown:
Absolutely. Well, it's Skype. It's pretty easy, so you guys should maybe take advantage of it and and, and have meetings every once in a while. Although, I know time zone difficulties can be can be a bit of a challenge. But sometimes, it's worth it because it's a higher bandwidth mode of communication. Right? I mean, like, IRC and email and all this are are wonderful, but sometimes the human voice, there's there's nothing like it. If you can't have face to face, this is the second best thing.
[01:29:51] Unknown:
I think the only thing stopping us from doing that to now was hesitation, and we'll definitely take a cue in, try to continue this. Yeah.
[01:30:00] Unknown:
Well, I'm glad we can get that started, William.
[01:30:03] Unknown:
Thanks a lot. Thanks.
Hello and welcome to podcast.init. Today, we are recording on April 21, 2015. Your hosts today are Tobias Macy and Chris Patti. And today, we're happy to be speaking with a few of the members of the Kibbe core development team. So, Ryan, if you would please start off by introducing yourself.
[00:00:37] Unknown:
Alright. Yeah. I'm I'm Ryan. I'm a developer in Kansas City. I originally am from Washington State. I've been programming since I was, like, 9 or 10, and, my favorite part of programming is making the computer talk to other things and make them do stuff. So like from routing drivers to interface with hardware or making my phone control my TV and computer.
[00:01:04] Unknown:
Gabriel,
[00:01:05] Unknown:
I would like to introduce yourself. Hey. Yeah. So I'm Gabriel Petitier. I'm, from France. I'm living near near Paris right now, and I'm a I'm a computer scientist too, and I've been working in the industry for a few years now. And I started programming, like, you know, when I was a teenager. And I I've been really interested in this and how to make things things work the way I want, and I've been tinkering since then. And, so, I've been playing with Python because, as soon as I found it, I I was, like, in love because it was a first long grace to to make so much sense. So so I was so I've been, very happy to to be able to work with it since.
And, so that's all I came to Kiwi because it was a great framework in in Python, so I came and gave a hand. So that's for me. Great.
[00:02:05] Unknown:
And, Matthew? So I first claimed for thinking to making a podcast about us. It was a a real surprise for all of us. So I'm mature about 32 years old, and I love musics, and I love programming. And it's, the same as, Ryan. I learned about, when I was 10 years old. It was literally writing something I got on a book on a screen. Even if I didn't knew how to run it, it was like opening edit, typing to come online writing some things and then try to rename the file with a dotcom doesn't work. DotExecute doesn't work. That that doesn't work until, my uncle start to teach me what was programming exactly, teach me me basic, teach me to visual basic.
I was actually working, in that, in the police department. And then computer science. I did a lot of stuff. It's like full stack development from Securinals, from the script, from managing servers, system administrator, web security. I don't know. Until I got, I find pythons, and I wanted to do a project with, some music in pythons. And, well, the rest of the story, I guess, would be on the next question we we will ask, but that doesn't.
[00:03:51] Unknown:
So how did you folks get introduced to Python initially?
[00:03:55] Unknown:
Well, on my side, it was on Linux, like, Linux affair. It's like, a French website, talking about lot of Linux stuff and stuff. And it was really when I was sick of doing all the same stuff in c, managing a list, thinking always about memory, creating class that is taking a lot of time. And I was wanting to focus on the artist side. I wanted to create not to do the same things all over again. And just show me a solution about it, and it was called Python. This is how it started.
[00:04:38] Unknown:
Well, I can I can go on that too because I was I started developing with the QBasic at first? And, for a number of years when I was teenager, I I linked in code with this. And when I start started learning other languages, I was surprised because I didn't find anything that was as easy to to learn and that but, so it seemed like the power of to do complex things had to to use very more much more complex languages. And, so I was ready to to let go of simplicity. But, when I found Python, I was light shocked because, it was even simpler and a lot a lot better than everything I have I have found until now. So I, I I just I I started when I was in a in a computer course.
I was learning about a lot of stuff in computer science, but there was no no no course about Python. But I just found a little book about Python, and I learned the basics of the syntax. And, and got from there, I thought I thought it on my own, thought it myself. So so it was, like, yeah, finding the the right language from my mind. So it was quite a discovery.
[00:06:08] Unknown:
That's very cool. It's always neat to hear when people sort of, you know, have these problems and especially when it, you know, it's at the intersection of our art and technology. That's great.
[00:06:18] Unknown:
Ryan, why don't you go ahead and tell us about how you got introduced to Python?
[00:06:23] Unknown:
Well, we needed to rewrite the software at our work and the old software was written using Zul Runner. It was all in JavaScript and it was just horrible and slow. It was hard to work on, poorly designed. So I was looking for something that I could use for make making desktop applications, and I didn't really wanna do CC plus plus. I wanted it to run on Linux. I wanted something with rapid development capabilities. And looking around, I found Python, and I fell in love with it once I got past the lack of braces.
[00:06:57] Unknown:
Akshay, thank you for joining us. Could you just give a brief inter introduction and tell us about how you got introduced to Python?
[00:07:06] Unknown:
Hi, guys. Akshay here. Okay. Now I got introduced to 5. Essentially, I started with, you know, working on the market at that time, in some level, I think. And I was looking for a framework that we're working on those. The only 2 available options at that time were, Jiwi and, empty corrugate, automated.
[00:07:33] Unknown:
Yeah. Empty 4 g. Yeah.
[00:07:36] Unknown:
Yeah. So in my research, I found out that the only option that was any worked for me was, Kiwi. That's when I started and came into, like, actually, it was first thing that I, worked on with. Right? Great.
[00:07:55] Unknown:
So, anyone who knows the story, can you tell us about how the Kibbe project got started?
[00:08:04] Unknown:
As we've mentioned. Yeah. It's it wasn't Kibbe at the start. It was named Pianti. At the same time as, what Ashkei said about, MT 4 g, we were, Thomas Simpson was the initial creator of the toolkit because he was trying to, to make, user interface easily in multi touch, and he didn't found anything that works for him. Also, secure on solution was was not working with with multi touch concept. It's like UT, GTK, it was not even started. There is not even a multi touch event on Linux. It was before everything. The tablet was not something you are you were using. So we started the toolkits, and at, like, 3, 4 months after, I was having the same issues, troubling, having issue to find a good toolkit about it. And until I see the option, see about Python, starting to play with it, and then I just found a Google code, with PyMt on it. I joined this.
I asked Thomas to join the project, and it was very welcoming. We did a lot of cleanups. We have been able to join the Google Summer of Code via NU Group because we work far on it. And we have been able to meet, from now at least 1 time per year. And then when KMT was quite of great, Android was growing a lot. And at some point, we we were forced we were forced to rethink the toolkits to be able to be more performanced and to have a graphic stack stack that works on mobiles because all we were using the all of NGL function, etcetera. It absolutely doesn't work on mobile.
So we did, like, free iteration before getting Kiwi the way it is currently. And all has happened in a week in US. We're at is, parent's house alone in 1 week, and we just think about what we want and really didn't check what the other were doing. Just think what we like, how we would like to do it, and we were brainstorming the whole day. And we invented, like, the language. We invented the way of the input event are working right now, etcetera. There's lot of thing happened this week. And TVs growing every month?
[00:11:19] Unknown:
I think it's because, you are working on this since at least 2 years, I think from 2, 008, 2, 000 to 2010. And then when you decided to rework everything, you had a lot of stuff in mind that you wanted to change, and you had a lot of a lot to experiment at this time. To experiment, but, for example, the Kiwi language, I at this time, I didn't even knew about QML
[00:11:45] Unknown:
or QT. I heard about it few months after, and, yes, we are very similar even if we are far more powerful than us. And but it's it's really like brainstorming. We tried to write it in a way. Like, we tried YAML, and it just didn't work. We tried a lot of other language. Like, what about XML? Even in parenting, we were being able to build a whole UI and attach events in XML. It was working, but, well,
[00:12:18] Unknown:
it doesn't please us. Yeah. Nobody likes it.
[00:12:23] Unknown:
But it's something that happened.
[00:12:25] Unknown:
Yeah.
[00:12:26] Unknown:
Right. Well, I mean, it it it kinda makes sense in a way, right, if you're thinking in terms of what's the most elegant way to express a user interface. And other projects have done that at various points in times. Right? And inevitably, when they choose that, nobody's happy with it. But you guys just had the foresight to say, we're not happy with it, and we're gonna go a completely different direction. And we're certainly glad you did.
[00:12:51] Unknown:
And and this is something that drive us from the start actually because we never think about how the other we're doing. Otherwise, we will fall into the same issues. Yeah. If you think about GTK and QT, so where they build UIs, the way they use events, it's they have an historic, and we were being able to just create from the start what would be a modern way. But I guess if we were doing it again right now, we might just came up with a different solution, a different way to do things.
[00:13:31] Unknown:
So so this kinda leads really well into the next question. What made you folks choose Python as the basis for Kivy?
[00:13:39] Unknown:
I don't have a real answer about it.
[00:13:42] Unknown:
Because Python is the language of metal make that make sense.
[00:13:47] Unknown:
That's all I think. It's the right language at the right time.
[00:13:51] Unknown:
Yeah. I think you you you you had used, Python for some time before. You had tried a lot of technology, and if you did that in Python, it was yeah. I mean yeah. You you said earlier because you you you wanted something different than from c. So I guess that's that's answer.
[00:14:12] Unknown:
I was starting a project called, and it was, a software when you can put well, actually, it's kind of, what you are doing on your day job, Gabriel. It's putting objects on the table and making music with it. And I was I was needed a simple things, having a possibility to have buttons and labels in OpenGL. Yeah. There is absolutely no good solution for it, at least a solution that looks good and when you can do everything and easy to use. I was starting to write it in c plus plus and spending so much time on it. This is how I discovered Python, TNT, and, you know, the rest of the story. Just, as I say, came up at the right time. So that is so bad. Go, JavaScript. But we don't know why Thomas
[00:15:06] Unknown:
chose chose the Python. No. And he's not here. He's not here. He's lost at the sands of time. Yeah. I lost. His story is lost. Okay.
[00:15:16] Unknown:
Alright.
[00:15:17] Unknown:
I I honestly, just guys, is at least a language that, give you time to focus on issues, not in the language itself. Right. Yeah. But not really dealing with the language. That's what I love to. Yeah. Yeah. Yeah. Me too. Forget about it. You just sometimes say, I love Python because you you just gain so much time of doing things that on over language, you will spend a lot more.
[00:15:46] Unknown:
Yeah.
[00:15:48] Unknown:
Well, that's 1 of the things that makes Kivy so enjoyable to work with. Right? Is because language, as you said, it it kind of allows you to be so expressive, and it kinda stays out of the way. And you can think in very high level abstract terms. Mhmm. I haven't had a lot a lot of time to play with Kibby, but I was very impressed when I was doing the prep for this episode, how I was able to sort of, like, download Kibbe, download the tutorial, and it's like, hey. I'm actually assembling, you know, a UI on the screen with widgets and labels. And and it's it all just kinda works and is very straightforward. And, like, it's not like you mentioned some of these other UI paradigms like, cute cute or or GTK, where there's this whole huge, like, conceptual framework that you have to wrap your head around before you can make anything happen on the screen.
I I think I think it's awesome that you guys did do choose Python, and also it's a testament to your good design that using Kivy is just such a pleasure to pick up and run with.
[00:16:48] Unknown:
Well, some people we have the concepts in Kibbe too, but you have to to learn. But some some people struggle more than others to to get them, but it's easy. Once you you got them, it's easy to forget about it because they fit your mind really well, I think. But so we we try to to to improve the documentation, because for some people, it's more important for than for others. But, I I I do think the concept are good. They they may need better explanation sometime, but I agree very good.
[00:17:25] Unknown:
So what were some of the major influences and inspirations for the way that Kibbe was implemented, or was it all just happy accident?
[00:17:35] Unknown:
Definitely a few happy accidents, I guess.
[00:17:38] Unknown:
At least the Kiwi language is not the accident. Yep. Wow.
[00:17:44] Unknown:
The the the event system is more, traditional, I guess, I would say, the the way It's the event system. Yes. Not the inputs 1. Okay.
[00:17:56] Unknown:
So in Kiwi, we have all the inputs are are the same but separated. It's like you have the same base place, and it's not really surplus. It's like, to be simple, you have a touch event. And in the touch, you know what the touch is capable of. So on the documentation, we have The profile. Yeah. There is a profile. I the profile said your touch is able to spot a 2 d position. A 3 d position is supporting a 2 d pressure or etcetera. So and for each profile, you have a set of attributes that is added to the original touch glass. So it's kind of, it's making the input completely abstract because it work on touchpad, but it can work also on, a table with camera behind when it is able to detect the pressure or the shape of your finger. This is information that you can receive and use it, or it can just work with a simple cursor.
And we tried also to use I have been able in the Leap Motion beta developer, so I received and no. Even before the before the beta, I received a a late motion device. And it's it was quite nice to to try, using it. We we were almost being able to use directly in giving. Just a little bit of rubber, and it was done. And the same for Kinect. And you cannot do that with other toolkit, honestly. That's amazing. In Kiwi, you can just provide there, and all your widgets will be able to to use it because also 1 of the big things in Kivy is every widget we've wrote is built on the touch events.
And the touch, by design, very there can be multiple 1. So you always think about it. Mean meaning, you can press 2 buttons at the same time on a Kiwi application. You cannot do that on other application. Gdk, q t, or even the web. It's not made up. You create 2 button on a form, you cannot press at the same time. You can do it in Kibbe, and it's opening a lot of, multi user application.
[00:20:45] Unknown:
Mhmm. You you mentioned the the conception of widgets, and and that's what I something that I really appreciate in Kivi. When you're doing Python and using, for example, GTK or Qt over frameworks that are repels of c plus plus layer libraries, and you you you don't have access to the underlying layer. You can't extend things the way you want. And when you are working in a library that is built in the language you are using, And especially in a as dynamic language as Python, you are free to extend about, anything, and you you can plug your parts just the the way you want. And I think it's a freedom, but you you rarely have, even because, for example, if you extend the C plus plus program, you do not have as much freedom to tinker with the with the elements of the framework as, as in Python because things can be closed, things can be built, and you aren't supposed to integrate too much with the framework.
Based on you have quite a lot of power at this level. And I think it's more like being on the shoulder of Giant, which is Python, and having the the feature as at the right level just so you can grab them. And, for for the the touch system, and just like other things, it's a bit of a throwing to the object oriented philosophy. So that instead of putting places on on things, you have 1 place, but eventually you have multiple places to to describe your events. It's not the object model which shows what, the event is. It's the data inside. And that's I I think it's indeed quite quite a good idea, quite a powerful
[00:22:53] Unknown:
Abstraction?
[00:22:54] Unknown:
Abstraction. Yes. Perfect. Perfect. So But I I I guess that's A bit a bit like duct taping, but for for events, it's a if it asks something, you are you can use it this way.
[00:23:09] Unknown:
So to to answer to the question, the influential or inspiration on the Kiwi design, it's like Python itself.
[00:23:19] Unknown:
Yeah. Yeah. That's great.
[00:23:23] Unknown:
That is very cool. It's like it's like not only is Kivy written in Python, but it's also designed to be Pythonic in nature.
[00:23:33] Unknown:
It's a concept because what is Pythonic? When you start Python, you you read a lot about being Pythonic. This is Pythonic. This is not. Where's definition of that? There's absolutely no documentation saying this is something that looked great in Python. This is not. So at the time of writing Kibbe on clientele.
[00:23:57] Unknown:
There is the the Zen of Python. But, there was a a great, conference about this, in the in the last Python that I watched on on YouTube last week. It was the explaining the difference between watching the PEP 8 compatible code and watching Pythonic code, and it was very, very interesting.
[00:24:18] Unknown:
So I think I don't really know who who did it, but it was really great. Yeah. It was Raymond Headinger. I I was there for that talk, and he definitely did a very good job of that. So, we'll we'll certainly add a link to that in the show notes so that other people can watch it because it was Great. It really did give a very good concrete example of what is Pythonic and what is not because, like you, I've when I first started learning Python, I kept coming across these references of Pythonic versus non Pythonic code, and It's it's very subjective, and there doesn't really seem to be any firm conclusion as to what really makes something Pythonic. It's more just the way that it feels when you're dealing with it. So Yeah.
You really did a great job of distilling it down to its essence.
[00:25:03] Unknown:
So speaking of distilling things down to their essence, 1 of the amazing things about Kibbe is that it's comparatively simple to learn. I mean, I understand that there are some concepts that you have to wrap your head around. But as I said to you, you know, I I was able to sort of at least pick up the rudiments of it and and if not run with it, then then walk with it with in a matter of a couple of hours. And that hasn't been my experience with various other UI frameworks that I've attempted to use, like cute or, you know, I remember getting pretty frustrated with with tickle t k back in the day. Mhmm. Yeah. So how did you folks make how did you folks come up with a design, that embodies this ease of use? I can only imagine it was it was on purpose. It can't have been just a happy accident. Can it? I I think what,
[00:25:56] Unknown:
Matthieu described earlier, it's, and some something I try to do, sometime too is to to say, okay. Forget about or or technically, things can be done, but what would I want to use? It's like a, design driven development. You you say, okay. I want to use something like this. Let's let's imagine it's possible. And then we then then you you you write the code that you would want to write, and, when you can you try to make it happen. It's a just to put some some code. What would wouldn't it be wouldn't it be nice if this code worked this way? Just and I think that's something very. But when when I write Python, something some a lot of time, I don't have to look at the documentation.
I I say, what if it worked this way that would be that would just be nice, and you want it on this works, And that's I I think what's the pleasure of Python is that things just comes naturally. You don't have to to to check the people for for the long a lot of time about how, what would be the most natural way to do 1 thing. And you can come up with it and be right 90% of the time. And I think building the the API this way is just the the what I would call, call Pythonic. So you you can just avoid experiment experimenting with API even before building it. I I think it's the key for this.
[00:27:35] Unknown:
This is what my experience I'm being with Kiwi in terms of designing. What we generally do is, first of all, look into how it's been done in other interfaces. For example, let's see how something is implemented in Android or in Qt. But after that, after first looking into how it's done in other places, we generally tend to ask ourselves how would it be more intuitive? How would it be simpler, and how can it be made in such a way that it can be, you know, just something that clicks into your mind and something that you can just, write down without having to look at the documentation.
And, generally, if you what we do normally try to do is pass everything to Tito or Matthew for that matter, and that's what is on IRC, we call him Theater. So he generally makes it very simple and figured out how it should generally be, and he has an art for it for making things as simple as possible. Even if the rest of us miss it, if it goes through him, it's simply divide to such a, such a place that, you know, it just becomes very simple, very straightforward for anyone to use.
[00:28:53] Unknown:
Cool. Thanks.
[00:28:56] Unknown:
Yeah. I have some problems.
[00:29:00] Unknown:
So what are some of the biggest challenges that you have experienced in building Kivy both, you know, either early on or most recently some of the biggest challenges that you've come across whether it's in the design or the actual development or maybe in, making it making it performant enough?
[00:29:19] Unknown:
I think performance is definitely the biggest 1 there. Biggest challenge. It's really hard to get everything to work the right way and get it all fast and everything, especially when you get on to these mobile devices where we're kind of almost trying to put a square peg in a round hole by putting Python on these Java based Android devices. But really I think that's the biggest challenge is just getting it to work and be fast in that native speed. And on desktop, it's pretty good most of the time, but on on the the mobile devices, it's a little harder.
[00:29:58] Unknown:
I bet. I mean, to me, that's that was 1 of the things that really blew my socks off about Kivi is that this 1 toolkit works so well on the desktop, on mobile phones, on mobile tablets. I mean, that is an achievement unto itself.
[00:30:12] Unknown:
When you compare it to Java, where Java is really all about being heavily multi threaded, and that's what these devices are made to do is these heavily multi threaded applications, and we have this Python application that's stuck in 1 thread.
[00:30:25] Unknown:
Yeah. And that
[00:30:27] Unknown:
And on it, I have a word about it. Even if I I talk, the kid about it, 2 years ago, but still all the current solution that is going on the community, like, it's not going to work for us in mobile. K? They have a good solution that works that will work only on desktop. If you want to do mobile development, this is not how you need to think. And I'm very, very, very sad to to see that there is absolutely, no consideration about mobile development in the Python community, except for us. It's like 3 weeks ago or yes. 3 weeks ago, I got an invitation to be part of the language summit, on TICON. Mhmm. And because they wanted to talk about the mobile app, In the end, there is absolutely no discussion about it. Still, there is so much thing to do on the language itself.
Can you imagine, like, right now, to be able to support Android, we still need to patch Python to be able to cross compile it. This is not something that is supported from the start in the language. So it can might not be something that you can understand or or or realize. But for me, having a language that I need to patch to change to be able to support a new platform like Android, and it's like Linux or being able to to compile for from my desktop doesn't look great. Right? And this is 1 of the step. There's so many other step. And then fixing the JIEL, a lot of, Evan Giddos say it's not an issue, etcetera. We on Android, there is no multiprocessing, and you will never been able to use it because this is not out.
So
[00:32:26] Unknown:
Yeah. They they don't want it. They they don't want it. I I tried to I spent, in early week trying to make it work, like, 2 years ago, and and, in the end, I understood that it wouldn't work because there's a system feature that is lacking, and the Android dev don't want it into because that will that could be a performance problem. So there's there's just no way for for Yes. So to communicate and, and to and to to do what's what's needed for multiprocessing. So you just can't have it. So you have to find over solution, indeed. And we have services to to to delay to put task in in the background, but it's clearly not enough. We are we have to find This is not this is absolutely not enough. Let's say you have a request,
[00:33:15] Unknown:
you are doing some I don't know. You you are loading images in synchronously. Okay? So you are putting time, for getting your data from the web, decoding it, the PNG into RGBA, uploading it into the GPU, etcetera. There is 1 part we can make it a little bit faster with with threads. But because it's threads and it's, a Python threads, it's the same as having just a callback in the clock on your main thread?
[00:33:49] Unknown:
It's it's actually worse. Or threads just they are just good to to avoid blocking the UI, but they won't make anything faster, except if you are able to to release the deal. But you have to go very low level for that. So it's not and you have to it's very limited. You can't do a lot without the deal. So
[00:34:10] Unknown:
Yes. And I don't so if anybody remember about the the project I heard about, and somebody is trying to solve that by starting 1 interpreter for each call. Okay? And he's able to move object, Python object, from 1 interpreter to another.
[00:34:33] Unknown:
I I didn't know about this. And
[00:34:36] Unknown:
so in that way, we might be able to do some work on 1 interpreter completely separated on 1 core but in the same process. And when you're done with it, you can put an op the object on the queue and get it on the first thread without any cost, without any deal. That will be awesome if it's actually work on mobile. It can be a solution for us.
[00:35:02] Unknown:
It sounds like to me, it it you know, it's really interesting hearing you guys talk about that. I've kind of I was a Ruby person before I was a Python person. I've been into Python now for 4 or 5 months, and I I saw many of the same discussions over there. Like, you know, it seems like the old school dynamic languages are all kinda struggling with these same issues. They don't really transition very well to the platforms, and they don't really have a good concurrency story. They really don't do threading very well. Anyway, it seems like it seems like hope you know, there there should be, like, either a new generation of of these languages or maybe some new language that supports these paradigms out of the box.
[00:35:44] Unknown:
Yeah. If if you if you want to support multiple calls and to to be able to to transition to share memory, this way, yeah, very dynamic languages are are not really able to to help. So, not yet. Maybe there is some discussion.
[00:36:05] Unknown:
Absolutely. So if you folks were to start the project over, what would you do differently?
[00:36:12] Unknown:
I suppose, if you don't mind, I'd like to mention 1 thing. Okay. 1 advantage of Kiwi on par on, mobile essentially is that the whole UI is based on open g s. I don't think we've talked about that. But because of that, essentially, what happens is, you know, anything that is based in graphics is essentially very fast. And if you really want to do do some share this and stuff like that. That part is not worked on by anything. So Yeah. That is 1 of the advantages that is, you know, not available in other, languages. We in TV, shear is in, effects, that you shared is up made very easy.
Implement Alexander Taylor. He did a effect widget and even before that using shear is was pretty easy in Kiwi. So in that sense on mobiles many things can be made very easy so if you were let's say doing anything related to, Open GL or, graphics directly, that wouldn't be bogged down.
[00:37:20] Unknown:
But it's this is 1 example of the design we choose. It's like not showing OpenGL to the users. And even if if it's not fully complete, like, there is still a lot of room for improvement here. But still, we have simple class that you can just use it to build your graphics, and all the OpenGL is optimized and done in the background. It's completely transparent, and this is what is making Kibbe on the graphic fast. Even if some people are making even faster with new project, still, the the initial solution is quite better than
[00:38:02] Unknown:
the other 1 can be. And and it it's it's actually a pretty thin wrapper. It's not very hard to to go around it and to to poke at the low level. And, there's I think that that's something that's quite a success to in the in the design, that you you can you you can easily use very advanced features, like stencil or or touching graphics, textures, or making them wrap, or more modifying, to change and building mesh mesh or things like this. And but it's very, very easy to just go To do the same thing in raw OpenGL, would be like, for well, it's a nightmare for for simple minded people like me.
So but about about performances, yeah. The the graphic part is is is very great. It's not not the issue. You can can do a lot if you manage to to to to be careful about the important parts. It you can do a lot because you have all the full power of the of the g p GPU. What's hard is is if you have number crunching or a lot of AV operations to do in the background. So that's that's a bit a bit harder.
[00:39:25] Unknown:
Yeah. Most of the time, this is you could you'll Python that you can make this, the application slow. If you are building a UI with, 1, 000 widgets, you might have an issues, with it on mobile. Instead, if you are able to write 1 widget that can manage the 100 behind, let's say if the 100 were, blocks on 2 d games, I don't know, or maze, so you can find a way to manage it yourself, not using the Kiwi widget. Then you will, execute less Python, and the graphic bar will just follow
[00:40:13] Unknown:
as you want. Yeah. I think that's what, is is pushing a lot on Kivant to do the for game development. We have still a lot of work on it, but it's very promising for every game development with Kivi. It's again further to Kivi. Yes. It's a very good project.
[00:40:34] Unknown:
To answer the question on, what we would change in the project, if we were to start from, scratch today, I think we already discussed about this. We were essentially looking for changes that we need to do in a major, release, let's say. So something like 2 0. And for that, we discussed on things like this. Essentially, 1 of the major drawback as we discussed discussed earlier is the concurrency. So I would hope we would be somehow able to solve that issue because that is 1 of the major issues considering even, your smart word is gonna have multiple codes. But you should be able to take advantage of that.
[00:41:15] Unknown:
About that, just 1 word is I was talking about it on, earlier on IRC. It's about React dot GS, and I read few things about React, native. So it's a project from Facebook that JavaScript is driving UI, the UI of your application. And the way it work on the native part is, like, they're they have a thread executing the UI. But also UI is driven from JavaScript on another thread. If you think about Android, they do the same. They have a UE thread. They have a that, is right that run on UE thread. So you can drag your UE thread, and you have threads around it that can control and push things into your UI.
This is something we completely miss in Qlik by design. And our biggest thing is because we are using opengl and OpenGL require you to execute all the commands in the main thread. If you think about shared context, etcetera, we can't go this way because, we have a lot of platforms to support, and means we cannot just use it. So we are stuck with this approach right now, and we we would need to redesign it from scratch. It will integrate with Ashcase that maybe trying to find a way of having a thread just displaying the UI and focus on that, loading the images, doing all the OpenGL and then having your main thread driving it.
We might get better performance. But, again, you cannot assume it unless you have an experiment about it.
[00:43:13] Unknown:
Yeah. But would it be hard, currently, for example, to say, okay. I I put every every everything in the all all my logic in separate thread, and I only, everything that will change the property that affect widget is, like, you know, call call call later, call schedule once, would would it you think it would be a lot of work? It will be a lot of work. Yeah. Okay.
[00:43:44] Unknown:
So what are some of the most interesting or strange things that you've seen to be used for?
[00:43:51] Unknown:
I think the coolest thing I've seen to be used for is what Gabrielle works on at work. That object is stable. That's just Yeah. Really cool.
[00:44:02] Unknown:
Well, if if you want, well, I I can thanks a lot for for the props. Yeah. I'll I'll I'll explain a little for for people. So we are I I I may be a bit unusual, because I'm 1 of the people not using currently Kiwi for mobile or platforms. I'm using it on big tables, like, giant iPads from, 40 to 80 inches the so so we are putting key key application on on on these tables, and, we are using the the the point that objects are to do when we put them on the table and, to to detect the features. And, this way, we we we check about the the ID of the object, and you we use protocol TUIO to send this data to other applications. So this way, we can build application that make use of objects.
And, this is all done in TV, so it's quite cool, I admit. It's but, I've I've seen a lot of cool things done done with Kivi, and the things I didn't have an idea that people will do. There's a project that is using Kiwi for for commanding, sending commands to to telemetry equipments for for cars and the prototypes adjusting. We are TV being used for educational gains, for, for children. There is TV used in medical equipment, for indoor on on Android Android applications for for pharmaceutics or IV industry. It is quite cool to see Kiwi used in all sort of places like this. So the I think what's what cool about it is that the framework doesn't force you in a direct direction. You can you can take it and build what you what you want with it. So it's it's very interesting.
Yeah.
[00:46:21] Unknown:
Is a framework. It's really, a toolbox for the developer. You can use it just you are making buttons, inputs, scroll view, etcetera. Or you can do a complete custom UI, and then it's the artist inside you that is picking Can do anything with it.
[00:46:43] Unknown:
Neat. Gabriel, do you think you'd be willing to or can you I don't know if your work will allow, but, if you can, maybe put a link just to anything that's that's out there about your work project with the big table.
[00:46:56] Unknown:
Of course. Of course. Of course, my work will allow. Yeah. I'll put a I'll put a put a link so people can check what we do. And, yeah, if that's if they enjoy it, that would be great.
[00:47:09] Unknown:
Okay. 1 of the coolest things that I've ever seen Kiwi being used for was done by Matthew. Now he used it for an interactive movie. What he eventually did was like
[00:47:21] Unknown:
Yeah. It was a project last year to tell stories. I was contracted to be able to to make a system for displaying movies k, on the theaters, and a lot of people in the rules was adding lasers. And they was able to point out something on the movies. K? So we have a infrared camera that is looking on the screen and we are able to analyze them and put it back into the movies. So there is multiple movies. 1 is like, say, it's a boy who is trying to let a girl, but he want to show it's the best boy ever. So every step, he's trying to do something like drinking the beer faster by his friends. And to drink the beer faster, all the audience must put the pointer on the beer of the heroes and move the pointer as fast as possible until there is no more beer. Okay.
And then gain some points, and there is another game when the audience must follow a shape and the shape is starting to shrink more and more and more. And if there is too much pointer of size or shape, then you'll you'll lost. Or if all the onions stay in the shape, you win, etcetera. So you get the ID. And at the end, you have, an amount of points, and depending of the points, the plot is not the same at the end. This is 1 1 usage of Qb really, yeah, really fun and interesting to explore.
[00:49:06] Unknown:
I don't suppose by any chance you have a link to that that you can share?
[00:49:10] Unknown:
Yes. Excellent.
[00:49:13] Unknown:
That'd be great. So what are some of the changes and features that you're particularly excited about in the future of Kibby?
[00:49:20] Unknown:
I think a big thing is gonna be getting in some multi language support. Allowing right to left text and reshaping of some of these, Eastern scripts where a character looks different when it's next to a certain character and just opening up Kivi to more people in that way Yeah. That can work in their language.
[00:49:46] Unknown:
So that's Yeah. That's an interesting challenge because a lot of, text is actually quite complicated to display, and we're doing It is. Everything in in Open GL means we have a lot of the burden, on us. So but, thankfully, there are some libraries we can make use of, but it's still quite
[00:50:08] Unknown:
some work. And even the standard solutions like HarfBuzz, there's virtually no documentation for it. You just have to go and find examples, look at other people's code. That's really all there is available for us.
[00:50:23] Unknown:
In terms of features, we we were essentially looking to, you know, change everything we can in terms of next, we're looking forward to a 2.0 release. So, hopefully, we'll have not released before that. But for DuPont release, hopefully, we can fix almost as many issues that we have, essentially, for multithreading and extra, other things like that. And 1 other thing that we didn't talk about was UI. Right now, the widget sets that we have are generally started, something that was geared geared towards desktops. They weren't really started from the ground up thinking mobile in mind.
So 1 of the things that I'd like to see come up next is widgets that are designed, keeping in mind mobile, and their speedy and vast performance on mobile.
[00:51:20] Unknown:
Yeah. And integration in in platform specific UIs, it's something that people ask quite a lot. Even these days, people use temps a lot more or as more, like, thankfully, thanks to Google Material UI. They understand that they can design the UI in the way they want, and we give a lot of freedom for that. So they they I think they they they there may be less demand for it in the future. But even on desktop, for example, being able to integrate more in the in the UI as a user is used to, maybe an important step to to do. And even using, for example, shortcuts or accessibility features, there's quite a lot to do. And I think something to note is that Kiwi, historically, has not been developed with a longer, what, road map.
It was like, oh, I need some I need this. Let's try to add it and see how it works. And thinking the design, but 1 step at a time. And so we are there's not a lot of long term features that we are planning, but we we we try to do that for 2.0, as as what I said before. But, so we have a Wiki page about this. So if people are interested, we'll we'll try to we'll put a link on that. Absolutely.
[00:52:52] Unknown:
Now may maybe just I I would like to talk about 1 thing, about it. It's like even if the podcast is about TV, Kiwi is just 1 piece of all the project that we, as core developer, are managing. It's like we, are doing Python for Android. It's a separate project that is, is being able to comp you can compile Python and some of the Python extension on Android. So most of the time, you need to patch the extension if you want to be able to combine it. We're exactly the same for, iOS. It's not Python for iOS because it is a separate project and application, so we call it Kivi iOS.
We also manage, we invented actually because there is no good project about it, library to use the native language of the platform directly from Python. For example, if you want to touch some of the Java API on Android, Before, it was very complex to get it. It's like you need to route a gany, a wrapper that we call you Java, and so you will wrap it into a Python extension, and then you can use it. Let's say there is absolutely no contribution on this part, then we invented Pygenius. So because Java can instruct, instruct
[00:54:29] Unknown:
I don't Introspect introspect.
[00:54:31] Unknown:
Introspect it. Then we build that just use the power of the Java language to be able to do the duck typing as you would do on the Java. And you can call directly methods that even if you didn't import them. This is very cool because we have also another project called the Kiwi remote shell. You just start the Kiwi application on your mobile. It gives you an SSH server. Then you can connect onto it. And you have a Python console where you can start to import Pygenius and test the Android APIs in lives. You can create an Android widget in Python and add it to your PV application, etcetera. This is something cool. We don't have the same for iOS, but it can be completely durable.
And the same for what we do for Pygeneus. We do the same for iOS, with objective c, and it's called Pyogr. G. So as you can see, kv is only the u v part, but to be able to execute it and allow the user to use a feature on your form. We have also a lot of opportunity. I miss the 1 most important 1, is player. And player is also a good invention because we build all first step. So the solution that the buyer and buyer is like the wrapper to be able to call the language the destination language, whichever are object. Now we have player, and it will abstract all the the features of yeah. Platform specific features. Like, if you want to access to the GPS, you don't want to write, specific code for Android and iOS and other platform.
So we have just, a facade as we called, and we have different implementation pair platform. And we have that for a lot of things. That's it. So currently, this is that the future of Kiwi, it's bad that the question is only for the Kiwi because Mhmm. We did a lot, outside Kiwi, And we have also a card to play on that. As you said, Gabrielle, people were asking about, is there a way to make, to create native interface in Python? And there is absolutely no good alternative, today. And we have all the tool to build a new library, not Kivy, because it doesn't work the same, and I'm not sure who do it with, with it. But if we will start from scratch like Ionic did, it's we have all the tool for it.
It might be 1 of the future of the new Python library.
[00:57:33] Unknown:
Yeah. Because we are trying to cover a lot of use cases, and maybe some of it, they are not covered correctly in or can't be correctly covered in HTML laundering. Yeah. We yeah. Said actually a a very, very bad bad thing to to try with
[00:57:52] Unknown:
Gmail. Yeah. TV have no tools to be able to do HTML rendering, And we will not be able to provide, not soon, not in the future because it's a very big things to have. In Open GL, this is also our our core issues. It's it's a big point for us, and this is where all the performance is going on. Because we're in opengl, try to find the library that works. You can try webit directly. It's just a mess. And there is project around it that's trying to do it and it's not going to work on mobile soon either and except if you want dependencies that was you I don't remember how much. 50 megabytes, let's say. Mhmm. Might be even more. Yeah.
[00:58:38] Unknown:
But 1 of the things that we we we did effectively, was the the things that are separate and the Python prompt read, kv, EOS, and, player and pygeneus, everything is separated and can be reused. So, indeed, we tried not to put everything in Kiwi, and, and so people have to have to understand. But if they if they want something in Kiwi, in the the Kiwi ecosystem and, not everything. They can go and work with us anyway. We we are when we are open to to and we we and we are very open for help in the various project outside of Kiwi. So they we can we can come 1 of the best example.
[00:59:29] Unknown:
It's using people are using it as an alternative solution that's not working very well, and we are very performance on it. So there is a lot of contribution and a lot of focus on this project. Mhmm. This is awesome.
[00:59:45] Unknown:
That's very cool. The Kibbe remote shell project in particular sounds really, really neat. I mean, I can just envision people sort of live coding on their mobile devices from their the the the comfort of their laptop. It sounds really, really nifty.
[01:00:00] Unknown:
Yeah. No. Except
[01:00:02] Unknown:
it's just for testing. You don't you have no way to save what you did.
[01:00:08] Unknown:
Just a share. But it it could be improved. It just Yes. As a share, but it it could be improved.
[01:00:14] Unknown:
Remember that we are very few active contributor.
[01:00:18] Unknown:
Mhmm.
[01:00:20] Unknown:
We and the community is growing, in my point of view, very fast, and we are not a lot to handle everything. We are we are getting so much backlog.
[01:00:31] Unknown:
Yeah. Lot more new user than new new contributors.
[01:00:36] Unknown:
But Yeah. And maybe this is something that can keep us because if you are not be able to answer everything and letting all things goes by itself, it's not good. That's what can we do, Ad? Yeah.
[01:00:51] Unknown:
Well, 1 of the last questions that we have here, I'll save I'll save it for that, but maybe we can maybe we can help with that.
[01:00:59] Unknown:
That would be great.
[01:01:02] Unknown:
So, yeah, before we get to that last question, just 1 more. Wondering if there are any new platforms or operating systems that you are looking to add support for such as the Sailfish OS from Jala or the new Ubuntu phone, operating system.
[01:01:18] Unknown:
I I've been wanting to to to, to help, Ubuntu Ubuntu support, but I've I've had a a few look at it and tried when we were adding SDR because that was a path to for it. But I didn't find the time in the last 6 months to work on it. So if anybody is interested, that will be cool. I'm pretty sure Firefox OS won't be possible, but, I because
[01:01:45] Unknown:
Don't say don't say impossible.
[01:01:49] Unknown:
Well, it would be but if if somebody is able to do it, that would be great. But I don't think Mozilla people would be happy about this. But if you have an idea, I I I I I wouldn't say impossible for you. Okay? But,
[01:02:06] Unknown:
I think with the question of practicality on Firefox OS, the specs of the base phone are so low that right now, I think it's not practical.
[01:02:17] Unknown:
Mhmm. Yeah. It's very, very is it is it cheaper is it cheaper Firefox phone is quite local. It's it was low spec. Yeah.
[01:02:30] Unknown:
Very cool. So now here is that question that I mentioned previously. This is your opportunity to to rally support to your cause. Is there anything in particular that you would like to ask our listeners to help with? It can be something as simple as, you know, you guys need help fixing some documentation problems or help dealing with the backlog or whatever. Like, how can how can our listeners help, because Kivi is an awesome project and it deserves it deserves to be supported.
[01:03:02] Unknown:
Well, probably the best way is just people get out there, start using it, start figuring out, you know, what they like about it, what do they not like, what could be improved upon it. The feedback helps a lot. There's always room for help in the documentation and examples especially. We allow people complaining there's not enough examples of how to do things.
[01:03:24] Unknown:
Yeah. There are a lot of things. They they can try to reproduce bugs if they they see something. Maybe some bugs have been resolved and not fixed and not marked as fixed. Or if, somebody pushed a a a a pull request and that nobody finds the time to test it Mhmm. They can say, oh, it works for me too. But that's a lot of help for us because we have confidence that it's we can we can check it, and, and, it will probably be a good work to to manage. And, yeah, giving feedbacks. View is a lot of work on the documentation already, but it's a big, big, big documentation.
So it's always great to to to have a look and see maybe things have been changed or they they need improvements. That's that's always great to to to look. And, anyway, I'm sure a lot of people use TV and, not sure if they can help, and, they they just have to know, but we are very welcoming to to that. We don't always have time to react, immediately to but we we try.
[01:04:34] Unknown:
Yeah. I'd like to add this thing. Now, GSOC selection students just ended, and there'll be a lot of students that didn't get through. I'd like to tell them, you know, they shouldn't just wait for ESOC. If they really want to go forward, they should just go ahead and choose the project of their liking. Let's say, if you like Kiwi, just go there, start contributing to it even if you weren't selected for the SOC. Just continue working on project that you're interested in. And, you know, just start small. Start with some simple documentation fixes. In fact, not this is not just for students. For anyone who's interested in helping out here, we really need a lot of people helping out. And if you can just start smaller, just add some simple documentation access, and GRDF makes it very easy. All you have to do is create a login, open a web form, just look at the documentation.
We feel even if it's just as simple as, you know, English correction or grammar correction, just go ahead and do it online and then submit. All you have to do is click on the submit button and a new PI submit it. That's it. That's how easy it is to get in. Now once you get in and for people who are already aware of, they're a bit more advanced, they can get into other stuff. You know, slowly either either gradually increase your commitment level or if you are comfortable straight away go to the number of open issues on gidhub and see what you can work at. And I'm mentioning this in terms of GSOC because, you know, contributing to any open source project helps. It helps not only the open source project itself, but it also helps you, the contributor, in terms of adding to your portfolio. And right now, open source is a very good way to add to your portfolio.
A lot of the major companies are looking for experience people experience with open source.
[01:06:39] Unknown:
Absolutely. I think it's no accident that, LinkedIn now has a very prominent place in your LinkedIn profile to add your GitHub repository. Yep.
[01:06:49] Unknown:
Oh, could I miss that?
[01:06:52] Unknown:
I have 2 things to add about it. It's like you guys asking for that we are open to all the contribution. It's almost the case for everybody. A lot of open source project. Right? What you are really missing is people that are able to each time ever step back about the feedback of of others and giving us a good solution for for it. Because we have so much backlog that even if we have a lot a lot of more contribution, if it's documentation issues, most of the time is merged right away because we are always great. But when you when people are starting just to ask a little bit of question and then when we have to talk about it, it's taking a lot of time for all of us.
It's will be nice if great people also can contribute us directly with solution or having, asking to maintain a project like or for Android, just having a a looks from time to time, like, 7 day per week will be awesome on Python for Android just to answer to other people saying, okay, your recipes on the Python 400 is great. You have few things to change, etcetera. We, Evan, on the small team cannot handle so much. It's already too much, in my So we need maintainers and, and that's 1 of the first points. The second point I I want to raise, if if if somebody in the world would like to sponsor us even for the Kiwi Association, to be able to buy new hardware. The current 1, we are using, already too much for building our unit test, and Matam, another core developer, is trying to use it also for releasing, kvnightlies as a well built package.
We are able only to run Linux Windows when you start to run iOS, OSX, sorry, all the server is crashing. We are very limited by the environments we are testing on. And I'm sure if we have, better hardware, we will be able to choose the. Madam, we're very happy to push all of it, There is Kiwi iOS when I want to do the nightlies, but there is no hardware for it. And at some point, we need also to increase our unit test coverage. This is very, very low. Every time we move something on the code, even Python 400 on Kibbe, it will it might have an impact somewhere else, and we don't see it. We see it only because an user is reporting us, an issue of we as code developer are using a part where we're completing master and then it breaks. This is not cool. This is something that can be seen before that, and this is a critical point of the project.
There is a lot of, lot of widget we need to maintain. We are, looking forward, forward to the version 2, and we don't have the 2 to be able to do it in a in a clean
[01:10:24] Unknown:
way. So talking about increasing unit test coverage, it strikes me that that might be a tricky thing for people who say, I wanna help, I wanna dive in. Right? Because in order to test write tests for code, have to have a really solid understanding of how it works and what you're testing.
[01:10:42] Unknown:
Yep. Not necessarily. But if I can say, I mean, is that's actually how I started coming, helping Kiwi in the very first place because I I I found the bag, and I say, okay. I I just want to to check if it's ready or bag, and to reduce my my card to very simple. And when it was simple enough to to test, directly, well, it was nearly a new unit test, so it could be introduced directly in the in the in the little library. So just doing a little little test case of a simple bug, It's already quite helpful, actually. If you if you look at a bug report and you generate a a news a test case for it, it's a it's a very, very, very cool contribution.
[01:11:33] Unknown:
Well, I'd like I won't like to discourage anyone from use writing unit test case directly, but I think what the, Matthew was hinting at was we recently added a link on our web page for donation directly. We, lack the hardware, and we would definitely love to get some new hardware for testing. And as he said, we need, new hardware to be able to, you know, set up nightly packages for testers and stuff like that. We need a lot more, influx in terms of money also. So if best way would be if someone would hire, Matthew directly, I think, for working with Kiwi.
[01:12:24] Unknown:
No. Honestly, at least supporting for the. You don't know about it guys, but for example, the new reboot of the KPI US, the version of the, it was done to be to support all the different, CPU, not only area, but also the 64 version and the the simulators. Okay? And last week, I booked, 1 new iPad to be able to finally test it. But, it's like nobody else will do it and will offer me an iPad, and it's very hard to ask that on the Internet. I don't know how to do. And, well, I don't know how to say. But, yes, sponsoring at least, the kiwi product may give us a little more space, to buy things and at least maybe put bounty on the biggest issue to be able to make the community participating more on the biggest issue we've got.
[01:13:39] Unknown:
Yeah. I mean, it's it's definitely a tricky problem. Right? Like, I I'm definitely and I'm guessing Tobias isn't either. Neither of us are particularly connected with mobile hardware manufacturers. You know, we can certainly I can certainly contribute some cash, but it's tough. I don't I don't know how to hook you up with those hardware manufacturers. I mean, 1 thing that I would suggest is, you know, yours is a project that an awful lot of people get an awful lot of value out of. Maybe a way to handle this might be to reach out to the Python community through things like, you know, the Python weekly newsletter or Pycoders or or that kind of thing to to basically say, hey, the Kibbe project is struggling. We're looking for hardware and we're looking for sponsors to help us get that hardware.
I think you might be surprised, you know, people working in these various companies might might see that and be able to help you out.
[01:14:37] Unknown:
That's a good idea. Yep.
[01:14:41] Unknown:
That's definitely a good idea that we should take up on.
[01:14:48] Unknown:
That's great. Well, we we like to do with every episode, we like to do picks. These can be anything that you're interested in or like or wanna recommend to our listening audience. It can be technology related or or not. I usually recommend a beer because I like craft beer. So, Tobias, why don't you get us started?
[01:15:10] Unknown:
Sure. So I'm gonna keep it short. First pick I'm gonna choose is the Zeal offline documentation browser. So for people who use Mac OS, there's a similar project called Dash and Zeal is the version of that that will run on Linux. So it's a way for you to download the documentation for various programming languages and libraries and have access to them when you're not online. So if you're on a plane, you wanna be able to look up a particular Python method, you have it stored right on your laptop. And the next pick that I'll let you choose is a comic strip called Commit Strip. It's actually published in French and English and it's just a daily comic strip about the life of developers and it's usually got some pretty amusing content. So definitely recommend that.
[01:16:02] Unknown:
So I just wanna second your recommendation of Zeel. I, before I I was made very happy and given the Mac laptop and my current gig, I was working with a Linux, a Linux desktop and a Windows laptop. And, I, I had been a huge fan of Dash for years and still am. Now that I'm back on the Mac, But when I was working in Linux and Windows, Zeel was was certainly a really excellent analog and and does the job quite nicely. And and for anybody who hasn't used this kind of thing before, what's super cool about these things is you can hook them into your IDE or editor of choice. And with the dock all offline and already downloaded and everything, it's like it really is instantly at your fingertips. And and the way the UI works is really, really kind of nice. I highly recommend it.
So I'll move on to my picks real quick. And the first pick that I will pick is unshockingly a beer. Jack at Jack's Abbey Brewery here in in Framingham, Massachusetts is a brewery that I'm rather fond of. I haven't yet tried a beer from them that I really disliked. And, and they make a beer called Smoke and Dagger. And it is a really delicious, dark beer with a lightly smoky flavor. It's considered to be a Roush beer, which is not a a variety that I have a lot of a lot of experience with. But, it's it's really tasty. It's it's I've tasted some German smoke beers that a friend of mine is into, and, you know, it was just a little too much for me. It was kinda like falling face first into a camp, you know, the can't the ashes of a campfire with your mouth open. But, it's exactly.
But this one's this one's pretty tasty, dark and malty, I I highly recommend it. So the next thing I wanna recommend is a movie which for some reason here in the United States, it was slammed by the critics. The critics really didn't like it and I really don't understand. I think they're on crack because I think it's a really good movie and is a story that was well told, well acted, and and just worth seeing. And that's called A Woman in Gold or Woman in Gold, excuse me. There's no a in there. And it's about this woman and her family pre World War 2, you know, during in Austria, when the Nazi Germans were were sort of taking over and about what happened to her and her family and the story of a particular priceless piece of art that used to hang in her household. And I won't say any more than that. I will just say, if you look it up on Rotten Tomatoes or whatever your other favorite movie site is and see it rated low by the critics, ignore it and go see it anyway because I think it's really good.
And the last pick that I have is, a, excuse me, last pick that I have is, jeez, I lost my last pick. Well then, I guess I'm gonna keep it short and leave it at 2. Matthew, what what kind of picks do you have for us?
[01:19:09] Unknown:
The first 1 will be IATAZ. I'm not sure about the pronunciation is, yet another Python formatter from Google. Mhmm. Yeah. K. It's actually a formatter that you just feel, you give your Python file and give you a very great Python file with, with actually state 8. And it's this is the most working tools I ever seen from all the other ones, like auto pet 8 or pet 8 5, if I remember well. And thanks to this project, I own some of the project I'm working on. I just use the tools to clean all the files. And then, with my student, I can ask them to focus on the code and not in the formatting of pythons when they just start to learn Python. So it's a it's a good tool for me. That was my first pick.
My second pick will be a project I'm working on. It's main chinese.com. It's not really related to Python even if all project, is running on Python and it's built with Flask and Jinja, etcetera and very good HTML5 stuff. In Chinese, it's a website that you that will bring, you can learn Chinese, in a story. Okay? You will be a little dragon, and you will, have an in child. The cat will try to add you in the world of all the Chinese, world. And you will learn vocabulary, grammar, and then talking with your browser as a dialogue. So we are using the latest HTML 5, web audio and web speech streams to make it happen. It's still in beta. You can ask for a subscription, but we are launching a kick starter soon, and every feedbacks will be welcome.
And 1 last thing, just because you said beer, I'm sure you might never test it. I tested only 1 time in my life. It's called, in French, La Reine Scrochon. And so La Reine Scrochon is a Belgian beer, and it's made in how do you call I miss a vocabulary. Where is the beer is made?
[01:21:38] Unknown:
A brewery.
[01:21:40] Unknown:
Brewery. Okay. Not an automatist 1, but, an old 1, very old 1. Everything is done by hand. Okay. It's artisanal. It's the word. No. Yes. Yes. That's the word. Yeah. Okay. So it's 1 of the last year done in artisanal in Belgium, and I have been able to visit it only 1 time in Sunday. And after the visit, in front of the sun, we drink a whole beer. I was completely out of nowhere. I it was very hard to get back to my house after that. And it's very light. Just 1? Yes. Just just 1, but very, very light, very tasty. It's doesn't even look like bronze or brown beer, etcetera. It's almost water. Okay? But on the taste, you feel like it's a beer very light.
Right? Just I liked it. That's it.
[01:22:45] Unknown:
Wow. That sounds delicious. If you could, at the end of the show, give us links to that beer and those projects that would be awesome. Okay. So let's see, Akshay, you're up.
[01:23:02] Unknown:
Okay. First thing that I'd like I'd like to share is essentially mangoes. I'm from India, and I love mangoes. And you can try them out at in this season, the best thing to have. And the second thing I'd like to share is 1 of the most ridiculous things I've ever seen giving the use for was essentially, tiktatra playing machine being controlled remotely by a Kiwi controller. So I had no practical purpose other than essentially just playing with that tool with the machine, using a controller.
[01:23:45] Unknown:
That's very cool. Actually, I I I'm a huge fan of mangoes, and I don't know about where you are, but here in the United States, this particular season, you get these yellow mangoes. Sometimes they're called champagne mangoes. Oh, man. Those things are so delicious. I've got 2 in my kitchen ripening right now.
[01:24:02] Unknown:
Amazing.
[01:24:04] Unknown:
Ryan, how about you?
[01:24:06] Unknown:
Alright. Well, for my pick, I used to be a smoker and I have since quit smoking and switched to e cigarettes. Haven't had an actual cigarette in almost a year now and so my pick is a flavor. It is called the Milk Ma'am by Vaping Rabbit. It's described as a frosted fruit tart milkshake. So like a milkshake made with pop tarts, and it's just it's nice and smooth and delicious and fruity and makes nice big clouds. Cool.
[01:24:40] Unknown:
Yeah. It's funny. E cigarettes seem like a like a like, a trend these days. I I nicotine has never been my my drug of choice, but, but, it's I was at ChefCon a few weeks ago, and it was just amazing to me how many people had these things out and were using them. It's, it's it's really quite a quite a thing. So, Gabriel, what PIX do you have for us?
[01:25:06] Unknown:
Well, I have 2 PIX, and, 1 the first 1 is the technology as you as you suggested. And, I'm using a a a Windows Manager that I don't think a lot of people use, but I think it's the best thing in the world. So that we encourage people to use it. And it's called, I3WM, and it's, on the i3wm.org. And it's, like, awesome, but better and way better. And, it's a very really the most flexible thing I ever seen, but quite easy to use. So I will give the link, and I will encourage people to train it and be be out. And this my second gig, is a French comic, author, watching the comic video, comic comic strips on the Internet, and it's it translates some of his, strips, in English. So you can you can read it, too, and it's it's, an amazing artist, and he's and he's quite geeky, and he he has a lot of very, cultural geek, things and, some pixel art are wonderful, some diamonds, a lot of Tim Bank, very and crazy, crazy stories and and a wonderful, wonderful artist. So, Boulay is is called Boulay, and his, his website is Boulay Corp, and I'll give the link to and, it's literally, really a must masterpiece, in the continuous, continuous producer, almost masterpiece. So I I would encourage you to to read this guy. And the EBIT collaboration with, Zach Weiner, which is the author of SMBC comic that a lot of geek knows. So it's quite, it's becoming slowly known, I think, in the US, but not yet, as much as, he should.
[01:27:00] Unknown:
So Yeah. I I said 1, Gabriel. Is amazing. I love it.
[01:27:08] Unknown:
So where was my topics?
[01:27:11] Unknown:
Very cool. Well, hey. You know, this has been an incredible episode. I I have learned so much, and and I was already impressed with Kiwi and its and I have now realized there's a whole constellation of of subprojects and then co projects under the covers there, and I've walked away even more impressed. First of all, thank you all and especially those of you who are up at now probably 3 o'clock in the morning taking the time to talk to us here in the East Coast of the United States. And and thank you all for for just for being such amazingly talented, creative, technically, astute people for creating this awesome piece of technology that we love to play with. We look forward to seeing what, you know, what there is to come from from you guys.
And, hopefully, as a result of this podcast, we can get more people to pitch in and help you along with some of the heavy lifting.
[01:28:00] Unknown:
Yeah. Definitely. Thank you all for joining us. It's been a lot of fun. It's great talking to you all. So for anybody who would like to follow you or find out more about what you're up to, if you could each just provide a way that people can keep in touch and see what you're see what you're doing.
[01:28:19] Unknown:
It was really fun not talking to you guys. Thanks a lot.
[01:28:23] Unknown:
Yeah. It was great. Very interesting. I think we are we we have a dedicated page about us, on the on the kiwi.org website, the about us page. So you can you can see about us here. And, so most of the community activity is happening in the Google Groups and and then the ERC channel. So it's you can go here and and talk to us or or anyway, we we try to be to cover all the bases be it Twitter or or Facebook or Google plus or over or or Reddit. We try to be everywhere, but the the place where I was the most proactive user is IRC. So if you want, you can see here. That's here.
[01:29:12] Unknown:
Great. And thank you, Chris and Tobias, for inviting us because, also, this is the first time we are meeting invoice.
[01:29:20] Unknown:
Yeah. Okay. That's great.
[01:29:23] Unknown:
So thank you for that. Yeah. Thank you.
[01:29:26] Unknown:
Absolutely. Well, it's Skype. It's pretty easy, so you guys should maybe take advantage of it and and, and have meetings every once in a while. Although, I know time zone difficulties can be can be a bit of a challenge. But sometimes, it's worth it because it's a higher bandwidth mode of communication. Right? I mean, like, IRC and email and all this are are wonderful, but sometimes the human voice, there's there's nothing like it. If you can't have face to face, this is the second best thing.
[01:29:51] Unknown:
I think the only thing stopping us from doing that to now was hesitation, and we'll definitely take a cue in, try to continue this. Yeah.
[01:30:00] Unknown:
Well, I'm glad we can get that started, William.
[01:30:03] Unknown:
Thanks a lot. Thanks.
Introduction and Host Introductions
Meet the Kibbe Core Development Team
Initial Introductions to Python
Origins of the Kibbe Project
Choosing Python for Kibbe
Influences and Inspirations
Design Philosophy and Ease of Use
Challenges in Building Kibbe
Performance and Optimization
Interesting Uses of Kibbe
Future Features and Improvements
Supporting Platforms and Ecosystem Projects
Community Contributions and Support
Picks and Recommendations
Closing Remarks and Contact Information