Pivot to Video

Every year it happens. WWDC comes and unleashes a bunch of new stuff for all of us to learn. For most people the last few years, WWDC hasn’t been that exciting because it’s primarily been graphics and augmented reality stuff. For me, it’s been Christmas. I love Metal and ARKit and all the new shiny graphics stuff that gets released each year.

However, inevitably I will encounter some aspect of my workflow that doesn’t involve low level graphics. I will have to connect to a network backend. I will have to figure out the new user interface framework.

I want to get back to my fun graphics stuff as quickly as possible, so I Google tutorials and sample code for these things I don’t want to think too much about. The results come up. Perfect! I found exactly what I want!

I click the link and my heart sinks. Instead of a nicely written blog post or article about the technology, I stare into the void of a 5+ hour video course someone put together.

Videos Are Terrible

The last few decades have show the emergence of this idea of different learning styles. Some people are “visual learners,” whatever that means. Some people learn things by doing, which to be honest is basically how everyone learns?

This has unleashed this unholy deluge of instructional videos for the poor, underserved portion of the population that learns by watching other people talk. These are probably the same people who learn by listening to the same three white dudes in tech talk about cars on podcasts.

I’m sure there is some portion of the population that learns by watching videos. And videos have their place. I love watching short cooking videos. Cooking is a physical thing and watching how someone folds a dumpling or condenses a 3 hour baking project into a three minute video that cuts out all the prep work and waiting can be quite instructive. None of that applies to programming.

Programming isn’t suited to a video medium

I know that someone who won’t read this blog post is going to “Well, actually…” me on how video is great for programming because it shows you how to use the IDE/game engine/etc… I am not talking about videos on how to use storyboards or set up an animation loop in Unity. I am talking about code. Words you type into a text editor or IDE with no software interface.

Programming is inherently word based. I have used the analogy that programming is what you would get if Math and English had a baby. It’s got language and syntax and grammar. All of which gets lost in translation when you have someone trying to verbally read it out loud.

Every bad tech talk I have attended at conferences goes the same way. The presenter spends a few minutes introducing the topic of their talk and gets everyone excited about using the framework. Then they pull out all the slides covered with code and it all goes downhill from there. People’s eyes glaze over. They start chatting on Slack. They surf Facebook. Everyone waits for it to be over, but hey, beats being at work I guess?

Code wasn’t meant to be read out loud. It’s the most efficient compromise you make with the computer to be able to communicate. You can read through code and bounce around asynchronously to see how everything works in a way you can’t if someone is just talking.

If you have a nicely written tutorial and you didn’t quite get something, you can scroll back to see where you got lost and review what you don’t understand.

Which leads into the next point.

You can’t search for what you need

It’s incredibly frustrating to spend hours looking for something that covers the exact topic you need, only to find out that the presenter isn’t going to cover the part that you need. When you have a video, you have no idea what the specifics are that the presenter will actually cover. I went to an Accelerate talk where the presenter said that he would not cover any of the math that the framework utilizes, which is basically the entire point of the framework!

If I am dealing with a book or documentation, I can utilize a search function to see if the document I am looking at contains what I need. I can zero in directly on the part that I need to understand and be on my way in a few minutes. If what I want isn’t there, I haven’t really invested anything into it.

If you’re dealing with a video, it’s a crap shoot as to whether the author is going to speak about the one specific thing you need to know at any point in their long rambling video. Sometimes they are helpful and will give chapter titles so you can guess if they’re going to talk about the thing you need to do. But usually the author has created an elaborate project that is dependent upon you watching everything up until that point for anything to make any sense.

You can’t do anything else

I learned to code by working through the Big Nerd Ranch iOS book multiple times. I didn’t quite understand the concepts the first time through, so I would do them again and again. By the time I got to the fourth or fifth time, my brain had been introduced to the concepts enough that it began to understand how everything works together.

To keep myself from going insane, I would throw on episodes of Star Trek: The Next Generation. I worked through the entire series by having an episode on while I coded through a tutorial. This worked for me.

If I have an instructional video on, I literally can’t do anything else. I’m held hostage. You can’t read or check email because you miss something and have to rewind to figure out what someone said. If you’re coding along, you have to keep pausing and rewinding to catch what the person said. You endure long bits of watching someone writing the same code as you in real time. This is miserable and tedious. Not to mention mentally exhausting in a way that reading is not.

I do have some Unity videos I will throw on in the background, but I do this knowing that I am not engaged enough with the material to actually learn it. I can’t do this for something I must use for an active project.

If I am working with written materials, I can take mental breaks for a few minutes and come back. I can copy/paste code if I don’t quite get it written correctly. I can reread things a few times if I didn’t quite get it the first time. I can have on music or do literally anything else to make it easier to stand at my computer for hours force feeding myself technical information.

Back when I used to work for people, I would be asked to figure out something I didn’t already know. Rather than flailing blindly around I would look for something written that I could look through to learn the things I need to get working immediately.

It’s a lot easier to sell your employer on the idea that you’re actually working if you’re reading something and have a code editor open. If you’re watching a video, it looks like you’re slacking off. It also means that if someone interrupts you, it’s way more disruptive than if you are reading something. In the age of surveillance capitalism, it looks bad if you try to learn something by watching a video. This is not the case if you are reading something. Perception matters.

The podcast problem

I don’t listen to podcasts, which is ironic because I have hosted three of them. Podcasts tend to be two or more people rambling about some topic and making in jokes that only they find funny where nothing is edited out. Sometimes you get someone who knows enough audio production that they will fix levels and remove long awkward gaps in conversation, but rarely do you get a well focused discussion about a topic with an interviewer who not only knows what questions to ask but who will keep the conversation on track.

A lot of instructional videos are people just kind of turning on a screen capture app who then begin to work on a demo project they feel like working on. There isn’t really an agenda for them to follow. They don’t think about how best to present information. They leave in their coding errors.

It’s this idea that it’s a lot easier to just record yourself talking than it is to have a well thought out plan as to how you are going to take a complicated topic and explain it to someone who doesn’t know everything you do.

Final Thoughts and Complaints

I really do not understand why this video explosion has happened. I don’t know if it’s similar to that Facebook pivot to video ads where they lied to people about the impact of video and everyone dove in wallet first and got screwed over.

It may just be easier to half ass a video than it is to write a good tutorial. There was that ghastly Hacker News bit saying that a group of coders could start up a news room in a month which was totally bullshit. Writing is a skill. A lot of people are not good at explaining things. Everyone complains about the quality of Apple’s documentation coverage, but think about how hard it is to scale up a team of people who are not only technically savvy enough to understand all the code but can also write clearly. There are a limited number of people out there who can do that.

That isn’t to say you can’t improve. The first few things you write might be terrible, but if you know they’re terrible and it bothers you, you can work to improve it.

I dunno. I might just be a crusty old person who is stuck in my ways yelling at the kids to get off my lawn. But after they do I am going back to my she shed with my programming books and my 600 queued episodes of Chopped.

Bullying

I have a bully.

Not a sexual harasser or a rapist or a men’s rights activist. A good old fashioned playground bully.

I have mostly kept this story to myself for over a year, but I don’t feel I can continue to do so. It is destroying my peace of mind and making me feel terrible. I tried to ignore my feelings about this, hoping they would go away, but they have not. I need to share my story in order to move on from this.

