Skip to main content

Posts

Announcing Feet, a Python Runner

I've been working on a problem that's bugged me for about as long as I've used Python and I want to announce my stab at a solution, finally! I've been working on the problem of "How do i get this little thing I made to my friend so they can try it out?" Python is great. Python is especially a great language to get started in, when you don't know a lot about software development, and probably don't even know a lot about computers in general. Yes, Python has a lot of options for tackling some of these distribution problems for games and apps. Py2EXE was an early option, PyInstaller is very popular now, and PyOxide is an interesting recent entry. These can be great options, but they didn't fit the kind of use case and experience that made sense to me. I'd never really been about to put my finger on it, until earlier this year: Python needs LÖVE . LÖVE, also known as "Love 2D", is a game engine that makes it super easy to build ...

Using a React Context as a Dispatch Replacement

React Contexts are the pretty little bows of the React world. Here's a really quick example of the kind of messy code you can cleanup by using contexts, without dragging in a larger dependency like Redux or even Flux. Starting backwards with a diff showing lines of code I was able to remove: All the properties I was able to remove were just pass-through. The Carousel component didn't care about any of them, but it had to pass through these callbacks so the multiple TaskList components inside the carousel could invoke actions. They were removed from the Component class itself, too, since it no longer needed to pass them through. Where did they all go? My ActionContext removed all the need for these passthroughs by providing a single simple helper method, action(), that components rendered under it can access.   I really enjoy the pattern of passing a single callback through a context and removing what used to be lots of callback properties. Of course, I cou...

Cheqee: Or, How to Write and Publish a Mobile App In a Couple of Hours for Free for Anyone

For the first time in a long time I wanted to write a brand new little app, from scratch, just for fun. I was feeling the Joy of Coding coming back after a long hiatus. So, yay for me? Yay for me. The idea for a single-case app for the kinds of repeating chores of the day has been knocking around in my head, so I whipped out npx create-react-app and tinkered on my laptop while watching TV. In about an hour and a half I made Cheqee , the Simple app for the things you do every day. I was thrilled to be reminded of how quickly an entirely new application can be built from scratch and published as a PWA (Progressive Web App) and "installed" on any phone and used like any app by anyone around the world, so here's the things I accomplished in just a couple hours total and in this post all the pieces that went into making that happen so effortlessly: Wrote a brand new app that does a simple job, built quickly but easy to expand and improve Incorporated persistent da...

Two Weeks Into the New Job: What’s Working and What Isn’t?

Not counting my orientation I’ve now completed two weeks of work in the new job as a Quality Engineer at Red Hat. There’s been adjustment and learning and getting to know a new team and HR paperwork and  fun and  rough edges . I think its a good time to take a step back and figure out what’s going well and what isn’t and how to turn some of the later into the former. So, let’s start with the good. What’s been going well at the new job? The product I’m on the QE team for is built using the back-end and front-end web technologies I’ve been using for a decade in some areas (Django) and at least years in others (React). Without even peering inside this has already given em some insight that’s made the transition and some of testing a lot easier. Familiarity is helpful even when I’m not directly building the product, it turns out. At all levels I’m clearly supported in my transition and see the same support going to other recent ...

My Software Job Transition Strategies?

I’ve been spending a good deal of the last two days preparing mentally for starting a whole new challenge as a developer. New things aren’t new to me, but this is different and big enough really call for some Deep Thoughts ™. For one thing, I’ve made a big move from the world of Python web development to totally other Python work and while web development has never been the only thing I do, it has been the only work that paid the bills. That transition isn’t one that bothers me or daunts me, though. Instead, I’m thinking about transitioning to the scope of the work I’m getting into. For a long time, I juggled multiple clients and client projects every day, so no single project usually took up most of my time. Every developer juggles time through the day, but exactly how that works in each company and on each project varies a lot. I was looking for a place that I could really focus in a way that I haven’t for a long time. I think I found that, but now I have to deal with the consequen...

I’m Gonna Hit The Ground Running

I already wrote about leaving Caktus to start a new job at Red Hat and that first day was today. I’ve never really had this kind of new-hire orientation before, having spent all my previous software career as a freelancer and just transitioning from a contractor to employee at my last company. I didn’t know what to expect. I’ve been thinking a lot about what this transition means for me as a developer, obviously. I’m making than a transition in companies here. I’m moving back to full-time Python work from years as one of those Full-stack web developers. While software always has many moving parts I’m transitioning from an environment with multiple diverse client projects to working on more focused, coherent works to deep dive into. Moving from Ubuntu to Red Hat Enterprise Linux, MacOS to GNOME, thirty coworkers to over 10,000. So it was time for a change and clearly I decided to just take them all at once. Software development is inherently change and new: by virtue of being built ...

Onward and Forward: I’m at Red Hat now!

