Conferences for Spring 2018

I’ve gotten a little behind on my goals for this blog recently. I have several upcoming conference appearances that I am preparing for that are absorbing a bunch of my time.

In trying to keep with the spirit of posting at least once a week, I am announcing my future appearances so if you want to say hi you have the opportunity to do so and I get to keep my streak alive!

NVIDIA GPU Tech Conference (GTC): March 26-29

First up I have GTC in San Jose. I am leaving for this on Sunday.

GTC is the first conference I have attended in a while where I am simply an attendee. I don’t think I have been a conference attendee since 2013. I have always either volunteered to work the conference or spoken.

GTC is focused on cutting edge GPU technologies including VR, autonomous driving, and deep learning. There are like 600 sessions and various labs, both self directed and instructor led.

I am trying to branch out beyond just iOS programming conferences. I started that last year with GDC (the game developer conference.) This is the first GPU programming conference I will have attended. I am deeply interested in seeing all the use cases for GPU programming to get a better idea about how to channel my energies in this field. Right now I feel rather overwhelmed by what is out there and I am eager to see what possibilities exist in this space.

RWDevCon: April 5-7

Up next I have RWDevCon. I last spoke at RWDevCon in 2016, but I came as an inspirational speaker. This year I am tackling a much harder task. I will be leading a 90-minute guided tutorial on how to integrate Metal shaders into SceneKit code so that you’re not responsible for setting up the entire rendering pipeline.

I will also be recording a live podcast with my cohost on the Ray Wenderlich podcast, Dru Freeman. It’s going to be a hectic, busy conference, but if you’re a fan of the work the Ray Wenderlich team does, this is an invaluable opportunity to meet the team in real life.

UIKonf: May 13-16

UIKonf is my first European conference of the year. It’s also my first international conference in a country where English is not the native language. (I was privileged to speak at two conferences in the UK last year.)

I have not yet determined what I will be speaking about, so I can’t give a lot of details on this. Planning for RWDevCon is occupying most of my available free time and energy.

WWDC? Nope!

I delayed this blog post until after I had determined if I had won a ticket to WWDC. I did not win the lottery this year, which leaves my record and 0:3. I am trying not to be too disappointed or be upset in a few months when everyone is tweeting about the amazing time they are having. But I promise nothing!

Conclusions

As much as I enjoy going to conferences and seeing my friends, it’s really put a pin in the work I would like to be doing right now. I can’t finish my game because I have slides and presentations to finish. I am feeling incredibly listless and upset because I feel I am not accomplishing anything and it bothers me tremendously. I am hoping after I get these two conferences out of the way I can get back to doing things that make me happy and productive.

Looking forward to seeing friends old and new over the next few weeks!

Monthly Pizza and Video Games

Back when I was a kid we didn’t have any video game consoles. My parents thought they rot your brain and were expensive, so we didn’t have a Nintendo.

My brother and I had a home daycare woman who had four kids and I swear bought every video game system ever. Every time a new system came out within a few weeks one would magically appear at their house. I was never allowed to play with it because it was “their” system, but I was allowed to watch them play from the couch.

One day that we had off from school the older kids went out and bought a bunch of junk food to eat in the basement. They had a bunch of friends over to play games and eat junk. They actually let the younger kids hang out with them and shared junk food. This was the only time in my childhood where I felt like I was part of a group of people doing normal things having fun. I told myself that when I was in high school I was going to have a gang of friends who would come to my house and play video games and eat junk food. I didn’t process that I lived in a rural town where I already knew all my future high school classmates and that I didn’t get along with any of them and that this would never come to pass.

It’s been a thing I revisit sometimes. My ex-husband decided he was over video games by the time we got together and wouldn’t play with me. I bought a few systems after the divorce and really got into the Persona series, but I didn’t have people to play games with. Luckily, my new boyfriend likes video games and I finally have someone to play games with.

So we decided to institute “Pizza and Video Games” days. The first Saturday of every month, we are ordering a pizza and playing a video game. We’re limiting the amount of junk food we do in a day because, frankly, my digestive system can’t handle it as well as it used to. We want to try all the various pizza places around us so we’re not just ordering from the same place every month.