I’m not posting this because I want anyone to do anything about this specific incident. I just want people to listen and to understand.

The Beginning

My first interaction with my bully was back in 2015. 2015 was the first year I really got into conference speaking. I had finished up school the year before and conference speaking was the only way I had to network and get my name out there in order to find a job.

I was invited to speak at a conference in 2015 by a friend of mine. As many of you know, I used to be in an abusive marriage. My previous husband would not allow me to have money to buy textbooks while I was going to school for computer programming. My friend sent me books, watched my first shitty conference talk while it was being live streamed, and used his connections to try to help me find a job.

My friend did this when I was nobody. I wasn’t an author yet. I didn’t have a blog. No one knew who I was. He helped me because it was a kind thing to do and he had no expectation that I would ever become anything. To me, the way someone treats you when they don’t get any benefit from it means a lot. I see way too many people who only network with people who are more visible than they are and tell anyone just starting out to fuck off. I don’t like those people.

I was invited to speak at a conference my friend was organizing, but I could not make it because I found out my ex-husband had put us significantly in debt. I felt very sad about not being able to go.

My friend also invited my bully to the conference. My bully could not go for different reasons than I had. They were very vocal about how unhappy they were with my friend regarding his handling of his conference. They started a Twitter mob against my friend and started a whisper network around him.

I felt some loyalty to my friend after his working to help me before I had a career. I kept hearing people at conferences say how terrible it was that he was being attacked, but no one said anything. I was probably dumb, but I put my neck out to defend my friend because no one else would. I understood that my bully would be unhappy about my defense and I really did the best I could to say this whole thing was probably a misunderstanding, as is wont to happen when people communicate online.

After I posted that post, the talk stopped. I thought I made a difference and got people to leave him alone. I now realize it’s probable that people were still talking about him, but that I had shown myself to be untrustworthy and thus no one included me in these conversations.

I knew there would probably be repercussions for my actions, but I figured I did the right thing and I would feel morally okay with whatever the blowback was.

2018

Four years passed and I didn’t feel the blowback. I noticed I was never invited to a conference my bully was speaking at, but that was fine. I didn’t really care to interact with them.

My luck ran out in 2018.

A talk of mine was accepted at a conference. I had to spend nine months working on it. It was incredibly labor intensive, but I was happy to have the opportunity to speak.

Three weeks before the conference, I saw that the conference organizers announced my bully would be a keynote speaker at the conference.

I wrestled with what to do. I hadn’t had any contact with my bully in four years. I half hoped my bully had forgotten the whole incident and found someone else to be mad at about something. I thought about approaching the conference organizers about the situation, but I thought that would be petty. My bully hadn’t done anything so what would I complain about? What could they even do about it?

I found out.

Six days before the conference I was contacted on the conference Slack by the organizers telling me that they had to talk to me and had set a meeting for 10:00 the following morning. I kind of joked that I hoped I hadn’t done something wrong. They repeated that I was required to speak to them tomorrow morning at 10:00. They would not elaborate what had happened or what we would be speaking about. I had a sinking feeling this was about my bully. I was right.

The organizers, looking like police interrogators, told me there had been a complaint about me. They said they did not want to hear my side of the story because they didn’t care and would not believe me. They told me they had stringent conditions I was required to follow if I was to be allowed to keep my slot at their conference:

  • I was not to be within 500 feet of my bully
  • I was not to be in the same room as my bully
  • I was not to speak to my bully
  • I was not to speak about my bully to anyone at the conference
  • I was not to attend a networking event my bully wanted to attend
  • I was not to tell anyone that this conversation happened

I was dumbstruck. I was not surprised my bully had complained about me. I was surprised at how I was being treated by the organizers. I considered them to be friends. I had had them to my house and they had slept under my roof. They met my parents and I had fed them food I made myself. I considered this to be a deep transgression of my hospitality and relationship with them.

My initial inclination was to tell them to fuck off and that I would not attend their conference. I felt that this would have looked bad professionally. I spent nine months working on my talk and it could not be replaced easily. I was also bringing my now-husband with me. He had bought a conference and a plane ticket. I didn’t feel I could tell him that he wasted that money because I was being petty.

So I swallowed my pride and faked my way through the conference. I spent most of the conference hiding in my room with my husband. I came out for my talks and for meals. I briefly saw my bully as I was taking my dog outside to walk her and I was terrified that they would complain about me violating the terms of my parole and have me kicked out before I could give my talk.

The biggest thing that bothers me about this situation is that I had reported harassment two years earlier, the first time I attended their conference. Someone at the conference touched me inappropriately and tried to get me to take them back to my hotel room to have sex. I reported the incident and they didn’t believe me. They told me it was a misunderstanding, the perpetrator was European, and that I had misunderstood his intentions. I had to physically demonstrate on one of the organizers how I had been touched for them to take it seriously.

So like sexual assault is just fine, but just make sure you don’t defend someone on Twitter? I wasn’t allowed to tell anyone about that incident either. My bad.

Aftermath

I tried to tell myself that none of this is important and that I didn’t care. I felt deeply foolish for thinking these people were my friends when they clearly didn’t feel that way about me. I felt like I had been conned and was too stupid to realize it until it was too late. I was angry about the number of hours I wasted working on their projects and I wanted that time back.

I broke my agreement to not talk about this incident a few times with a few trusted friends in the community. Any time I tried to obscure the name of my bully, they always immediately knew who it was. No one I told was surprised any of this happened. They were always deeply sympathetic and told me that everyone knows how this person is.

Imagine my shock to see my confidants going out of their way to socialize and interact with my bully. I would see them having long involved conversations on Twitter or being asked to collaborate on their side projects.

I called one of them out about this. I reminded him about how I had been treated. His response was, “Yeah, but that has nothing to do with me. I can be friend with both of you and be Jonny in the Middle because I’m basically Switzerland.”

At first I tried not to let this bother me. I didn’t want to tell my friends they had to choose between me and a bully because that seemed shrewish. Also mostly because I know that my side would not be chosen. But the longer this goes on, the more this bothers me.

All of these people know this person is a bully. They know this person’s behavior is terrible. Conference organizers know that this person will ruin them on Twitter if they don’t do everything the bully says. So why do they keep giving my bully a platform? Why do they keep inviting the bully to speak and give them power and visibility? Why do they knowingly stick their neck in a noose and then punish anyone who threatens a situation where it might cut off their air?

I kept thinking that one day someone would catch wise to this situation and they would stop inviting my bully to speak, but it hasn’t happened. I realized that it’s not because people don’t know this person is a bully. It’s because people don’t care. They don’t care that this person treats people badly because they get something out of interacting with them.

That’s the piece that clicked into place that really made me feel I needed to talk about this. I knew my bully had mental health issues. Not that it’s an excuse for behavior. I don’t blame them for complaining about me to the conference organizers. I expected them to. I would not be surprised if my bully used their clout to keep me away from any conference they were at for so many years.

The people I do blame are the ones who know this is happening and do nothing.

I don’t know how I can continue to be friends with people who knowingly associate themselves with an abusive bully. I don’t know how they can feel that it’s okay for someone to ruin people’s lives as long as it’s not theirs.