I’ve been in development a relatively long time and I like to think I’ve come a long way. My career has included a lot of different kinds of work that I’m proud of and learned so much from. I’ve also spent two-thirds of that time at one great, wonderful place: Caktus Group. The people I’ve worked with have been a privilege and much of the work I’ve done has been so very rewarding. Nothing lasts forever and I want to continue to grow as a software developer. I’m not going to do that in the same environment at this point in my career or my life. I needed something new! I’ve made the tough decision to leave after nearly eight years. So, onward and forward to new things! Next week I’m starting a new job at one of the most respected companies in the open source community: Red Hat. I’m sure I’ll bump into a lot of people I know from the years, and I’m going to be getting heavily back to my Python roots in this position so everyone can expect to see me at Python meetups again, probably a...

Respect and Code Reviews

Code Reviews in a development team only function best, or possible at all, when everyone approaches them with respect. That’s something I’ve usually taken for granted because I’ve had the opportunity to work with amazing developers who shine not just in their technical skills but in their interpersonal skills on a team. That isn’t always the case, so I’m going to put into words something that often exists just in assumptions. You have to respect your code. This is first only because the nature and intent of code reviews are to safeguard the quality of your code, so even having code reviews demonstrates a baseline of respect for that code. But, maybe not everyone on the team has the same level of respect or entered a team with existing review traditions that they aren’t acquainted with. There can be culture shock when you enter a team that’s really heavy on code reviews, but also if you enter a team or interact with a colleague who doesn’t share that level of respect for the p...

Why I Switched From Git to Microsoft OneDrive

I made the unexpected move with a string of recent projects to drop Git to sync between my different computers in favor of OneDrive, the file sync offering from Microsoft. Its like Dropbox, but "enterprise." Feeling a little ashamed at what I previously would have scoffed at should I hear of it from another developer, I felt a little write up of the why and the experience could be a good idea. Now, I should emphasize that I'm not dropping Git for all my projects, just specific kinds of projects. I've been making this change in habit for projects that are just for me, not shared with anyone else. It has been especially helpful in projects I work on sporadically. More on why a little later. So, what drove me away from Git, exactly? On the smallest projects, like game jam hacks, I just wanted to code. I didn't want to think about revisions and commit messages. I didn't need branching or merges. I didn't even need to rollback to another version, ever. I...

I Learned 4 Things From my First Ludum Dare

I've done my first Ludum Dare Jam now, and actually my first game jam of any kind. Wow! I am so happy to have finally done this. It was a super rewarding experience and I want to share that, and my game, with as many people as will listen. My game is Patient Out Of Time . It is an apocalyptic moody shooter about a doctor salvaging power sources from robots in the wasteland to keep the life support of his last patient running as long as possible. The hospital staff have all left, and they are the only two survivors. Keeping this man alive is all this one doctor has to keep him going. It is a sad game, but it was also a lot of fun to make. Here are some things I learned this time. I hope to learn more things the next Ludum Dare. Little Steps Make Safe Steps I didn't have time for broken builds or half-built code I needed to fight my way back out of just to get the game running again. Every change I made had to be broken down into tiny, discrete non-breaking changes....

Game Development is Hard, Okay? 5 Things That Suck About Making Games

Game development is hard . I mean, really hard and everyone knows it. You probably won’t finish your game. You probably didn’t finish several games before it. You’ll probably start some more games you’ll never finish. The thing is, not finishing the games isn’t the only reason game development is hard. Let’s learn from some of my failures so far. Taking Time From Your Family is Hard Putting it like this sounds kind of distasteful. Yeah, if you’re working on your game in the time you aren’t at your day job, there’s a good chance you’re taking time away from precious family time. You’re missing evenings with your wife. You’re skipping days with your kids growing up. If you don’t have a family in your life, you’re opting out of time with friends, watching movies and reading books, or even just playing games, the same medium you obviously care a lot about. Making games takes a lot of time. You think you know that, but it takes more time than you already fear. Double that numbe...

On Pruning Your Passions

We live in a hobby-rich world. There is no shortage of pastimes to grow a passion for. There is  a shortage of one thing: time to indulge those passions. If you're someone who pours your heart into that one thing that makes your life worthwhile, that's a great deal. But, what if you've got no shortage of interests that draw your attention and you realize you will never  have the time for all of them? If I look at all the things I'd love to do with my life as a rose bush I'm tending, I realize that careful pruning is essential for the best outcome. This is a hard lesson to learn, because it can mean cutting beautiful flowers and watching the petals fall to the ground to wither. It has to be done. I have a full time job that takes a lot of my mental energy. I have a wife and a son and family time is very important in my house. I try to read more, and I want to keep up with new developments in my career, and I'm trying to make time for simple, intentional relax...

The Insidiousness of The Slow Solution

In software development, slow solutions can be worse than no progress at all. I'll even say its usually  worse and if you find yourself making slow progress on a problem, consider stopping while you're a head. Its easy to see why fast progress is better: either you solve the problem or you prove a proposed solution wrong and find a better one. Even a total standstill in pushing forward on a task or a bug or a request can force you to seek out new information or a second opinion. Slow solutions, on the other hand, is kind of sneaky. Its insidious. Slow solution is related the Sunk Cost Fallacy, but maybe worse. Slow solutions have you constantly dripping more of your time, energy, and hope into a path that's still unproven, constantly digging a hole. Slow solutions are deceptive, because they still do  offer real progress. It is hard to justify abandoning it or trying another route, because it is "working", technically. We tend to romanticize the late...