We have a few parameters we’re looking for when considering a game for Pizza and Video Games day:

  • Console Game: Primarily looking for a game that would be played on the TV through either a PS3/PS4/Xbox 1/Steam. I have a vast multitude of 3DS/Vita games that I play in the bath or while I am traveling and these are not candidates for Pizza and Video Game days. Not sure about Switch games yet as they’re in a gray area.
  • Short: I’m looking for games that can mostly be played in a day. I’m sure the Assassin’s Creed games are awesome, but I wanted to focus on trying to find a game that could mostly be completed within a day.
  • Relatively Easy: I didn’t grow up playing video games, so I am not looking for the most brutally hard games I can find. So no Super Meat Boy or Celeste. These are probably awesome games, but I would die like two seconds in and that would not be fun.
  • Variety of Genres: I have mostly played adventure games in my time as a gamer. These are games that don’t really require a lot of coordination or motor skills. They just involve walking around solving puzzles. These are great games, but I am trying to expand outside my comfort zone and try different things I am less familiar with. We are not going to just do first person shooters, but I would like some experience with these as they’re a large chunk of the video game landscape.
  • Important Historically: There’s like 40 years of video game history that I need to work through to become familiar with current game design patterns. I’m basically trying to find someone’s top ten list of the most important video games and focus on those as a jumping off point so I can see how these games influenced the landscape.

We may not be able to satisfy all of these requirements. These are more like suggestions or guidance questions as opposed to set in stone rules. We’re also going to try to do more games together after work on a regular basis. There are longer games like Mass Effect that I would very much like to work through that I will be writing about in the future, but not as part of this series of articles.

These do not need to be new/recent games. I would like to go back and play through the Super Mario Brothers games on the original NES. Since I have an NES emulator, this shouldn’t be a problem.

Games were designed to be a social thing to bring people together. You can play on your own, but having a community of people to share your experiences with is a vital part of the gaming experience. I didn’t get to have fun game days in high school, but it’s never too late to find a community of people to have fun with. I’m glad I finally found one.

Goals for 2018

I find that making goals for myself helps me stay focused on what is important. If you don’t have a plan about what you want to accomplish, then you don’t really go anywhere.

One goal I have had for a few years was to publish my first app to the App Store. Every time I think I have some time to work on this goal, life gets in the way. I got an amazing job a few years ago that was stimulating but mentally exhausting, leaving me no mental energy to work on anything else. I took another job that gave me a nervous breakdown. I went through a divorce. I spent a year writing a book.

Each year the amount of complexity and polish required to publish an app increases. I always feel like everything is six months out of reach. By the time I finish an app, it will require another six months of work to be viable. Part of this was because I was a beginner. When everything is new, it takes longer. Once you understand the fundamentals and they become intuitive, then development speed increases dramatically.

While I was finishing up the book, I tried to do some research into game development because I wanted to hit the ground running when it was over. I wanted to get the long hard work of just learning the patterns and frameworks out of the way so that when I did sit down to write a game it would be easier.

I want to publish a game this year. I am tired of putting this goal off indefinitely because I keep getting offers to do other things. I don’t regret doing those other things, but I worry if I don’t make this a priority I will never do it.

Along with my goal to publish a game is to learn both Unity and Unreal. I know that these engines take a while to master, but I have seen many examples of people becoming proficient in them in as little as a month. I would like to have a better understanding of where people who use these engines are coming from. One impediment I had in learning graphics was a lack of familiarity with concepts like texture mapping and object imports. I think that having a better understanding of engines will be quite useful moving forward.

Another goal I have for 2018 is to do more work with graphics. I spent a year working on a graphics book, but I don’t feel I got to delve into it as deeply as I wanted to. Graphics is a complex topic. I feel like I finally established a foundation of my understanding that I can build off of. I worry if I don’t practice my new found knowledge that I will lose and forget it.