I also keep thinking about how this was how I was treated when I WAS A SPEAKER!! I keep thinking of all the people this bully might have damaged who didn’t have the clout/visibility I do. What if I had been an attendee? A student? How many people have had their careers damaged or left the community because they ran afoul of this person? We’ll never know.

What Do I Want Out of This?

Here is what I DON’T want out of this:

  • I don’t want anyone who figured out who these people are to harass them on Twitter in any capacity. That’s their MO, not mine.
  • I don’t want to start a feud. This is about me talking about my feelings, not trying to start some kind of retribution against anyone. I’m not trying to damage anyone’s business/living because I feel slighted. I just want to be able to speak openly about how this made me feel.
  • I don’t want an apology. The organizers made a calculated risk that they could treat me like shit and have nothing bad happen to them because I have no power to make their lives miserable and they were right. That burns me up a little, but it’s reality. I don’t want a fake apology from anyone trying to make themselves look better. The bridge is burned and it’s not coming back.

I do want two things out of this. The first thing is I just want to talk about how this made me feel. I feel deeply angry and hurt by this situation. I have bottled this up for over a year and I am tired of it. I kept telling myself I had no right to feel upset about this because there are kids locked in concentration camps along the border and the world is slowly microwaving to death. Being slighted at a conference is the most First World Problem there is. Also, I may be in the wrong here. What if I did something terrible and I was told not to tell because it would look bad for me? I know I should get over this and if I just keep trying to be a good person and ship projects that in the long run this doesn’t matter. But I feel I have the right to my anger and my pain regarding this.

I want to be clear that I didn’t expect the organizers to tell my bully to fuck off. I was pretty sure my bully would complain about me, but I wish the organizers had handled their interaction with me differently. Instead of treating me like a pedophile caught next to a playground, I wish they had privately reached out and been like, “Hey, look. Someone complained about you. We know you’re cool. Do you mind just like avoiding them so that they don’t cause an incident?” I would have been like, sure, no problem. See you next week. They chose instead to completely burn our entire personal and professional relationship. It wasn’t necessary. They chose to do it. That kind of stings.

I want to get over this. This is a festering wound that never heals and constantly reopens over nothing. I don’t trust people who were my friends. I don’t feel comfortable or trust anyone anymore. I am consumed with a desire to become so powerful that no one can ever fuck me over like this again. I hate feeling this way. I want to build things that make me happy. I want this to not bother me anymore.

The second thing I want out of this is for people to realize there is no neutral position in a situation where someone is being bullied or harassed. If someone is being bullied because they disagreed with another person’s behavior towards someone else and they are being harassed, you don’t get to sit there and think, “Sucks to be them! Should have keep their mouth shut!” and still be a good person.

There is a somewhat large subset of people on Twitter who feel that any kind of disagreement with them constitutes harassment. It does not. Hating someone isn’t justification for complaining about their presence at a professional event.

How to Handle Bullying

Here’s a handy guide to dealing with bullying.

If you see someone being harassed, you gently insert yourself into the conversation and you tell the harasser that their behavior is inappropriate. The harasser must back off and apologize and the incident is over. There is no retaliation or blame from either party. It’s just over.

If you see someone try to step between a harasser and someone else who is also being harassed, you don’t sit back smugly and think they should have kept to themselves. You step in and also assert that this behavior isn’t acceptable.

This works even in the situations where people are afraid of being called out as creepy or socially awkward. If you are bothering someone and you don’t mean to, the person just wants the behavior to stop. Someone lets you know that you are bothering another person, you apologize, and you leave them alone. Kindergartners understand this. Had I been asked to apologize to my bully but be allowed free range of the conference, I would have been happy to do so. But the point was retribution not fear.

Bullies are allowed to act the way they do because most people sit back and let it happen because they figure it’s nothing to do with them. It is to do with you. If you sit back and let people behave this way, you’re contributing to a hostile environment. Your friends see when you sit back and let them be treated like crap. They remember. They pretend it doesn’t hurt them when you tell them later that what happened sucked but you didn’t want to get involved, but it does. You are hurting your friends when you let them be harassed.

We can’t do anything about the concentration camps along the border or the inevitable heat death of the Universe, but god damn it, we can make our community a little bit more welcoming and friendly place for everyone.

Post Book Stress Disorder

In sports there is a concept known as The Yips. It’s a condition that affects experienced athletes where they develop spasms in fine motor movements that impact their game in a profound way. It’s generally in culture ascribed to the athlete letting their head get in the way. They begin to overthink things too much. It interferes with their movements, causing them to do poorly. This creates a negative feedback loop where they are doing badly because they’re thinking too much, which causes them to think even more and do even more badly. It can completely destroy an athlete’s career.

Back when I started with tech, I didn’t have a lot of experience with programming, but I did have a lot of experience with writing and speaking. I delivered radio news for three years. I had a journalism degree. I knew that I could present and deliver information in a clear concise way. The big problem I had was that I was limited in what information I understood that I could present.

I had the opportunity to write several books early in my career that I felt very proud of. These were generally introductory books, which contain information that tends to be easier and more fun to present.

That changed two years ago when I was given the opportunity to write a book on Metal. I felt very strongly that I could learn and explain Metal in a way that was understandable because I was coming at this as a beginner. Everyone I spoke to who knew Metal was someone who was very familiar with OpenGL and didn’t really understand what a beginner would not know about. There was a lot of unfamiliar terminology that you need to have a good grasp of in order for Metal to be useful. I had a lot of confidence that I could present this information in a presentable way to people with no graphics background.

During the process of writing the book, I didn’t really have time to think about what I was actually trying to do. I was laser focused on accomplishing one task at a time until the book was done. It was an intense but satisfying experience to watch as my small steps added up to a full book.

I needed a break from writing, so I didn’t blog much or work on a book in 2018. During that year, I had some time to think. And the thoughts I had weren’t very pleasant.

When I completed the book I was proud of what I was able to accomplish in the time I had available. I felt that it would take two years to write a good book on Metal. I had about ten months. I didn’t have time/resources for the number of graphics I wanted for the book or the amount of sample code I originally planned for. When I finished I felt that I had had the minimal amount of time to write a book that I would not be embarrassed by. But not being embarrassed by something is vastly different from being proud of it.

There are several chapters of the book that my tech reviewers were deeply disappointed in. One of them has blocked me on Twitter. The other one will not speak to me. I don’t know if this is a reflection on them or on me. I don’t really understand socially what happened and it upsets me to know my peers do not like or respect me.

I have begun second guessing myself on the book. I don’t know if I presented the information well. I keep worrying that people who read the book are judging me and deciding the book was bad and that I exposed myself as a fraud who doesn’t know what I’m talking about.

I finally began reading through the book the Wenderlich’s published on Metal after having to get over my fears of it being far better book than my book was. I think it’s a better book than mine and they cover a lot of the material in a much more comprehensive manner than I cover my material, but I also feel the book is incredibly dense. I only understand the material presented because I took off nearly a year to fully understand Metal to the point of writing my own book. I don’t want that to come off as bitchy or dismissive of their book because it’s full of a lot of great information. It’s a great book for me and I am grateful that it exists, but I do wonder how much help it is to people without the same background I have.

I have begun to worry that this material is completely unpresentable. That there is no way to simply explain things to new users. This is causing me to second guess my ability to present any information about anything. I don’t know if I actually was ever good at presenting information or if it was just hubris on my part.

