Kivy – Interactive Applications and Games in Python, 2nd Edition Review

I was recently asked by the author to review the second edition of “Kivy – Interactive Applications in Python” from Packt Publishing. I had difficulty recommending the first edition mostly due to the atrocious editing – or lack thereof – that it had suffered. It really reflected badly on Packt, and since it was the only Kivy book available, I did not want that same inattention to quality to reflect on Kivy. Packt gave me a free ebook copy of this book in exchange for agreeing to do this review.

At any rate, the second edition is much improved over the first. Although a couple of glaring issues remain, it looks like it has been visited by at least one native English speaking editor. The Kivy content is good, and I can now recommend it for folks who know Python and want to get started with Kivy. The following is the review I posted to Amazon:

This second edition of “Kivy – Interactive Applications and Games in Python” is much improved from the first edition. The atrocious grammar throughout the first edition book has mostly been fixed, although it’s still worse than what I expect from a professionally edited book. The new chapters showcase current Kivy features while reiterating how to build a basic Kivy app, and the book covers an impressive amount material in its nearly 185 pages. I think this is due largely to the efficiency and power of coding in Python and Kivy, but also to the carefully-chosen projects the author selected for his readers to create. Despite several indentation issues in the example code and the many grammar issues typical of Packt’s books, I can now recommend this book for intermediate to experienced Python programmers who are looking to get started with Kivy.

Chapter one is a good, quick introduction to a minimal Kivy app, layouts, widgets, and their properties.

Chapter two is an excellent introduction and exploration of basic canvas features and usage. This is often a difficult concept for beginners to understand, and this chapter handles it well.

Chapter three covers events and binding of events, but is much denser and difficult to grok than chapter two. It will likely require multiple reads of the chapter to get a good understanding of the topic, but if you’re persistent, everything you need is there.

Chapter four contains a hodge-podge of Kivy user interface features. Screens and scatters are covered well, but gestures still feel like magic. I have yet to find a good in-depth explanation of gestures in Kivy, so this does not come as a surprise. Behaviors is a new feature in Kivy and a new section in this second edition of the book. Changing default styles is also covered in this chapter. The author does not talk about providing a custom atlas for styling, but presents an alternative method for theming involving Factories.

In chapter six the author does a good job of covering animations, and introduces sounds, the clock, and atlases. He brings these pieces together to build a version of Space Invaders, in about 500 lines of Python and KV. It ends up a bit code-dense, but the result is a fun game and a concise code base to play around with.

In chapter seven the author builds a TED video player including subtitles and an Android actionbar. There is perhaps too much attention paid to the VideoPlayer widget, but the resulting application is a useful base for creating other video applications.

Posted in grpug, Kivy, python, tech | 2 Comments

My Farewell to GRMakers