One Game A Month: Off And On Again

Off And On Again is a series of light puzzles. You must turn all the lights on, but you must do so by flipping them in patterns. If you turn one light on or off, you'll be flipping lights around it, too. If you can find the right combination, you'll brighten up the board and move on to the next challenge. This was more than just a game. This was a public project in putting light on the hobbyist game development experience. Created over 25 hours, every single minute of the development of Off And On Again is available as part of a YouTube series Let's Make A Game . If you're interested in learning from this process and seeing what came out of it, you can watch the entire creation of Off And On Again and then play the game for yourself. The Series: https://www.youtube.com/watch?v=jlFKDVs9l3Q&list=PLg8XhO9Ilwl9Bw9h5wimuRgx5VrK3D-Kb The Game: https://play.google.com/store/apps/details?id=com.stonebirdgames.OffAndOnAgain

Why Am I YouTubing An Entire Game Development Project?

For a few weeks now I've been posting new episodes of a YouTube series I've been doing this month called Let's Make A Game . Now that I'm most of the way through the project, I wanted to think a bit about why I'm doing this, what I think people might get out of the videos, and what I hope to get out of it for myself. The best way I know to do that reflection is to write about it, and to share those thoughts. So, Why am I YouTubing an entire game development project?  Why would I put myself out there so publicly for anyone and everyone to look over my shoulder for twenty-five straight hours as I stumble, typo, and mistake my way through a skill I'm still learning and still very green on? And, why exactly would I think anyone  cares enough to watch me code, mostly in silence, for twenty-five hours? Why would anyone care to watch? The truth is, I don't really expect anyone to. And that's okay. Part of this project required  that I be okay with my own ...

Let's Make A Game Passes the Half-way Mark with Episodes 12 and 13

Interested in my process for making a monthly game? I've got two  new episodes up of my series  Let's Make A Game!  for a total of eight episodes to enjoy, so far. The project should include a total of 25 episodes by the end of the month. Let's Make A Game! Off And On Again Episode 12   Let's Make A Game! Off And On Again Episode 13 If you want to start from the beginning, you can find a  playlist of all the current episodes  with all the future episodes added when they're available. Of course, you could also subscribe to my  Stonebird Games  YouTube channel.

Let's Make A Game! Off And On Again, Episodes 9, 10, AND 11 Available!

Interested in my process for making a monthly game? I've got three new episodes up of my series  Let's Make A Game!  for a total of eight episodes to enjoy, so far. The project should include a total of 25 episodes by the end of the month. Let's Make A Game! Off And On Again Episode 9 Let's Make A Game! Off And On Again Episode 10 Let's Make A Game! Off And On Again: Episode 11 If you want to start from the beginning, you can find a  playlist of all the current episodes  with all the future episodes added when they're available. Of course, you could also subscribe to my  Stonebird Games  YouTube channel.

Let's Make A Game! Off And On Again, Episodes 7 and 8 Available

Interested in my process for making a monthly game? I've got two new episodes up of my series Let's Make A Game!  for a total of eight episodes to enjoy, so far. The project should include a total of 25 episodes by the end of the month. Lets Make A Game! Off And On Again: Episode 7 Let's Make A Game! Off And On Again: Episode 8 If you want to start from the beginning, you can find a playlist of all the current episodes with all the future episodes added when they're available. Of course, you could also subscribe to my Stonebird Games YouTube channel.

Let's Make A Game: Three New Episodes Available

My game development video project, Let's Make A Game , is still underway. There are three more episodes available, for a total of six episodes released so far. Let's Make A Game! Off And On Again: Episode 4 Lets Make A Game! Off And On Again: Episode 5 Let's Make A Game! Off And On Again: Episode 6 The game is shaping up well, and I'm getting a better handle on how to put together the videos. At the end of this project, I expect to have two useful results: Primarily, a finished game that's actually going to be fun to play. Secondly, but actually more  important for me,  I'm hoping that the structure and transparency of building the entire game while recording will help me learn to better focus, budget, and scope my game development projects. From here on out I'll continue to post a weekly update of the new videos to this blog, but you can subscribe to my channel if you'd like to see the videos sooner.

Let's Make A Game! Watch me make "Off And On Again"

Let's Make A Game! I've been making games to one degree or another for a few years, and I've really gotten into a rhythm in the last few months . This month I'm trying a new experiment and posting the entire process of building the month's game development project. I'll be publishing a stream of every single step I take in the process, broken down into 25 one hour episodes. I'm doing this for a few reasons. Firstly, I'm doing this for myself. The one hour sessions and the focus recording gives me on the task at hand are helpful. I think this is an interesting way to go about a project. I'd also like the strict schedule to help me study and learn more about the aspects of budgeting and scoping game projects that I have too little experience to be very good at. Secondly, I'm hoping someone out there gets some value out of this. My skill level as a game developer is still pretty low, but maybe its helpful for someone to see how someone learns ...