I am considering writing another book on a far less complex topic than Metal, but I am wondering if I have anything to contribute to that topic. I am wondering if I should bother writing anything because I don’t know if I can present information clearly in a way that people find useful. I also don’t know if anyone gives a crap about the things I want to talk about because it’s not about algorithms or cross platform JavaScript frameworks or network protocols. This is causing me a lot of depression and anxiety.

I don’t know if I should take this as a sign to give up on writing technical books or if I need to jump back in so that I can get over this. I keep going back and forth. Some days I am super enthused about the idea of writing a book from my own perspective. Other times I feel like I am just copying work other people have done but in a much less compelling way.

I feel the urge to hide. I don’t want to talk to or deal with anyone. I want to be left alone. I want to just work on crappy little projects that will never earn money that I do for myself because I have given up on the idea that I have anything of value to contribute to the tech community.

I keep trying to tell myself that completing the Metal book was an accomplishment. I wrote that book in less than a year. I wrote it by myself. I got up every day and stuck to a plan and shipped something. It’s not perfect. But for better or worse it’s presented in the way I felt it should be presented. This was a challenge and I don’t know if there is a right or wrong way to present difficult materials.

My hope is that anyone who reads the book and is disappointed by the content that they at least understand that I worked hard and did what I thought was right. I did the best I could under the circumstances that I was given. I don’t know if I would have done things any differently had I to go back and do it over again. But now I have to deal with wondering where I stand and what I have to contribute to the community.

2018 Changes in Latitudes, Changes in Attitudes

Happy 2019 readers! This blog has been on something of a hiatus for the last two years and I would like to rectify that in the coming year.

2018 was a time of some rather big changes for me. At the end of 2017, I moved in with my boyfriend. We fell into a rather comfortable routine. My job allowed me enough down time to work on side projects, such as my game development blog and a new third-party framework.

As 2018 progressed, I left that job and began a consulting contract. I had a year to complete the contract and I was slightly burned out, so I worked that part time. This allowed me to continue to work on the third party framework, which I had hoped to complete the port of by the end of the year.

But, life gets in the way.

In March my loving boyfriend asked me to marry him. I joyfully accepted and we set a wedding date for September. I had already planned out what we were going to do. The wedding would be quite small. I figured that it wouldn’t disturb our routine that much and I could continue work on my side projects.

Let’s just say this did not go to plan…

Beyond the actual wedding, there were a lot of things that needed to be taken care of. There was paperwork and deadlines. I had to go through various processes to get my name changed. There were dress fittings and meetings with the minister. All of my mental energy that I had been using for my side projects went into the wedding/marriage.

The whole family at the wedding. Mazel tov!

I think I have written on here before about the depression I suffered after my first marriage officially fell apart. I thought when I got my ex-husband out of my house that all of my mental energy would be free to work on projects and do things I care about.

I didn’t realize that the huge change in going from being married to being single would be a tremendous shock to my system. I had never paid taxes before. I hadn’t paid the water bill before. I had no idea what any of my expenses were because I never saw them before. I now had to handle those things and budget for them and figure out how to feed myself. This threw me into a shock and it took a few years to shake off.

Even though the wedding was a nice disruption to my routine, it was still a disruption. I had a lot of trouble getting motivated or focused on my side projects because I kept worrying about something I needed to do for the wedding. I knew it would be over soon and when it was that we could get back to our routine and I could continue with my projects.

Again, that turned out not to be the case.

When I moved in with my husband, I wasn’t really comfortable with the house. It was his house and even though I gradually made it feel like our home, there were some issues with it. I didn’t have a room that worked well as a home office. I converted a bedroom to my office, but it was still a bedroom. It had closets and was in an upstairs corner of the house. We couldn’t open our window shades because the houses next door were within touching distance and we didn’t want people to look in. We had basically no yard, so that was hard on the dogs.

Instead of weekends spent lovingly working on game and graphics projects, we attended open houses and got our hopes up on homes that didn’t pan out. It was mentally and emotionally exhausting.

My new dedicated office space!!

We found a lovely new place that suited most of our needs perfectly. The ones it didn’t were improvements we could implement as opposed to ones that could not be changed, like the size of the lot and the nearness of the neighbors.

So instead of spending nights and weekends working on projects, we spent that time cleaning our house to put up for sale. After the sale, we spent that time cleaning and packing for our move.

For about two months it was close to impossible to work on anything I didn’t absolutely have to because of the sheer mental exhaustion of just planning out everything that needed to be done before we could move. I couldn’t even get involved in my usual cooking projects because I knew that I should be packing up the kitchen for the move and it made no sense to buy a bunch of food that would need to be moved from one place to another.

Around the time we started putting the house up for sale, my consulting gig got a bit more serious. I discovered there were a bunch of required features I had been unaware of and the client wanted the project completed by the end of the year. I started working on that full time and had literally no time for anything else I wanted to work on. The third party framework has languished for months and people are beginning to ask if it will ever be completed.

Three days after Christmas we moved out of our old house and into the new one. It was an exhausting day, but we made it work. We’re still surrounded by boxes and I still have trouble finding clean underwear in the mornings, but we’ve weathered the worst of it and we’re beginning to take stock of where to go from here.

I have a few goals I would like to accomplish in the first half of 2019:

  • Make GPUImage 3 have feature parity with GPUImage 1. I feel badly about not updating the framework for so long and I want people to feel comfortable knowing the framework isn’t abandoned before integrating it into their projects.
  • Blogging. I have let all of my blogs languish because I have been too overwhelmed to think about what to write. I would like to go back to blogging about graphics and getting more comfortable with Metal in general.

It’s not a first half of 2019 goal, but I have the same goal for 2019 that I have every year: Ship an app. I have shipped books and held interesting jobs, but I have not shipped an app of my own. Technically the consulting project I am doing is an app that will ship that I essentially wrote on my own, but it’s not mine. I learned a lot from the experience of building that app and now I want to make one of my own and be my own client. I have not decided if it will be an iOS native app or a project created in Unity.

I have a few possible projects on the horizon that have not been committed to yet, so I won’t mention them here.

I know that there is something of a backlash against New Year’s resolutions. Most revolve around losing weight and going to the gym, which is hard to sustain. I think it’s nice to have a delineating beginning to a span of time where you can take stock of things and say “I don’t like how things are right now and I want to change them.”

I love my husband and I love our new home. I would not change that for the world. But right now I need a mental change. I am tired of my side projects being packing my life to move from one place to another. I miss having a thing I am making for myself that I will feel proud of. I keep worrying I will never get back to that again. I want my own life. I want my own projects. I want to look at things I have produced and feel pride that I did something this year that I couldn’t do last year.

Professionally I feel like 2018 was a wash. I didn’t accomplish anything I wanted to. I don’t feel I progressed in a meaningful way. I guess I have mostly completed an app by myself that should ship, but that doesn’t feel like progress to me. I want to learn from these experiences so that I can use my time better this year on things I care about.

I don’t think we’re going to have a wedding or a move this time around.

2019 Speaking Sabbatical

I gave my first conference talk in February of 2014. It was on sound design for mobile applications. I didn’t practice it enough and didn’t realize how scary it would be to speak in front of 200 people I didn’t know. I have about twelve minutes of material and completely bombed my talk.