I’m very grateful to have a job that affords me enough time to pursue my passion projects while also being able to cover my bills. I am also incredibly grateful for my supportive boyfriend who wants to see me succeed with my special interests. Having been in a relationship with someone who actively discouraged my interests and interfered with my work, I know the value of having a supportive partner in crime. After a few years of instability, I am hoping that 2018 proves to be relatively quiet.

Welcome to Red Queen Game Development

Hi. My name is Janie Clayton. If you’re reading this post, you probably know me as Red Queen Coder. I have been blogging since 2013 and I have been speaking at conferences since 2014.

I started my initial blog, RedQueenCoder.com while I was still a student. My background was in journalism and writing, so for me creating a blog was a natural extension of my learning process. I wanted to write out the issues I was trying to figure out and how I was able to solve them. I had some concerns that it would expose my ignorance, but I hoped that by showing I could work through problems I would show that I was capable of learning and solving problems. I also wanted to give some hope and support to other people trying to learn programming that they were not alone and that they could accomplish what they wanted.

I have accomplished a respectable amount of success since those early days of the blog. If you told me five years ago that I would be the author of multiple books, spent a year building and programming robots, and was a member of Ray Wenderlich’s tutorial team, I would think you were crazy. The last five years have been extraordinary and I have had opportunities I didn’t imagine were possible back when I started RedQueenCoder.com.

Sadly, I have somewhat neglected the blog over the last year. I spent a year fulfilling a dream of mine, which was to write a book on GPU programming targeted at people who didn’t study computer science in college. This book was incredibly challenging and really pushed me to my limits. I had to put a pin in a lot of my interests to focus every ounce of mental energy I had into that book. Sadly, one of the interests I put a pin in was my blog.

I had some mental health issues before and during the writing of the book, so my blog sort of veered away from programming and got more into mental health and self care advocacy.

Now that the book is completed, I have a lot of things I would like to write about in the tech field, but right now it doesn’t feel like these posts should go on RedQueenCoder.com. I created that when I had the idea that programming was a large broad skill rather than an amalgam of dozens of dark corners and proprietary knowledge. Having a single blog for all of my tech interests doesn’t feel like the right path anymore.

So I have purchased a few domains for blogs that separate out my different technical interests. I will maintain RedQueenCoder.com for my personal blog posts, but I am moving my technical posts to this more segmented, targeted approach.

My Approach to Game Development

Over the last fifteen years I have learned a lot of skills that were incredibly unfamiliar to me. I got a video editing degree in 2007 because I had always been fascinated by video production. I never had access to any of the software or hardware, so it was something I didn’t know anything about when I started. I worked with people who had taken classes in school and bought equipment with money from high school jobs. It was incredibly intimidating to be surrounded by people who seemed so much further ahead than I was. But I was stubborn and didn’t want to give up. I learned video editing, but more importantly, I learned how to learn a weird skill.

The way you learn any skill is to start with some basics. Everything can be broken down into smaller pieces that are combined to create complexity with larger and more complex systems.

When I learned video production and Photoshop, there were books that started with some simple projects that get you familiar with the tools. Once you’re familiar with the tools, you delve into more complex and complicated projects. I have found that this is the best approach to learn anything.

I do not see a lot of that philosophy in programming or game development.

I have a lot of books on game development and I would say 90% of them are about tools. They explain how to use Unity or SpriteKit. Some of these are tutorial based where you work through a project. But I have found that I don’t learn game development well from these projects.

These projects are good at getting you familiar with an engine or a framework, but you finish and don’t really know how to proceed from there.

I have tried finding game programming books that take an iterative approach that I had with Photoshop, but I have thus far been unsuccessful in finding exactly what I am looking for.

A lot of books make a major leap in complexity. You start with tic-tac-toe and move on to World of Warcraft. There is also an implicit pressure that you’re supposed to know what you want to code as a game. You’re supposed to have some grand idea of a large, complex game like Mass Effect that you want to create. These ideas are always overly ambitious to learn on and a lot of people give up in frustration. There is the idea that if you’re not creating something innovative and Game of the Year worthy, then it’s not worth doing. I don’t think that’s the case.