Many of you have seen the recent board resignations and are wondering what the heck is going on over at GR Makers. We each have our own experiences, and I will set out mine here. It is a long story, but I think you deserve to hear it, so you can draw your own conclusions. I encourage you to reply to me personally ( or via the comments on this blog post if you’d like to provide clarifications or additions to what I have to say.

I joined GR Makers not so much to make things, but to have an excuse to hang out with the most interesting group of people I’d ever met. That group started as half a dozen open source enthusiasts gathering at weekly Linux user group meetings at coffee shops, and grew to a much larger, more diverse, and eclectic gathering of developers, inventors, designers, electronics hackers, and much more thanks to Casey DuBois’ welcoming personality, non-judgemental inclusiveness, and networking prowess. A part of what brought the group together was an unstructured openness that made everyone feel like they had a say in what we were doing. When the group grew too large to continue meeting in Casey’s garage, several regulars looked around for ways of keeping the group together and growing in other locations.

Mutually Human Software offered a physical space and monetary support to keep the group together, but we had to change how the group was run. Since MHS was providing so many resources, they would own the group. There was a large meeting to decide if this was the way we wanted to go. The opinions were divided, but in the end we had to take this deal or disband the group because we’d have nowhere to meet. Casey took a job with MHS, and over the course of two years we slowly became a real makerspace. Casey continued to make connections between GR Makers, companies who donated equipment and supplies, and the community. The Socials became bigger, and so did the space.

As we grew, communication became a problem. If you didn’t attend the weekly socials and talk to Casey in person, you had no idea what was going on. Even those of us who were regularly there had no idea about how the makerspace was being run. An opaque layer existed between the community, and those who actually owned and made decisions affecting the group. Even basic questions from paying members would go unanswered when submitted to the official communication channel. Were we making money? How many members were there? Who are the owners? Is there a board, and if so, who is on it? Who is actually making decisions and how are those decisions being reached? Are our suggestions being seen and considered by these people?

Despite these issues, several interesting initiatives and projects came out of the community and makerspace: the Exposed ArtPrize Project, GR Young Makers, The Hot Spot, and most recently Jim Winter-Troutwine’s impressive sea kayak. I enjoyed the community, and wanted to see it continue to thrive.

I thought the communication problem was problem was one of scale: there was a large community and only a few people running things. I assumed those in charge were simply overwhelmed by the work required to keep everyone informed. In an attempt to fix this problem, I volunteered to write a weekly newsletter which I hoped would act as a conduit for the leadership to inform those who were interested. I asked for a single piece of information when I started the newsletter: a list of board members and what their roles were. I did not receive this information, but went ahead anyways, thinking that it would be sorted out soon. I gathered interesting information by visiting the space and talking to the community at the Socials each week and put it into a digestible format, but still that simple piece of information was refused me. Each newsletter was approved by Samuel Bowles or Mark Van Holstyn before it was sent, sometimes resulting in a delay of days and occasionally resulting in articles being edited by them when they did not agree with what I had written.

Shortly after the first few editions of the newsletter, Casey and Mutually Human parted ways. My conversations with the people who formed that initial core of what became GR Makers revealed a much more systemic problem in the leadership than I had realized. There was indeed a board, made up of those people I talked to. They passed on concerns and advice from themselves and the members to the owners, but that’s all they were allowed to do. The board had no real power or influence, and it turns out that it had never had any. The decisions were being made by two people at MHS who held the purse strings, and even this advisory board was often kept in the dark about what was being decided.

This cauldron of problems finally boiled over and were made public at a town hall meeting on March 25, 2015. Over the course of a week, the advisory board and the owners held a series of private meetings and talked for hours to try to keep GR Makers together. Concessions and public apologies were made on both sides and an agreement was reached which seemed to satisfied nearly everyone. In short, it was promised that the leadership would give the board more powers and would become more transparent about finances, membership, and decision making. This link leads to my summary of that town hall meeting, and a nearly identical version of those notes went out in an approved edition of the newsletter.

The community was relieved that the makerspace we had worked so hard to create was not going collapse, and I assumed that the board was being empowered. Bob Orchard was added to the advisory board and kept and published minutes from the board meetings – something which had not been done previously. These minutes always mentioned requests for the changes that had been agreed upon at the Town Hall, but action on those requests was always delayed. At the board meeting on April 29, the requests were finally officially denied. The minutes from that board meeting can be found here. Most of the board members – including all of the founders of that initial group in Casey’s garage – resigned as a result of this meeting.

It is up to each of us to decide if GR Makers as it exists today meets our desires and needs. There are still good people at GR Makers, but that initial group of interesting people has left. Without them I find very little reason to continue contributing. The ownership structure of GR Makers was an educational and enlightening experiment, but it is not what I want to be a part of. I think the openness and transparency that formed the backbone of that group which became GR Makers is gone, and I don’t think it is coming back. So it is with a heavy heart that I am resigning my membership.

But do not despair. That initial group of friends – that sociable collection of connectors, hackers, inventors, and makers – and a few new faces we’ve picked up along the way, have been talking together. We want to start over with a focus on the community and ideals that existed in the gatherings at Casey’s garage. It may be a while before we have a stable space to meet and tools for people to use, but I hope you’ll join us when we’re ready to try again. If you’d like to be kept up to date on this group, please fill out this short form.

Posted in grmakers, personal, rant | 5 Comments

A Series of Tubes (for Transportation)

Hello world!

Posted in tech | Leave a comment

Watch D.O.G.S.

Note: I wrote this post in Nov 2012, but I didn’t publish it until April 2013 – the morning before me second Watch D.O.G.S. experience. I was re-reading it this morning and decided to clean it up and post it.

As part of the Watch D.O.G.S. program I got to spend the day at my son, George’s, school. They had me moving to a new class (grades K-4) every 15-20 minutes, so it was pretty hectic. I got to work with a few groups of kids in the classrooms while they did their regular work, a few groups doing their special assignments away from class, and some kids one on one. I was surprised that all of them were happy, well-behaved, and eager to learn with me.

I met some really bright kids who solved their math problems faster than I could, some who had started writing interesting stories about trolls, evil wizards, and portals to other worlds, some who had their books memorized, and a boy that can draw sharks amazingly well. It was a fun challenge to me to get these bright kids to stretch their skills a little farther. I asked the story tellers for more details about what they planned to write next, I tripped up the memorizers by taking pages out of order and interrupting their flow with questions, and I introduced the shark artist to a few anatomical details he hadn’t noticed, as well as a new shark (hammerhead).

I also met some kids who were behind the rest of class in certain skills. It was great to work with them one on one and see them make progress even in the short time I had with them. I helped one little guy figure out the difference between “b” and “d” and also “h” and “n”. I helped a girl work through her math problems and she grinned when she finally got something. But they weren’t all so easy to help.

One Kindergarten girl didn’t know her letters so she was really bummed about the game we were playing with a couple of other kids. When she would get a letter wrong she would harshly chastise herself with “Oh, great job .”, and put her head down. It broke me heart to see her beat herself up like that, but she just couldn’t seem to remember the letters. Just when I had run out of ideas for helping her, one of the other kid’s shoes came untied and he asked for help. The despondent girl said she could do it, and she did. George can’t tie his own shoes, so I was impressed by this girl tying someone else’s (which is even harder than tying your own). I praised her for this and she perked back up. She also told me she can do dishes and mop the floor!

There was one second or third grade boy I wasn’t able to reach at all. He had his coat on his desk, two of his favorite stuffed animals propped up inside of it, and a piece of paper with a black square colored on it so the animals were “watching TV.” He was obsessively concerned about keeping the animals on their “couch” and the TV facing them. He was very distracted during the math lesson. He didn’t do any of the problems, or even look at the teacher. He just played with some scissors and kept propping the animals up so they would watch TV. After we removed the coat, animals, TV, and scissors, he tried to do one of the math problems. He got it right, but went back to his own distracted world immediately afterwards. I’m not sure if this kid has a really bad home life, or has a bad case of ADHD, but it was tough to see him like that. He might be the only kid all day I couldn’t get to smile.

In another class, I was helping a group of 2nd graders with rhyming words. They had “trip” so I told them to a “s” to the front. One boy blurted out, “Oh yeah! Like you go to a strip place!” Not exactly what I was thinking, but OK.

In another class the teacher asked the kids for some good uses of petroleum or oil. One kid said “To burn down factories!” I thought the answer was pretty good since they had been talking about how factories pollute so much just moments before. Go Planet!

Overall, it was a great experience, and I look forward to doing it again in the Spring.

Posted in george, personal | Leave a comment

Wait long enough and someone will do it for you

Like many of you, I have a crap-ton of ideas, and I get new ones every day. Until about 2009 I never bothered to write them down, or even discuss them with anyone. They’ve always been just sort of interesting mental exercises. Most of these are not monetizable (my spell checker says that’s not a word, but I don’t care), but interesting in some way. Some of them are good, and I think could make some money if I invested enough time and effort. Over the years, I’ve discovered many of my ideas have been implemented by other people. I’m always kind of happy when I come across actual implementations of my ideas. Maybe I see it as proof that my ideas could really take shape, but mostly because I think these ideas make the world a better place and it’s good to see them realized. Out of curiosity, I often try to find out when these people started their projects in an attempt to see if I thought of it first.

The first time I remember this happening is with maglev trains. Well before I had any idea of the engineering (pun intended) involved, I’d had this idea about running trains on magnets instead of wheels to reduce friction. Then years later I remember reading in Popular Mechanics about the first maglev trains in Asia and thinking, “Whoa, that was my idea. How did they know?!” Much more recently, I ran into the same thing with trains in vacuum tubes. It was really cool to see that someone is actually working those too. (Since then, I’ve begun to suspect this idea may have been sparked by memories from my days as a toddler watching SuperTrain with my parents. I’ll have to ask them if they were fans of the show.)

An example from a couple of years ago was a social media site for BarCamps and conferences designed to let the people in a particular talk continue the discussion afterwards. The idea was that the people in the talk could subscribe to a mini-email list or discussion thread just for that talk. Then the speaker could post materials from the talk and answer follow-up questions. Convore came along about a year later and did almost exactly what I was thinking. PyOhio used it in 2011 without a lot of success (few participants), and we gave it a go at BarCampGR in 2011 with the same results. Convore is gone now, but Tribbon was recently funded at StartGarden and is looking to fill a similar need. They’re not doing it how I had planned (my idea was much closer to Convore), but I think they’ve got a good plan.

I first started drafting this post back in September of 2012 because that week had been an especially good week for folks reading my mind and implementing my ideas. First someone grabbed mobile phone laser tag out of my idea list. And after finally pitching one of my ideas to someone, she pointed out that someone else has already begun implementing my real-time automatic smartphone photo conglomeration for weddings idea.

I just came across an Indigogo campaign for one my silliest ideas from about seven years ago – a robotic tail that responds to your mood – which is why I’ve finally decided to finish this post. I’ll probably keep updating it as new things pop up.

The point of this post is not really to talk about my ideas, but to remind myself that if I wait long enough, someone will do it for me. With family, work, and user groups, I have very little free time to implement my ideas. I always tell myself I’ll get around to it, but I very rarely do. On one hand it’s fun to see them in the real world, even if not by me. On the other hand, it’s depressing to see so many of them actualized without my help or input. I think it’s time to sacrifice some sleep to get some things built!

Posted in personal, tech | Leave a comment