The organizers were very kind people and understood this was my first talk. They said I didn’t do that bad and that I could come back from that and do better.

As painful as it was to completely bomb the way I did, it really lit a fire under me to do better. I attended conferences and saw Daniel Steinberg speak and come away inspired, but also devastated because I didn’t think I could ever be as good as he is. Which is true, but still.

I told myself that I just needed practice. If I did more talks, they would make me less nervous. I would have more professional experience and my talks would be better. Even if I couldn’t do as well as Daniel, I could develop my own style and be a better speaker.

For a few years, that seemed to work. I did a lot more conferences, got more comfortable with speaking, and did much better. I personally feel the best conference talk I have ever done was this talk at CocoaLove. This was the height at which both my speaking and professional lives have been at.

Shortly after this talk, I had a complete nervous breakdown.

I lost my ability to code due to burn out and PTSD. I would walk into my office and break down in tears at the thought of trying to work there. I had to redecorate my office in order to begin to work there again.

I developed a speech impediment and became very shaky. When I would attend or speak at conferences I would have to hide in my room for most of the conference in order to not completely bomb the talk I was giving. This was around the time I got Delia certified as a service animal. She helps me tremendously, but I still have a lot of difficulty going to conferences.

One major reason I decided to write my book on Metal was because I could no longer work and I needed a placeholder in my resume. During this time I basically became a shut in. I couldn’t leave my house. I started a meal subscription service so that I would not starve. The once a month or so that I did leave the house to buy alcohol would completely exhaust me for the rest of the day.

I stopped feeling human. I would wake up at the same time every day. I would work until about 3:00 in the afternoon, at which point I could no longer function. Then I would take a bath, drink gin, and watch Project Runway while cross stitching. On days where I was too burned out to work, I have no idea what to do. I couldn’t leave the house. I didn’t have friends to visit. I couldn’t focus on anything else. Do I just start drinking gin at 8:00 in the morning? I got a lot of stuff done, but I didn’t feel good.

I am disappointed the book didn’t turn out better and that so few people have read it. I know that had I been given a little more time, it could have been what I wanted it to be, but I am not ashamed of what I produced in the time I had to produce it. Writing the book helped me recover from the burnout and PTSD I suffered from, but I was still not back up to where I was a year earlier and this bothered me.

I decided at the beginning of 2018 that I would not submit to any calls for papers this year. If people invited me to speak, I would accept. I had several offers. I accepted all of them, but had to back out of one that was too overwhelming for me to deal with.

I have not been happy with most of the talks I have given this year.

I have gotten so anxious about traveling and putting together my talks that I have procrastinated working on them. I have so many things I want to say while I am doing my talks, but I get overwhelmed and lose my ability to speak. I get confused and upset and have to soldier on. I feel I am letting down the people who come to see me. I worry that they are wondering why I keep being invited to speak at places when I suck at my talks and they’re not very good.

I have reached the decision that I need to focus on regaining my mental health.

I have a few conferences I would like to attend next year, but right now it is my plan to do a hard reset on my brain to see if I can go back to how much better I was two years ago.

I got into speaking because I thought I could offer a unique perspective on various aspects of technology and give funny, interesting talks. I have been failing at this for a while now. I need more spoons to put together the kinds of talks that I would want to see. I need a break.

I have one single exception to this decision for 2019. I would be willing to speak about autism. If someone invited me to do a keynote about autism, I would happily accept that. I feel that there is a lot of misunderstanding about this in our community and I feel that this is a topic I could offer a unique perspective on. If no one is interested in hearing what I have to say about autism, that’s fine.

I have been afraid to take time off from speaking because I am afraid people will forget that I exist. I am afraid that if I leave and try to come back that everyone will have moved on and no one will care about what I have to say. I am hoping that when I am in a better mental state with better information to share that there will be people who want me back.

I have also been afraid that I have alienated people while I have been having mental health issues. There are several people who have blocked me on Twitter that have taken me by surprise. I had an incredibly negative reaction from someone I considered a friend that I knew for four years and I don’t understand what happened. I don’t know what I did to anger them to the point that they have cut me off. My overarching goal in my career has been to try to be a happy and positive influence in the community. If I am not achieving that goal, then I need to step back and recharge so that I can be the person I want to be.

Thanks for reading this post. I hope that when I find something I want to talk about that an audience will be there to listen. I also hope that my delivery of it will be worth listening to.

Late Summer 2017 Conferences and Availability

A little over two weeks ago I finally was able to submit the final chapter for the rough draft of my book. I started the book back in October and it’s been a real trip. One thing I have not been able to do during the time I have been writing the book is have a stable full time job. Book writing is a full time job in and of itself, but it sadly doesn’t pay super well. One of my goals in the next few months is to line up a job so that I can start digging myself out of the hole I’m in.

I have two months to line something up. I am going to be speaking at a lot of conferences and doing a lot of traveling over the next two months. If you’re interested in seeing me, here are some of your options:

  • That Conference: That Conference is a spin off of Code Mash. It is a multi-platform conference that takes place at the Kalahari Resort in Wisconsin Dells. My talk on graphics programming will be on August 8th, which also happens to be the same day the final editing pass on all of my chapters is due. Busy times.
  • 360iDev: After missing the conference last year due to various work commitments, I am looking forward to coming back and seeing all my old indie friends. I will be doing a similar talk on graphics to the one I did at That Conference, but more tailored for iOS. That will be on August 16th in Denver, CO.
  • iOSDevUK: I get to take my second trip across the pond, both this year and in general, at the beginning of September. This conferences is in Aberystwyth, Wales and I will be presenting a two-hour pre-conference workshop on ARKit on Monday, September 4th.
  • Strangeloop: My final conference will be another multi-platform conference, but this time about cutting edge technology. I will be giving a talk on GPGPU programming on the iPhone using Metal and will try to talk a bit about CoreML. Strangeloop is in St. Louis, MO.

The book is set to release on December 4, 2017. I am working on the sample code that will accompany the book. My focus in writing the book was to provide more conceptual information about how Metal can be used rather than just cataloging the API. One of my frustrations in trying to learn OpenGL was the focus on the API with the assumption that everyone knows what a texture is and what Euler angles are. It is my intention that anyone buying the book use the sample code I am creating as canon since both Metal and Swift change so rapidly. I will maintain it and keep it up to date and I hope to add to it as new features become available.

I feel incredibly lucky to have had a chance to write this book. From the moment Metal was introduced in 2014 I felt like it was my thing. I worried I waited too long to get involved with it, but it seems like it’s been rather difficult for people to approach it due to the vast amounts of other concepts one must be familiar with before one can use Metal. I am hoping that this book helps open Metal up to other iOS developers.

I am planning my next steps right now. Beyond just finding a job and getting a paycheck, I have a few goals over the next few years that I would dearly love to fulfill. I will be sure to post more about them when they become more tangible. So far over the last ten years things have simply worked themselves out. I am hoping that this streak continues and that I know my next step when I see it. Until then, I am going to focus on the tasks ahead of me and do my best.

The Fallacy of Logic