I think that by recreating simple games, you can work through a lot of issues you will encounter in larger projects that you don’t think about. Saving a game, creating a leader board, designing a level… By focusing on doing these things for simple games like tic-tac-toe, you can become familiar with them by the time you get to the game you actually do want to program and design.

One thing I learned from learning programming is that in order to get good at programming you have to practice. Creating a bunch of crappy, throw away projects that do one thing really help you hone your skills in a lower stress environment. I know people in game development for whom they went all in financially on their first game. I want my learning experience with game development to be a fun hobby and not a major source of stress because if my game doesn’t sell a billion copies I will lose my house.

I also come from a weird background for game development. I didn’t have a video game system growing up. My only experience with video games was being at daycare watching my babysitter’s kids playing Super Mario Brothers because I wasn’t allowed to play. I played a few adventure games in school like “Day of the Tentacle” and “Myst” that were available on the Mac, but I didn’t own a gaming console until a few years ago. I know that I have a lot of history to catch up on for game development.

Part of me feels like this is an indulgence. Lots of people grew up wanting to be programmers because they wanted to create Mario Brothers. I wonder what I have to contribute to game development because I didn’t grow up wanting to make video games. I am back in the same position I was in with video production where I want to learn something simply because it interests me and I feel I am already behind everyone. This time there is not a laid out curriculum for someone like me, so I am designing my own.

The first year of this blog is going to be rather boring. I made a list of simple games that I want to create simply to learn the patterns and to get comfortable with game programming and design. I want to create these simple games with both Apple gaming technologies and Unity/Unreal.

When I started with Photoshop I had no idea what I wanted to create with it because I didn’t know what was possible. After immersing myself in it I came away with a lot of ideas about what I wanted to do. I am hoping by putting in some work to recreate games that I begin to see patterns that I can iterate on to do something unique.

I also work better with goal oriented objectives. I loved working on my book because before I wrote a word, I had an outline in place. I had no idea how to do 18 of the 20 chapters in the outline, so I focused on the two I could do. Then I figured out what looked the next easiest. I worked my way through the book that way. Having small iterative steps I could take that added up over time really helped me out a lot with my mental health. I felt I was accomplishing something. Even if I didn’t do much on any given day, getting something done helped me get closer and it added up over time. It also helped that I have a constrained scope where there was an actual “done” condition on the book. There was a finite number of chapters and topics to cover and once those were covered, the book was complete. One thing that frustrates me about programming is that nothing is ever done. One gets the illusion of things being done by creating discreet tasks and having sprints and declaring that sprint done once those tasks are complete.

I like having large projects to work on that are broken up into smaller tasks that I can focus on and complete. If you are not organized, you get overwhelmed quickly by things that you don’t need to focus on for a while. Anything can be accomplished if you just put one foot in front of the other and not worry about what you’re doing at Mile 25. By having some smaller projects that I control and can lay out all the requirements on, I am hoping to learn these organizational tactics by the time I find a larger project I want to do.

In Doctor Strange, The Ancient One asked Doctor Strange how he became a great surgeon. He said he became one through many hours of study and practice. With study and practice, anyone can learn anything. The purpose of this blog is for me to focus on my own study and practice so that I can gain a skill that interests me. Sometimes study and practice are boring to observe. Zen Buddhism focuses on the here and now. Instead of fantasizing about how things are going to be in a year, you focus on doing the best that you can with the present moment. Every task you do is important, even if it’s boring. By being mindful and treating every task with respect, it’s possible to learn faster and better. My hope is that the work I am doing in two years is better because I am going back and teaching myself fundamentals. I worry that people will judge me because I am planning to spend a few posts explaining how to code a tic-tac-toe game in SpriteKit. I have decided I don’t really care if people judge me or not. I am writing this blog for myself and my own learning style. There is no one way to learn. This way works for me.

Hopefully this blog will be of interest to people curious about game development. I would like to turn these posts into a book at some point. But for me the main purpose is to lay out goals for myself and have constrained projects to work on so I can practice and get better. I’m looking forward to learning new things. Thanks for joining me on this journey.