Over the last 24 hours I have had several upsetting exchanges with people. I was dumb and responded to a notorious Twitter troll because I had just woken up and was angry and behaved impulsively. Later that day, I had someone I didn’t know call me out on it and demand that I logically defend my behavior. They told me if I was going to state my opinion online I should expect some backlash and be prepared to defend my point of view.

I got very upset and told this person that if they thought I was an irrational bitch that was just fine with me. This person got incredibly offended and told me not to put words in his mouth. He continued to fight with me until I broke down upset. In order to preserve peace with the rest of the people in the chat room who had witnessed this exchange, I apologized to them for engaging in this argument. The person who started it misunderstood who the apology was for and thanked me for apologizing to him. This action has made me physically ill and prevented me from sleeping much last night.

I have been rolling around in my head why this exchange upset me so badly. I wonder if I am unreasonable. I wonder why the hell this person felt that verbally attacking me on a chat room was perfectly fine but me implying he thought I was a bitch was simply beyond the pale and a bridge too far.

I have had a number of these kinds of exchanges over the last year. I noticed that people became incredibly hostile during the 2016 Presidential election. I had hoped that things would die down after that, but if nothing else, they’ve gotten worse. I had to deactivate my Facebook account because I was being attacked by people for not sharing their exact specific political beliefs. I have left multiple Slack rooms this year because one person out of 50-100 will lay into me about how my observations of sexism and discrimination do not fit in with their experiences as young white men who have computer science degrees who live in San Francisco.

None of these people are evil. I know several of them are generally nice people, but the way they engage me upsets me greatly. I feel like a rattlesnake frantically rattling my tail to warn them not to step on me. I don’t like being stepped on and biting them takes a lot out of me. They’re always surprised when they get bitten and decide that I am not behaving rationally and they get quite angry. I cut a lot of these people off because I simply can’t deal with them anymore.

I have been told that some of these people I have cut off are saying I am paranoid. They are saying I am mentally ill and I am destroying relationships with all my allies and one has gone as far as to say I am a sociopath.

I don’t want toxic people in my life. Life is short. I love cooking. I love my dogs. I love to write books even though they stress the living crap out of me sometimes. I feel like the world is this vast sea of endless possibilities and things to learn and explore. Then I get dragged down by the reality of trying to interact with other people who want to fight with me about Swift equivalents of vim versus emacs. These people drain all of my optimism and turn me into an angry bitter person that I don’t like being.

I have been trying to figure out why I am not allowed to simply withdraw from interactions I find unpleasant. I am not allowed to simply retract whatever the offending statement is. It is demanded that I defend it to the death and give up my precious spoons arguing with someone who is never going to be convinced that they are wrong.

I believe it is a fallacy of logic.

My ex-husband was an atheist. He said he would not believe in anything that couldn’t be proven with science. He said if Neil Degrasse Tyson says it’s true, then it must be so. Once he verbally assaulted me in the car to the point I was planning to jump out of the moving vehicle for saying “God bless you” to a stranger in public.

I am not an atheist. I would consider myself a Christian except I do things like read Tarot cards that I am pretty sure Christians see as witchcraft. I get very strong feelings about things that I know to be true but I have no evidence for their existence. When I was an atheist for ten years I would ignore these feelings and ignoring them always got me in trouble. I had a stranger talk his way into my dorm room and even though I had a bad feeling about him, I couldn’t think of a logical response to his argument that I should let him in. He raped me so badly I now have PTSD. My life was not on a good track and my world felt quite grey and empty. I decided ten years ago to believe in God, even though I had no evidence for his existence. I decided to trust those gut feelings i had been ignoring for ten years because they weren’t rational and to have faith that they were leading me to a better place.

I read a book many years ago called “Blink!” by Malcolm Gladwell where he talks about how our unconscious mind works much faster than our conscious mind does. It’s like having a background thread and a main thread. We can instinctively know something without being able to consciously and verbally explain it. I have faith in these feelings in spite of lack of evidence and I believe in them deeply. I have discovered most people in tech are not like this.

Emotions are not rational. We have been trained as a society to scorn anything that isn’t rational and can’t be explained very simply with logic. Any time I have a discussion with someone who doesn’t agree with me, they have a long list of talking points with very simple ideas that they use to try and convince you that you’re wrong. A lot of these people are simply unwilling to believe that you can see where they are coming from and still disagree with them.

I remember in college having boys try to logically explain to me why I should have sex with them. I was dumb and at the time I thought I could reason with them, but any arguments I made with them only gave them another argument point they could use to try and reason with me about why I should have sex. I would tell them I found them unattractive. They would say “Well I don’t find you attractive either! But sex is fun!” They were so invested in getting the result they wanted that it was completely useless to argue with them and the only course of action you had was to just walk away and hope they found someone else who is less work.

That is what the tech industry feels like to me some days.

I am not allowed to have my finely honed sense of intuition about anything because everything must be an argument. I can’t say that I don’t want to interact with someone who persists in arguing with me about nothing because that makes me a bad person. It doesn’t matter that these arguments destroy my ability to function. I am expected to have them because if I simply refuse no one knows how to respond.

Everyone is invested in believing that whatever they believe is right and correct and they have constructed intricate logical facts around supporting that believe. If someone doesn’t agree with them, they feel it is a personal attack on their core sense of self. They defend it to the death and feel that they are doing nothing wrong in behaving this way.

There was an interesting study recently that showed that most men will say that rape is wrong. They will swear up and down that they would never rape anyone. But then laster in the survey they admitted to forcing a woman to have sex that they knew did not want to have sex. There is a fundamental disconnect in their brains between the word “rapist” and what it means to rape someone.

We have a lot of labels for people that are not nice. Racist. Sexist. Rapist. Nazi. No one wants to be associated with being a racist even if they have racist beliefs. Calling someone a racist is seen as being similar to calling someone a bitch. It’s lost all meaning other than as a name you can call someone to try and make them feel bad about themselves. They don’t want to be called a racist. They think that their racist beliefs are rational and can logically be explained and that someone who is a racist hates for no reason and therefore can’t be them.

I hate to break it to you, but feelings are irrational. We feel the way we do based on things we can’t really explain. We are a result of decades of experiences and neurochemical reactions. I know people who got slighted by someone when they were seven years old and that one experience still angers them to this day. My father is still angry at being slighted by someone forty years ago who died in a terrible car accident thirty years ago.

We’re all giant bundles of irrational behaviors. I just wish that we were better at accepting that sometimes there isn’t a logical explanation for why we feel the way we do. We’re all entitled to our own perspective on something without feeling like the existence of a different perspective threatens our own.

If someone is triggering my PTSD symptoms and doing something I find threatening, I am entitled to end that conversation. I should not have to suffer flashbacks because someone finds it fun and engaging to get involved in an endless argument over nothing. You don’t get to argue with me that what you’re doing wouldn’t bother 99% of the rest of the population. It bothers me. If you persist in behavior that I perceive as threatening I have the right to cut you off to protect myself mentally. If you know that what you are doing is upsetting me and you persist in doing it, you are harassing me. My right to feel safe is greater than your right to argue with me. I don’t care if you agree with me or not. I am entitled to my own perspective just as you are entitled to yours. Agree to disagree and get a beer with me later. Or call me a bitch. I would vastly prefer that to the death of a thousand cuts of being forced to explain why I feel differently than you do while looking for a way to escape.

What Will Your Verse Be?

Yesterday was the conclusion of WWDC 2017, and what a WWDC it was. It felt like everyone got what they wanted. Most developers got better stability in tooling and not too many changes to the core frameworks. We also got some breathtaking graphics and games APIs, like ARKit, along with easier integration for machine learning models, such as MLKit.

I watched the keynote in awe, my brain exploding with everything that was now possible in iOS. I had augmented reality on my wish list, so that thrilled me. But seeing how much love Apple gave Metal really touched me deeply. I have spent the last eight months working on a Metal book and I had feared that it would land with an unceremonious thump and no one would care about a three year old technology framework. The keynote gave me hope that Metal would be a continuing important part of Apple’s future for the time being and that my efforts were not wasted.

I downloaded the Xcode 9 beta with the intention of diving into ARKit. The beta still has not been extracted from its .zip file. I got home and immediately became overwhelmed by everything. There are so many new things. I tried to look at the docs but my head swam and I couldn’t deal with it.

The next day I started to see people posting their own AR efforts and a few days after that I started seeing ML efforts. I got very depressed. I left the keynote feeling like I was ahead of the curve and now I was already behind it again.

I feel we in the Apple Developer Community have been trained to jump on every new shiny thing Apple announces immediately. We all remember missing out on the Gold Rush when you could put out an app that you made over a weekend with some new piece of technology that Apple created and earn $10,000 in a week. The new Photos stuff allows us to do a vast but limited number of things and if you want your Photos app to be the top dog you have to get it out before anyone else does because you all have access to the same tools and the barrier to entry is low.

I want to be emphatic about this point: That is not the same situation with ARKit or Core ML.

My background is in the creative field. I wanted to be a film director and do sound design. My dream since I was a child was to have the Back to the Future experience of getting a box of books on my doorstep that had my name on them and to know I wrote a book. I have had that experience several times now and I feel quite blessed that I got to have that experience.

Anyone can write a book. We all have access to the same tools. There are fancy authoring tools like Ulysses and Scribner that cost $50, which is basically nothing compared to the cost of being an iOS developer. There are self publishing sites everywhere that will allow you to publish your book if no one else is interested, or if you don’t want to give up 50% of your royalties.

Just because anyone can write a book doesn’t mean everyone will write a book. Also, it doesn’t mean that someone else is going to write your book.

We still read stories that were written hundreds of years ago because they speak to something foundational about how we see ourselves as human beings. I read Tarot cards and the cards haven’t changed for a hundred years in spite of all of our changing circumstances because even though we all have iPhones and can connect at any given moment, what makes us human has not changed. We all worry about money. We all strive to advance in our careers. We all crave love. We all desire to have some kind of family, even if that family consists of friends and a grumble of pugs. Those aspects of ourselves don’t change.

A story by Jane Austin still resonates with us because we know how difficult it is to find another person you are willing to spend the rest of your life with. Romeo and Juliet still appeals to hormonal teenagers to whom every little bump in the road is the end of the world and for whom every relationship is forever. Unfortunately, the same applies to Twilight.

One reason so many people are appalled at the behavior of the Republicans right now in trying to strip tens of millions of Americans of their health insurance is because it goes against our script of what we think people should be like. Atrocities like the Holocaust speak to us on a deep level because it goes against our human nature of the way that we think people should behave. And it keeps happening. This is one reason The Lord of the Rings and Harry Potter have such staying power. They speak of ordinary people being placed in extraordinary circumstances, facing incredible odds, to attempt to defeat evil. The evil of Lord of the Rings was a different evil than we have now, but evil is never truly defeated. If you wanted The Legend of Korra, you know that light and dark are in an eternal battle where one can never truly vanquish the other.

Yin and Yang. Darkness and Light. Good and Evil.


Augmented Reality has me excited because it opens up another medium to tell stories. You could create an AR app that takes you around the Tower of London while you investigate the disappearances of the Princes in the Tower. You can stand on the site that Anne Boleyn lost her head and see the crowds of people observing the event. It makes these old sites and dusty facts come alive in a way that they can’t if you’re just reading about them in a book.

Technology in and of itself doesn’t make something compelling. Every Jurassic Park movie has dinosaurs, but only the first one truly feels special. When I think about Jurassic Park, I don’t think about the dinosaurs. I think about the characters and their story arcs. The overarching story arc is a tale of human hubris where a con man with a bunch of money is able to cobble together extinct animals by buying enough technology other people developed in order to create an amusement park to make money. He doesn’t think through the consequences of what he’s doing and is brought low by his own hubris.

The secondary arc of the film has to do with Alan Grant. The first thing you learn about him is that he hates computers and technology. Nothing in this movie is going to change that opinion. The second thing you learn about Alan Grant is that he doesn’t like children. So of course he is the one that is stuck watching the children after the park goes to hell. He goes through a fundamental change by having to interact with actual children and at the end of the film they snuggle with him as Dr. Sadler starts ovulating. It keeps Dr. Grant from just being the crabby guy who loses all of the good one-liners to Jeff Goldblum.

We’ve seen many other films in the last 25 years that have dinosaurs, including the most recent Jurassic Park last year. But none of these films have the satisfying feeling that the first one does. It has an encapsulated story and a grand theme of human scientific hubris. Everything goes to hell the way it’s foreshadowed. The park is destroyed by the unnatural force that was brought into it, and all of the people we actually care about survive. It’s a satisfying story that is enhanced by the use of special effects that are actually used quite sparingly.

One reason Pokemon GO was so successful was because it was building off of an experience that people have been emulating for 25 years, which was to pretend to live in a world where little pocket monsters live in the tall grass and can be captured and made into your friend. There is a sense of wonder about Pokemon GO in that you can take it into the normal world that you inhabit and you can lift the veil on the normal world and expose a fantastical world you never knew was there. Most people agree that Pokemon GO was rather repetitive and the game play wasn’t great, but it created an experience that was wanted by a large number of people. The same thing happens when people visit the Wizarding World of Harry Potter theme park.

One thing these have in common is that they are pre-existing properties that have large and established fan bases. Most developers aren’t going to be able to go out and create their own Doctor Who augmented reality application because of licensing issues. So that means that there really isn’t a hurry to go out and do whatever the first few AR apps are going to be. If a company like Warner Bros wants to release their own Harry Potter AR app, you can’t stop them. But you can think about what story you want to tell.

AR is a tool that is made or broken by the story that the creator wants to tell. You can create an interactive murder mystery or a tour of a museum. There are so many unexplored avenues of AR that the limit is what you can imagine and how much work you’re willing to put into creating that experience.

We have such tools to create and express ideas, yet few people seem to. I am guilty of that as well. I do hope that the barrier to entry gets low enough that I can spare some time to create some experiences for the joy of creation. But please do think about creating something for the joy of creating it and not because you assume that there are a wealth of new AR related jobs or a limited number of AR apps to be created and you must pursue the money train on this. That train goes over a cliff. We have so many media for self expression and no time to do it and no stories to tell. Life is filled with possibilities if you lift the veil on the real world and reveal the hidden one.

We don’t read and write poetry because it’s cute. We read and write poetry, because we are members of the human race. And the human race is filled with passion. And medicine, law, business, engineering — these are noble pursuits and necessary to sustain life. But poetry, beauty, romance, love — these are what we stay alive for.

To quote from Whitman: ‘O me, O life of the questions of these recurring. Of the endless trains of the faithless. Of cities filled with the foolish. What good amid these, O me, O life? Answer: That you are here. That life exists and identity. That the powerful play goes on, and you may contribute a verse. That the powerful play goes on, and you may contribute a verse.’

What will your verse be?

Goals for 2017

We’re about halfway through 2017. WWDC starts on Monday. I have been working on a book on Metal since about October. My life has been on hold since then as I knew I couldn’t really work a full time job and write a book on Metal at the same time. Metal is incredibly mentally comprehensive. It’s a multidisciplinary skill as you don’t just have to understand the framework, you have to have a large base of knowledge around linear algebra applications in order to have it do anything useful. Half of my book is about graphics and half is about machine vision/learning and GPGPU programming. So trying to learn all of these things and distill them into something that’s actually coherent to other people has been incredibly mentally exhausting. It’s been rewarding as well. I honestly don’t think I could do this while also working full time concurrently.

I am getting to the end of my time on the rough draft of the book and I need to figure out what I am going to do when it’s over. My plan was to try and knock this book out as quickly as possible and then hope I could use it as a portfolio piece to find a decent full time job that would hopefully allow me to work remotely. As I nearing the end of this process, I don’t really want to do that yet. Don’t get me wrong, if someone offered me a decent full time job that let me work from my house right now, I would accept it immediately. But right now that’s not what my main career goal is for the near future.

One of the wonderful things I got to do this year was attend GDC. I got to meet a lot of awesome game developers. As an iOS developer, I meet a lot of people who think game development would be cool, but it doesn’t pay anything, so they stick to learning Core Data and doing boring things that will keep them employed and pay the bills.

I don’t have an app out on the store. I have published multiple books (and yes, I do know how to code!) and have worked on many long term projects with a team of other people. But it bothers me that I have never published an app. Specifically, I want to publish a game.

I have been toying with game development for a few years. I have tried working through a few books on game development assuming that game programming would be exactly like iOS programming. It’s not. There are a lot of design patterns that are fundamentally different between iOS and game programming. Also within game programming, there are a lot of foundational differences between a platformer game and an RPG. Just knowing some foundational SpriteKit information is helpful, but it’s just the tip of the iceberg for creating something interesting.

I see game development as being similar to Metal in that just learning the framework isn’t enough. You have to have an idea about what you want to do with it in order for it to be truly useful. A lot of Apple’s frameworks are very Lego-block like in that you have a bunch of built-in methods to do whatever it is you want it to do. That can be satisfying to throw together, but it doesn’t give the same feeling of creation you get from doing something outside the box.

As of right now, I have two goals I would like to accomplish in 2017:

  1. Publish my Metal Book
  2. Publish a Game Made With SpriteKit

I know that my first goal will be accomplished. I don’t know about the second one. The second one depends upon me being able to line up enough part time contract work to pay my bills while also leaving enough time for me to dedicate to game development.

I am talking to several people who have created successful consulting companies about trying to figure out how to do this successfully. I have been consulting for the last year or so, but it’s been rather haphazard. I have been fortunate enough to know someone who needed a contractor at exactly the right time I needed to begin something else. I don’t want to continue to rely on getting lucky in order to sustain myself. I know if I want to do this long term I need to put time and energy into it.

So why am I writing this blog post?

I believe in manifest visualization. I have noticed that many people have amorphous goals that don’t really line up with what they actually want to accomplish. I went to school for audio engineering and a lot of people wanted to be rap stars. They didn’t want to be rap stars because they enjoyed making music, they wanted to be rich and famous. Being a rap star seemed like the easiest way to get rich and famous and they assumed that being rich and famous would make them happy. This lead to a lot of people being put into exploitive situations that did not make them rich, famous, or happy.

I believe having concrete goals you want to accomplish with no extraneous strings attached to them is the best way to approach accomplishing anything. My goal with the book was that I wanted to learn Metal and I wanted to have a book on Metal with my name on it out in the world. I have no illusions that it’s going to get me hired by Apple or propel me into a job where I make fuck you money. I don’t have any illusions about it out-earning my advance. If I never see another penny from it and it doesn’t change my career, I am still happy I did it because it’s something I wanted to do.

Right now my hope is that I can line up part time contract work (~ 20 hours a week) through the end of the year so that I can publish my game. I am hoping that by focusing on what I want to accomplish and having concrete ideas about how to do it that I will be able to reach my goal. I don’t think my game is going to earn any money and it will probably look very amateurish and get lots of one-star reviews, but I want to create it because it’s something I want to know I can do. I am praying that I can find a way to add value to someone’s company as a contractor that also allows me enough free time to pursue my own passions and interests.

I don’t know if I will be able to pull off what I want, but I at least have an idea about what that is. It does no good to get everything you ever wanted only to find out you wanted the wrong things.

The Metal Programming Guide Pre-Order

After many long months of work, “The Metal Programming Guide” is available for pre-order. Many people have been asking me questions and here are the answers to the most frequent ones:

  • The book is in Swift.
  • I don’t know if this will be available in an eBook format. I would be greatly surprised if it wasn’t. Every other book in the Red Book series has a Kindle or a PDF version available. If the book is available as an eBook, I believe it will be accessible.
  • I will be taking into account what happens at WWDC. As of today, the rough draft of the book is 75% complete. That translates to 15 chapters completed and five to go. I have a placeholder chapter for whatever new and shiny thing may be introduced at WWDC.
  • There is going to be sample code. I had some really tight writing deadlines and it was not possible for me to write the code concurrently with writing the book. I intend to spend the time between when the book is completed and when it’s released to ensure there is good informative sample code. I hope to continue to add to this sample code and maintain it as Swift and Metal evolve.
  • The overall composition of the book is about 50% graphics and 50% GPGPU programming. There are a few chapters in the graphics section that you will need to read if you’re only interested in GPGPU programming. Those are detailed at the beginning of that section.

One thing that I have learned while working on this book is that it’s impossible for this to be everything to all people. There are chapters in this book that have entire books dedicated to them. It wasn’t possible to write all of the implementation details of complex operations such as facial detection. My hope with the book is to basically prime the mental pump. I hope that if you encounter a topic you find interesting that I am giving you just enough information about it that you can somewhat wrap your head around it and seek out dedicated resources for it.

One of the biggest questions I have gotten over the last year is “Why should I know Metal?“ I am hoping that my conceptual chapters do a good job of answering that question for you.

I’m incredibly excited for this book. This is the book I have wanted to write since WWDC 2014. I thought that I waited too long and I missed out on being the person to write this book. I feel incredibly grateful for having the opportunity to take a year and really dive deeply into Metal. I knew since I started programming I wanted to learn and understand graphics. Getting to take that knowledge and apply it to thinks like data analysis and machine learning.

I loved math as a child. I felt like it was the language that helps us understand the Universe. I strayed away from it as a young adult because I had a bad experience with it and figured I was stupid and that it wasn’t for me. By bashing my head against vectors and matrices and seeing how you can use them to do amazing things has been a mental renaissance for me.

In life you don’t get a lot of opportunities to work on something you’re passionate about. I have been fortunate in my career to have several of these opportunities and I cherish every one of them.