Moon Shot

December 2013

Just about six years ago today I got my first programming job ever. Madison has never really had a thriving iOS work environment and I felt fortunate to find an iOS job immediately.

I was working for a start up that came out of UW-Madison where our CEO was so young that he had trouble paying for our holiday party because some of us (mainly me) had alcohol and he wasn’t old enough to drink. I was the oldest person there by a decade.

When I was a student I kept longing for a programming job so that I could work with people who had more experience than I did and I could learn from them. I wanted to be able to master designing software architecture and be a 10x engineer. That did not happen at this job.

In spite of not having any professional experience, my programming teacher did an excellent job of giving me a good programming foundation. He taught me about code smell. He prepared me for the fact that things change rapidly. None of my coworkers had this foundation. The code was deeply inconsistent. It took a month to implement a feature that should have taken a day because of how poorly the app was architected. They wouldn’t let me fix anything because they had a mythical rewrite of the code that would happen at some point in the future so why bother fixing things now when we have VC deadlines.

After a few months I knew this was not going to work out. I became deeply depressed. I had these dreams about what software development would be like and this was not it. I was afraid if I got another job it would be exactly like this one. I had an existential crisis.

I knew people through conferences that didn’t work at places like this. I knew they were out there. No job is perfect but some are better than others. I knew I wanted to get to one of these place but I didn’t know how.

I developed a five year plan for myself. I had a list of five companies that I would consider to be “making it” if I got to work there. I had goals of doing more conference speaking, hopefully internationally, and to write books. I decided I would not take any job that did not put me closer to doing something on my list.

Of those five companies on the original list, I got to work at three of them. One was a disaster, one was simply not for me, and the last ended because I decided I would rather date my boss than work for him. We got married last year and I don’t regret anything. But I do miss having a deeply collaborative work place where I could learn from someone who knows way more than I do and was patient in answering all my stupid questions.

I got to do a lot of conferences for a few years. I got to go to the UK twice. I had two years where I spoke at 10+ conferences in a year. It was fun for a while to get on a plane and jet off to some interesting location and meet a bunch of cool people who gave me a community I never felt I had. But a lot of these conferences don’t exist anymore. People don’t seem to be going to the ones that already exist and the energy is different there.

I finally got to publish my first solo book back in 2018. I spent most of 2017 locked in my house to get it done. I would have liked to have had more time to make it better, but given the amount of time I was given I am proud of what I was able to accomplish.

I accomplished basically all of my five year goals in four years. It would be three if I didn’t count the Metal book. Any time I feel depressed about what I am doing, I try to look back at where I was in 2014 and remember how far I have come and how impossible all of this looked.

2018

Last year I realized I had accomplished my five year goals. So at that point, I began to wonder what comes next. Up until I completed my Metal book, I always had a next thing I wanted to do. I had a company I wanted to work for. I had a book I wanted to write. I had an app I wanted to publish. After the Metal book, I kind of fell off a cliff. I had no real motivation to do anything. I had no end goal in mind.

I had thought when I started with Metal that I would build a consulting practice around it, but I ran into road blocks. First, most people don’t need a Metal programmer. Second, I couldn’t get people to agree to my rates. The rates I was asking were for what I would get for just regular iOS development and people were outraged that I would dare to ask for more than $60 an hour. Some wanted me to do their work for free as a test of my skills. This is no news to people who do consulting for a living, but I don’t want to deal with this crap.

I thought maybe I could write books. I know people who are prolific and can write a lot of books very quickly. I thought if I could churn out a book every year and maintain them that I could make that a sustainable job.

I made an agreement earlier this year to work on an ARKit book. I had hoped to get it done by the end of this year. It’s not even halfway done. I got sick earlier in the year and we had some stuff going on, but I was never really able to get and maintain any kind of momentum with the book and my heart wasn’t in it.

Also, I began to feel like the world was passing me by. My husband left his long term job this year to go work for Google. He comes home and tells me about all these amazing (public) breakthroughs they’re having in machine learning and all I can do is tell him I spent the day responding to editorial feedback and drawing a node tree diagram.

I don’t think I have the stamina to work for a place like Google, but I hate feeling like I took myself out of the game.

I had a really pissy conversation with someone on Twitter about whether or not I had to rewrite my ARKit book to use SwiftUI or not. He talked down to me about how no one would buy my book if I used UIKit and quoted that Jobs/Gretzky thing about going where the puck is going to be and not where it is. First off, I’m a tech person. I know the quote. Second, SwiftUI isn’t where the puck is going to be. It’s where the puck already is.

I began to feel actively resentful of the book because I feel like I have a decent idea about where the puck is going to be in five years but I couldn’t do anything about it because I had to finish the book.

For at least a year, I have felt stuck. I know that the things that worked for me a few years ago are no longer working for me. I can’t speak well at conferences anymore because I had a nervous breakdown and I get overwhelmed too easily. I don’t want to keep writing books because the stuff I am interest in is different from what the rest of the community wants to learn. I don’t want to be a consultant. I don’t want to work for anyone. Where do I go now?

Moon Shot 2025-30

On May 25, 1961, JFK announced to Congress that he was setting a goal for our country to put a man on the moon before the end of the decade. It was an audacious goal. It required a tremendous amount of money, man power, and cutting edge research. But we did it. We haven’t done it since because we’ve lacked the political will to dedicate ourselves to an expensive goal that would happen during someone else’s term.

I have a moon shot project. I found out about something that made me excited earlier this year and opened up possibilities in my head. The technology is new enough that it really won’t be ready for production for another few years. It could also disappear in the wind between now and then.

I want to do my moon shot project.

I don’t want to say what it is because I haven’t done it yet and I don’t want to come on here and say I am going to do something and then have to look at this post in six months and be irritated with myself for saying something stupid.

I am not afraid of someone stealing my idea because I know no one is going to. I am not afraid of someone telling me my idea is stupid because I already know that most people would and what their exact arguments are for why my idea is stupid, which is informing my design of the project so that I can eventually win these people over by resolving said issues.

Over the last few years, Jaimee Newberry has been doing a lot of great conference talks on motivating yourself to accomplish your dreams. She’s an awesome person who started a company where you can draw anything you want to and have it printed on a piece of clothing. She gave an awesome talk earlier this year about all the work they put into making this happen. She’s an inspiration.

While she’s better known for using this video, she has another one that she used just once that was only like five seconds long that I am unable to find. The gist of the video was a guy saying, “The only thing standing between you and everything that you ever wanted is you doing it.”

This has really stuck with me, even more so now. Since the beginning of this year, I can do anything I want. I don’t have to take a job for a paycheck. I can build and do anything I want. The only standing in the way of me doing my moon shot project is me. I am afraid it’s a fantasy I have for myself of a thing that would be cool to tell people I did and less of a tangible problem I want to solve for myself. I worry I can’t come up with the right stepping stones between where I am now getting to where I want to be. I am afraid I don’t have the motivation to make myself get up every single day, go sit at my computer, and just knock it out. It’s a marathon. If you’re doing a big project you have to make small goals for yourself or else you will go insane. I am afraid I am going to get frustrated and quit.

I do know I am tired. I am tired of feeling like I am not working towards something important and significant. I am tired of feeling like I am not improving. I am tired of feeling like I am irrelevant because I don’t want to be the first person with a blog post on the new shiny thing. I am tired of telling myself that I don’t care that no one else is interested in the things I am interested in and that if no one reads my book or plays my game that I don’t care. I want to care. I want to believe in something and advocate for it for some reason other than I happen to find it personally interesting.

I believe in this.

Establishing a Routine

When I began learning programming in 2012, I knew I needed to focus. I gave up a lot of stuff to learn programming, but I was able to motivate myself to get working every day. The same thing happened with the Metal book. I woke up every day knowing exactly what I would do. I had short term things I wanted to do each week with a longer term goal in mind. I have found my routine comforting when I am able to get into it. With that in mind, here are some guidelines I am going to follow for at least a year to see if I can establish my routine:

  • No books. I keep being tempted into writing books because I find it comfortable and familiar. They are a distraction from the things I actually need to be doing.
  • No conferences. I have a few hand picked conferences I may attend as part of my project, but I am not going to impulsively apply for a conference next year because I think it would be fun to hang out with my friends. The most recent conference I went to was so overwhelming I basically hid in my room when I wasn’t speaking. They’re hard on me and I need to focus on other things.
  • No unrelated technology. When I am getting burned out on a project I tend to have escapist fantasies about learning new stuff. Learning beginning new stuff is easy and comfortable because you don’t have to maintain it or get it to do things that are hard. It’s a distraction. I have to focus on just want I need to do.
  • Learn to say no. I have taking jobs/projects from people because I was afraid to say no. I want people to like me. I also remember the time before programming when I couldn’t find a job. For a long time, saying no to something was just unthinkable. But you have too. At some point, you have to make a decision about what is important because you have a limited amount of time and energy and care to give to something. I’m going to be greedy and hoard all of my care and energy for something that’s mine.

I would like to get back to blogging. Short form writing is okay. I can just vomit a bunch of words out of my brain and dump them online and go about my business. It’s different from doing a book where you have to carefully plan out everything you write and carefully go over it with a fine tooth comb for editing purposes. I find writing cathartic and I like to be able to just use my blog as a Pensieve where I remove things I don’t want to think about anymore so I can focus on other stuff.

I know this project will be harder than I think it will and take longer than I anticipate. I know tech changes. I know someone else might do what I want to do before I can. But I believe in this. I am going to do whatever I have to to keep myself from standing in the way of me doing what I must. No excuses. I choose to go to the moon.

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.

Quality over Quantity

Back in December I was approached about contributing to the Pragmatic Magazine. I was told the theme of the issue was Swift and I was asked if I had any good Swift posts that I would be willing to share.

I had a number of Swift posts that I was very proud of and I sent the links to the editor. Then I had a sinking realization that these posts were all from 2015.

Last year was a difficult year. I made a lot of mistakes and had a number of mental health issues. On paper my year seemed like it was incredibly successful, but I felt at the end of 2016 that I had not grown as I would have liked and I was not in a place I wanted to be.

One of my resolutions toward the end of last year was to have more technical content on my blog. I am in the process of writing a book. I intended to have companion blog posts where I share a number of things that I learned while I was writing the book. I have one post that has been partially written since November. It’s nowhere close to being done.

I keep wondering what’s the matter with me. I would like to produce more technical content. I keep meaning to, but things keep coming up. I know if I don’t make time to produce technical materials for blog posts or conference talks or to post on GitHub that I will be left behind. People always want examples of your work and you can’t keep pointing to work you did three years ago.

This morning I found a link to this article. The author talks about a lot of strategies about how to have a long and successful career in tech. This article helped to crystalize in my mind about why I am not producing more technical content.

Those blog posts that I submitted to the magazine were based on problems that took me months to solve. Each one of those posts and every project that I have written about that I am proud of all started the same way. I took something that was hopelessly unfamiliar and tried to force myself to learn it. These were all projects I did for Brad Larson when we were rewriting our code base in Swift.

One of these projects was wrapping libxml2 in Swift. The sample code was all written in Pascal. There was only one post written by anyone for this topic for the iPhone. That person was Jeff LaMarche. I was going to link to his blog post about it in this blog post, but it’s been taken down. So I had an incredibly undocumented technology that no one was using that it was my job to figure out.

I had about a week of complete and total panic and despair. I felt that I had been hired by mistake and that Brad would find out I was an inexperienced idiot and I would be fired in disgrace and I would never work again. I wondered about how hard it would be to find a nice easy call center job where I could cross stitch while talking on the phone all day answering the same questions over and over again. I thought this was hopeless, but it was my job to figure it out, so I had to try.

I spent a lot of time walking. I couldn’t look at my computer without getting a complete headache. I spent some time building robots. I would look at the docs periodically, but not for too long because doing so would cause a migraine.

After several weeks of doing this, suddenly things started to become clear. Instead of looking at a bunch of gibberish and having no idea about how to approach it, I finally had questions. I wondered what this one thing did. I wondered what the difference was between one object and another. I started to understand how to approach the problem.

I completed my task by learning all of this stuff over the course of about two months and I wrote my post. I was incredibly proud of the work that I did on that project and for finally figuring out how to solve it.

I never would have done that project if I wasn’t working for Brad.

First off, I never would have known what libxml2 even was. I would have just used the built in Cocoa framework and fought with it, but found plenty of sample code that I could copy and paste and go about my merry way. More importantly, if I had been doing this for myself, I would have taken one look at the lack of support, said fuck this, and done something else.

Forcing myself to confront something that seemed impossible and pushed me close to my breaking point mentally and emotionally. I have a faulty, tin-plated emotional system. If I get pushed too far I can’t function or learn. My brain shuts down. I had to confront my panic and my fear and force myself to approach this logically. At the beginning of Dune the main character has to take a Human Test. He is forced to put his hand in a box of pain and not remove it. Having mental health issues is like taking a Human Test. You have to think your way through your emotional issues and find some way of logically dealing with them so you don’t remove your hand and get scratched by the Gom Jabbar.

By being placed in a position where I could not simply give up, I was able to push through the initial phase of not knowing what the fuck I was doing to be able to see that there was an end to the Desert of Despair. I understand now that a lot of things I want to learn that seem difficult or impossible are not. I have been trying to teach myself Metal and 3D graphics math for the last two years. I know that even though the symbols seem incomprehensible and there are not a lot of approachable resources out there, I can bash my head against it enough to figure out a starting point. I can look at those symbols long enough over a long enough period of time that I can grasp some kernel of what I don’t understand that I can figure out.

I feel like our community doesn’t reward people for solving hard problems.

It pisses me off every year when Tim Cook announces some amazing new thing at WWDC and some jack ass in the audience gets some version of “Hello World!” working on it because everyone wants to be first. Everyone tries to cherry pick some easy problem that they can solve and post about so that they can show they’re keeping up with the Lattners. I have seen so much pressure in this community to pretend like you know everything. Companies place a lot of emphasis on what do you “know” not “how do you learn.” I admit that it’s a lot easier to test knowledge as opposed to problem solving and learning. I know that we’ve generally used knowledge of data structures and sorting algorithms as a proxy for how we learn. But memorizing some tips and rules doesn’t prepare you for the complete and total helplessness you feel when you confront something you must figure out that you don’t know how to do. You either rise to the occasion or you flee and become a Scrum Master.

I am realizing that most of the things I find interesting are difficult. I am in the process of learning some things that are complicated and poorly explained. I am hoping that after I push through everything I will have a wealth of material to write about on this blog. But I have to accept that what I want to do is hard. There is going to be a lot of invisible work that I do that isn’t being seen. There will be a lot of time spent thinking and processing and waiting for things to click.

Dan Barber is a prominent farm-to-table chef focused on sustainable food production. He wrote an article a while ago that really stuck with me. The gist of his article is that farmers are stripping their soil by only growing the most high profit crops. The soil gets progressively poorer and the food grown on it grows more and more tasteless because it’s nutritionally vacant. He found a farmer who grew an heirloom variety of wheat for bread flour. He thought the reason the flour was so delicious was because it was some heirloom variety, but it was because the farmer rotated his crops. He grew some less lucrative crops on his land that enriched the soil and only grew this wheat on the soil every three years.

I think one reason we have such a high burnout rate in tech is that we’re approaching development like we do farming. We will keep stripping our mental soil because it’s more lucrative to do so than it is to have furlough periods where we push ourselves to achieve truly difficult things. Start ups want to churn and burn developers because they don’t care about a person’s long term viability as an asset. It’s our responsibility as developers to take control of our careers.

Right now I am taking some time off to write a book. Even if the book is wildly successful I won’t make nearly as much money off of it as I would if I had worked somewhere during that amount of time. But taking this time to learn these things that I have wanted to learn for so long has been an extraordinary experience. The process of taking something that seems impossible and being able to make some traction with it makes me feel like I can conquer the world and anything is possible. Compared to a year ago, where I felt like I had to pretend I knew everything and I worked myself into a nervous breakdown.

Last year was a furlough year. I needed it to recover from some bad professional decisions. This year is a soil enriching year. I have so many projects I want to do and write about, but they’re going to take some time to figure out.

I would like to write more about tech on this blog, but I have to accept that I want to learn some difficult things that take a lot of time to figure out. I am not going to have a new post here every week that I am proud of. But if I can get four difficult technical posts on here this year, that’s not so bad.

Depression and Engagement

One of the major issues I have dealt with so far in my short career is lack of engagement on many of my projects. My managers, for whatever reason, are not around to see what I am doing. They are on business trips. They are swamped with entirely too many other responsibilities. The product owner is ambivalent about what they want to do so we’re waiting around for them to make a decision about something. Not poking at anyone in particular, this has been an issue I have seen a lot of places.

As programmers we’re supposed to be self motivated. We’re supposed to be given a problem and we’re supposed to run with it and get it done. We complain about micromanaging and how it’s hampering our ability to get anything done.

When you get left alone on a project, initially it can feel freeing. You can work without being disturbed. But then at a certain point you realize that you have been given no guidance on what is wanted. It’s like creating an app with no auto layout. You kind of know that there are some components that someone wants, but you don’t know how they want them arranged.

This is the point where things start to affect my mental health.

I start to encounter mental friction where I can’t make any decisions because I don’t know what people want. I know that there is one way they want something but they’re not around to tell me what that is or they don’t know to begin with.

This triggers feelings of depression and despair. I start to feel that success is impossible. I try for a while to do my best, but at a certain point I shut down. I am overwhelmed by choice because I don’t know which one is right. I can’t function. Nothing I do is going to result in success, so why bother?

I feel tremendous amounts of failure and self loathing. I think that I can’t hack it. I should give up on programming. I should go back to working at a call center where there is a script and no decisions to be made. There is no pressure from coworkers trying to sabotage you or pretending like they know more than you do because no one gives a shit and they’re just there to collect a paycheck. You don’t have to pretend like you care about anything other than not getting fired. It’s soothing and restful.

I have had this happen often enough that I can see it coming. I try to engage but so far that has never been successful.

What I need to pull me out of this state is to have something I can solve or get engaged in. I have noticed I will be on the verge of a complete shut down when something will catch my attention. A small light will appear in the darkness and my deprived attention will fixate on trying to solve it. Then my brain comes alive again and I wake up and everything is okay again if only for a little while.

I want to talk about mental self defense here.

I have learned to find things I can do that will pull me out of this state. Usually it’s working on a tutorial. It’s a set of directions with an end goal. You feel like you’re getting something done. It will engage my tired and exhausted brain and lead it like a trail of breadcrumbs back home. It’s not open ended so I don’t get overwhelmed trying to get something working from scratch. I know other people can do that and I can too sometimes, but not when I am engulfed in mental darkness.

Managers don’t want you doing stuff like this. I have tried to talk to them about what I can do to pull me out of this state. I can’t work on the current project. It is causing me to shut down. Is there anything else I can work on so I can mentally recover?

They will purse their lips and say they really need me to keep working on the current project. It doesn’t matter that I am unable to make any real progress on it or that anything I write is going to be buggy as fuck, they want the illusion that I am working on their project.

If you’re working with a manager who isn’t giving you enough constraints to figure out what a successful end condition is, don’t mentally collapse. Try to recognize when you’re starting to shut down. Find things that can pull you out of it.

I know it’s hard to do. You feel yourself getting further and further behind. You’re in a mental terror that you’re going to be fired for not finishing your project. You need to calm down. You need to prevent yourself from going under at all costs. If you break yourself your project is not going to get done. You’re no good to anyone if you can’t function.

If you do break, it will take a while to recover. I see a Reiki therapist who helps me recover from my breaks, but she always tells me to take it easy after she helps me.

I have gotten better at going back to my “analog” hobbies to get away from a computer screen when I feel myself going under. Cooking and doing cross stitch are tactile and engaging and give me a project that I can see progress on so that I don’t go completely insane. It can feel like doing projects is a dodge or a waste of time, but it’s vital time that I need to help my brain recover so I can keep working.

I never think that I am going to feel better. I think that there is no point in trying to do a tutorial because I should just give up and accept that I am a failure. Sometimes I am too broken to work on it, but when I have had a chance to rest, I come back and I feel my brain slowly wake back up and I feel better.

The biggest reason I wrote this is to try and give hope to anyone who feels consumed by mental darkness. I have felt that a lot over the last few years. When you’re in the middle of it you feel there is no hope. You feel you can never do anything great ever again. You feel broken, like everything has been stripped from you and it can be hard to try and engage in something because you’re convinced you will fail.

Please know there is hope. Rest mentally and take baby steps. If you can’t engage in anything, then you’re burned out. Sleep, rest, hike, whatever. Then come back and pick up something structured and engaging.

Engagement is so important to what we do. We mentally need to feel a sense of accomplishment. We need to have tasks that we can complete and see progress in the work we are doing. Creating those meaningful milestones and discrete tasks takes time and mental energy, but it’s necessary to maintain mental health and stability.

A developer career is a marathon and not a sprint. If you injure yourself you need to rest and work your way back up to training again. You don’t want to force yourself over the finish line and wind up in a wheel chair.

Know that you’re not alone. There is a way out of the darkness. It’s not just you.

Keeping Score

“Why did you let him treat you that way?”

I get this question a lot when people ask me about various relationships I have had. People don’t understand why I would not put up more of a fight on things like where we go on vacations or what color the wedding invitations were or whether we spent the tax return on a new couch or put it in savings.

I was thinking about that this weekend. I am in the process of painting and organizing my house. There are areas of the house, especially in the kitchen, that I have no idea about. My ex-husband organized the kitchen and basically never let me in there, so there are cupboards I have never opened full of things I have never seen.

One thing I decided to do was get rid of his plates and mugs. He had a set of plates and mugs that preceded the marriage. He left them here when he moved out. While he was packing he told me that he decided to leave those here and take a set that we bought our first year of marriage and the set that we got for the wedding.

I refused to let him take the wedding set.

The wedding set is a set of Asian-style square plates. It was one of the only things I absolutely insisted must be on the wedding registry. He told me he hated them because they were purple and he didn’t want a bunch of girly things clogging up his kitchen.

A dear friend of my family bought us the only set we got. The entire time we were married those plates were shoved onto a high shelf and were only used when we had company.

I asked him if he wanted his plates. He asked which ones, because he would take the purple ones but not the ones he made us use for nearly six years. That was when I realized why I let him treat me that way.

Until recently, I have been at a loss as to explain it. Usually those decisions were meaningless to me and I would let the person who cared more make the decision.

I also made an erroneous assumption that if I gave in on something I didn’t really care about that the other person cared very deeply about that it would go both ways. I figured that things would be equitable and that if I gave in on something that he would give in on something too.

I found out too late that it doesn’t work that way.

Every time I gave in on something, it was either immediately forgotten or it sent the wrong idea that I would give in on everything if enough pressure and bullying was applied. When I would stand up for myself, I would be viciously argued with. Either it would be too difficult for me to continue arguing and I would give in, or it would be so draining that it would take me a long to time recover in order to have another argument like that again.

This lead people to think I could be controlled. Yell at me and make my life miserable enough and I would give up and forget about whatever it was I was asking for or arguing about. These people felt they could bully me and always win because I would stop fighting.

What they didn’t know was that I was keeping score.

I was keeping track of every single time they lied to me or forced me to do something I didn’t want to do and didn’t treat me like a human being.

My ex-husband ignored my requests for a divorce for over a year. I physically moved out of the house and filed for divorce and only came back when he promised to go to therapy with me. But like so many other things in our marriage, he thought that if he ignored this it would go away.

I remembered every early thing I gave into in our marriage. I kept track of every lie he told me and every favor that he forgot the moment it was over.

I kept track of every time he blamed me for the quality of his life. Every time he purposely yelled at me to force me to cry to make himself feel better. Every time he put someone else ahead of me and assumed I wouldn’t make a fuss about it because I would just take it because that is what I do.

I will never be this person again. I am working very hard to be more assertive and to take more of a stand on things because I don’t want to train another person into thinking that I am a doormat.

If you’re involved in some kind of relationship with someone that you constantly steamroll because they always eventually give in, keep in mind that this person is also keeping score. This person remembers every single act of aggression you have placed upon them. And they are waiting.

Beware of Publishers Bearing “Free” Gifts

I buy a lot of programming books. Like, a lot a lot. If you’re a publisher and producing any books on OpenGl, VR, robotics, etc… I am probably giving you money.

One place that I buy a lot of programming books is Packt Publishing. They were one of the first publishers to have books out on the Unreal 4 engine. They have a lot of graphics and game programming books and their prices are fairly reasonable.

Back in May they had a deal on a set of five books on game development. Two were books I was planning to buy anyway for the price of the other five, so I bought the set of books. I noticed at the end of my invoice that they gave me a 10-day free trial of their online library of books.

One of these things is not like the other...

One of these things is not like the other…

I am already a Safari Books Online subscriber and have access to the Packt library, so I just ignored this add on to my purchase.

(Yes, I do go out and buy books I am paying to have access to through Safari. I know I could save a lot of money by not buying a bunch of programming books I probably won’t read, especially when I am paying to have access to them. Don’t judge me.)

A week later I got an email from Packt telling me my trial was almost over and they hoped I was enjoying their books. I was kind of miffed. I never initialized the trial. I have gotten free trial offers for Safari that I have never been able to use because I wasn’t a new member, but they always had a code that you needed to use in order to start the trial. I didn’t know that the trial would start automatically.

I had somewhat forgotten about this until I got an email yesterday telling me that Packt had charged me $12.99. I went to check on what the charge was for and guess what? It was for a monthly subscription to their online library.

So, they signed me up for a service I didn’t want, gave it to me without my permission, and because I was unaware that they were doing this they started charging me for something I never authorized.

I was incredibly annoyed. I feel this is a really sleazy way to do business. I cancelled the subscription immediately and wrote an email to complain. Here is the response I got:
email

They basically tell me that if I don’t want their subscription I have to cancel it. I grok that. Already done it.

There is no acknowledgement that what they did was underhanded or sneaky. Their response basically treats me like I am an idiot who didn’t know what I was doing.

I know that most services like Amazon and Apple Music and whatever offer you a free trial period after which your credit card gets charged. They hope that you forget that you signed up for a free trial period and they can charge you because you forgot to cancel when the trial was over. That’s kind of sneaky, but it’s still something where you are choosing to opt in. You are saying “I want this and I agree to pay money for this if I forget to cancel my subscription.” I have avoided free trials of things for this very reason.

It is not okay to “sell” someone something they didn’t choose and then charge them for something they didn’t opt into.

There is a bit of shady behavior on this site. They recently released a $50 OpenGL book that is so out of date that it does not mention shaders, which have been around since 2004. People have complained and gotten a “We’re sorry, we’ll pass your criticism on to the author.” This book is still available and does nothing to warn the reader about how out of date it is. Good publishers like the Pragmatic Programmers remove out of date books all the time.

Their royalty structure also leaves much to be desired. The 16% royalty is not necessarily bad, but considering how many times a year they sell every book on their site for $5, I find it incomprehensible that anyone working on a book ever outearns their advance.

It’s really too bad. They have a lot of books on rather obscure and esoteric topics that most people don’t cover. They have one of the few books on the OpenGL Shading Language on the market. As far as I know they are the only publisher producing any books on LLVM. I would like to think there are better ways of producing a broad range of interesting content without screwing over both the authors and the customers.

The Value of a Liberal Arts Education

Ten years ago around now, back in 2006, I was beginning to realize I had made a terrible mistake.

I graduated from the University of Wisconsin-Whitewater with a Bachelor’s degree in Journalism with a minor in English composition. I declared this major two years earlier. I attended my first journalism class and the teacher told us to look to our left, then look to our right. He told us that ten years after leaving college only one out of fifty journalism majors were still working in journalism and everyone else had moved on to something else.

I looked around me with a smug expression thinking “Man I feel sorry for the other forty-nine people here who are wasting their time!” Clearly I was not the brightest college student as I should have heard this statement and thought “Run for your life!!”

Here we are, ten years later, and I am one of the forty-nine. I don’t even really know why I chose a journalism major. I knew I wanted to write and I knew I didn’t want to be a high school teacher, so that kind of left journalism and getting a PhD in English and praying that by some miracle I found a tenure position or wrote a best seller. I think the best seller would probably have been the easier goal to achieve.

I kind of wanted to learn a trade, but universities don’t do that. Trades were for people who were too dumb to get into “real” college. I had a Photoshop class with a dude who was forced to retire from his paper because he was so old. He had been a film photographer for forty years so they figured he would be the guy to teach Photoshop. Another student introduced him to the Layers property. There was no hands-on anything. There were plenty of hipsters in skinny jeans gushing about Ayn Rand, however.

I got really good at writing research papers and getting on the bad side of professors who did not like being reminded that they were wasting their lives teaching MacBeth to a bunch of brain dead just barely adults who wanted to drink and didn’t really know what else they were doing with their lives.

Besides the not drinking part, I was also one of those brain dead kids who didn’t know what I was doing with my life. I knew when I was in grade school I was supposed to be learning how to make straight A’s so that when I went to high school I would have a good GPA. I was supposed to do well on the ACT so that I could get into UW-Madison and get an engineering degree, even though I didn’t know what engineers actually did. When that did not pan out, I was supposed to attend another UW system school and get a degree in something, because if I got a degree in something, then there would be a job waiting for me at the end of college.

After I was informed that I had in fact completed all of my course requirements I dutifully went down to the job placement office and asked them what I do now. They said “How are we supposed to know?”

“Um, this is the job placement office. What do you do here?”

“We tell you to put your resume on Monster and connect with the people who you did an internship for, if you did one.”

“I didn’t do an internship. Don’t you have, like, companies that reach out to you to help you place recent graduates with them??”

“Why would you think that?”

I found out later that this stuff existed, but the people I talked to had zero interest in helping me out. I was easily deterred because I didn’t know any better. I also realized I was very screwed.

I didn’t have a demo reel to show prospective employers. I hadn’t done an internship. I wanted to work for NPR, but NPR’s Madison hub was at UW-Madison and they would only hire interns from UW-Madison and if there were jobs after that they would only hire people who had already worked there.

I realized that not only was I missing a lot of requisite skills, I also was missing a network of people to call on to help me find a job.

I had been raised by my dad to believe that personal connections were completely meaningless. If someone was looking to hire, they would put out an ad in the classifieds. They would impartially look at the resumes of everyone that applied and if you had a better GPA than someone else, you would be picked.

This is complete and total bullshit.

I spent a decent chunk of time being incredibly angry that I did not get picked over less qualified people simply because the company already knew this person because they were referred or had interned there. I realized very quickly that if I wanted to get jobs I had to be that person that people knew rather than getting angry about how “unfair” things were.

I also realized these placed wanted people who actually knew how to do technical stuff that I didn’t know how to do. I hadn’t learned any of this stuff in college and I didn’t know how to learn it, so I held my nose and enrolled at a for-profit technical college specializing in audio and video technology.

I spent two years there getting to touch real sound boards and real cameras. A lot of our classes were working through the Adobe Classroom in a Book for things like Illustrator and After Effects. This is technically something I could have done from home, but I would have had to convince someone to buy copies of these programs for me and I would have had to have had the discipline to just sit my ass down and work through the book without the threat of a failing grade hanging over my head.

This place also exposed me to something I couldn’t get at my first college: Connections.

My mentor at this school was the guy that got Slipknot signed to a record label and engineered their first album. Another guy was a guitarist on a Nine Inch Nails album. Yet another worked with Michael Jackson.

This was the school where I also learned how to learn on my own. Halfway through my time there, there was a massive upgrade to both the Adobe suite and Apple’s Final Cut Pro suite. I didn’t know how to work with the new software and so I asked a teacher for help. He sat down and worked with me and showed me where everything moved.

I looked at him and asked, “How do you know this? Who taught this to you?”

He looked at me kind of confused and said, “Well, nobody. I got a copy of this a few days before class started and I taught it to myself because I had to know it to teach you.”

That was the first time it ever occurred to me that one day I was going to be on my own. That technology changes and you can’t just keep throwing out money every year to keep taking classes to learn all the changes. When you’re a professional, you’re responsible for knowing your own stuff.

After that I quit asking as many questions. I tried to find out the answer for myself before I would ask for help. Slowly over time I stopped needing to ask for help altogether because I could find any answer I needed.

I worked really hard to try and connect with these people, but I ran into a wall that would prove insurmountable: I was a woman.

As much as people bitch about how sexist the programming community is, it’s nothing compared to the music industry. There were companies expressly telling the school not to send them female candidates because they would not hire women. The guys in my class kind of treated me like a talking dog and would never take me seriously. They would all hang out at strip clubs after school and it was very clear that I was never going to be welcome into their ranks.

Well, actually, it’s possible I might have, but I think I would have been raped and drugged and generally abused for a job that pays ten bucks an hour. No thanks.

After doubling down on this bad bet, I had to find yet another thing to do, which was how I got into programming. I learned my lessons from these previous experiences in that it was really stupid to try and break into “prestige” jobs where there are fifty qualified people for every job out there. Even in something like programming, where there is supposedly a lot of demand, you have to know people and they have to know you. You can either do that by dropping close to six figures getting a computer science degree from UW-Madison or you can work your ass off networking with people and making public contributions on places like GitHub (or this blog).

Even though I never got paid a dime as a journalist, the training I received for that has proven invaluable. I learned how to distill down a lot of information into its most important parts. I learned how to ask good questions and figure out what the root of an issue was. I learned how to write very clearly, effectively, and concisely. My experience doing radio helped me tackle conference speaking, which gave me the kind of visibility I needed to break into programming.

I learned to hustle and work my ass off. I did not want to be in a position like I was ten years ago when I assumed the world owed me something just because someone gave me shitty life advice.

Life doesn’t owe you anything. People will pay you if you can do something for them that is more valuable than what they are paying you. People are more likely to pick whoever is the first candidate that is good enough and if you’re one of the first people they consider you’re more likely for that person to be you.

In spite of all the pearl clutching about how writing as a skill is going in the crapper, there is a lot of opportunity out there for people who can write effectively, especially in highly technical fields. I think it’s easier to learn the tech after the writing because if you learn the tech first, you’ll find someone to pay you enough money to not bother with learning the writing. That is never the case the other way around.

Even though things were pretty bleak ten years ago, failing spectacularly was a wonderful learning experience. I am happy I failed early so that I could have enough time to process that experience and pivot to something else before it was too late. I see people who never struggled with anything suddenly hit road bumps in their thirties and have no fucking clue what they’re supposed to do. I am proud of the person I have become and the life I have built for myself.

That is the value of a liberal arts education.

Non-Alcoholic Experiments: Iced Tea

I recently wrote a blog post about giving up alcohol. I had an incredibly frustrating conversation with another developer on Twitter:

I love the smell of bullshit in the morning.

I love the smell of bullshit in the morning.

There is a great deal here that is wrong with our conversation here. This person clearly didn’t read my blog post because I mentioned not being able to drink without becoming violently ill. The issue also isn’t about telling people how to drink in moderation, it’s about the fact that alcohol is incredibly pervasive in the programming community. Would love to see this person telling an ethical vegetarian to just eat meat in moderation or avoid places that refuse to accommodate them and see how well that goes.

I have had multiple official conference events and activities that take place at breweries. It isn’t just deciding you’re not going to go hang out at the hotel bar. There are mixers and parties that are officially parts of the conference. I have worked in places where there is an office liquor cabinet.

At conference parties there will be a clear sign explaining all the wine and beer selections and nothing mentioning anything non-alcoholic. Sometimes you get lucky and they will have Coke, but lots of times there is just water.

Later this developer basically told me that you can’t please everyone. I am not talking about “pleasing everyone.” The fact that it’s assumed that everyone drinks and things are geared around that is quite troubling. There are people who have religious objections, health issues, or are, god forbid, pregnant, that don’t allow them to drink and casually talking about it like it’s a choice, like deciding you won’t eat mushrooms, is incredibly insulting. Also suggesting that if you don’t drink that you should just avoid conferences altogether is yet another example of how we as a community are phasing people out and excluding them. Yay diversity.

Twitter2

Another specious argument was that all non-alcoholic options are more unhealthy than “good” alcoholic options. In spite this person’s claim to the contrary, scotch is not healthy. I agree that juice and soda are full of sugar and no one would claim that they are health food, but neither is scotch. What do you think alcohol is? It’s sugar! Making a claim that having a soda or a glass of cranberry juice at a conference is a less healthy choice than having scotch is bullshit. They’re both unhealthy, but I can drink the juice and I can’t drink the scotch. A glass of juice is not metabolized through my liver. I can drive after drinking a glass of juice. I can take an ibuprofen the next day without jeopardizing my liver. Also, no one is healthy 24/7. We occasionally indulge in something and it would be great to be able to work with people to have less damaging indulgences rather than just saying to go drink water. Telling me what I can and can’t have because you have personally deemed it to be unhealthy is arrogant and presumptuous.

We are programmers. We brag about how great we are at solving problems. We talk big about being disruptive and trying to change the world. I call bullshit on this community that we somehow are helpless in the face of trying to figure out ways to be inclusive to people who do not drink alcohol. There are a lot of ways this problem can be dealt with and just shrugging and saying you can’t please everyone, stay home is not the right response.

Trying to Figure out Replacements

One of the big things that I miss about drinking is not the actual drinking part, but the stuff around it. I miss picking out wine and different flavors of vodka and mixing drinks. I miss using my cocktail glasses. I miss having a process of making things.

IMG_4523This last part has somewhat been replaced by learning how to cook, but I still miss being able to make stuff for myself.

A number of people suggested I replace my wine with tea. I was resistant to this switch because I already have tea keyed in my brain to work. When I get up in the morning, I go through a ritual where I brew my tea in my cast iron tea pot and pick out my mug and sit down to start work for the day. I don’t want to drink more tea at night when I have been drinking tea all day because it will not let my brain relax and realize that work is over.

I did, however, forget about iced tea. My dad was from Tennessee and the only tea he ever drank was iced tea. He did unsweetened Lipton iced tea, but I have realized this is a possible solution to some of the issues I have had with finding a replacement for alcohol:

  • There are a lot of different teas on the market
  • I can mix and match teas to make different flavor combinations
  • I can add in different flavorings like lemon juice
  • I can use a special glass

IMG_4522In order to avoid polluting my mind by confusing it about the teapot, I use a different cast iron teapot for iced tea. When I used to work out of the house I bought a second tea pot for work and kept one at home. I stopped using the work teapot because it’s capacity was a little too large and the tea would go cold before I could drink all of it. It brews about four cups of tea.

A while ago I invested in a tea water machine. One of my bosses had one at a previous job and it was always great to be able to just get up and brew tea any time I feel like it. My house’s electric system is wired badly and I can’t heat water for tea if I am using the toaster oven or running the dishwasher. This heater resolves that issue and has resulted in me drinking more tea because it removes a step and makes it easier to do it.

Since I am watering down the tea with ice, I want it to be strong. I have been using three tablespoons of tea. I want to have my tea be fruity, but I also want it to have some of the health benefits of tea. I brew this for at least seven minutes to try and extract as much flavor from the tea as possible before throwing it out. I usually reuse tea that I drink hot, but when I am making iced tea or chai I use the tea once because the second brewing is too weak.

I know it’s terrible, but I have a number of herbal teas from Teavana. They are very strong and if you blend them with a green tea, they add a lot of flavor. I have been using one part herbal tea to two parts green tea. This gives a distinct fruit flavor while retaining the health benefits of the green tea.

I want this to be something of an indulgence without being too unhealthy. I added an ounce of lemon juice and a quarter of a cup of sugar. I check and that is about 190 calories of sugar, which is about fifty calories per cup of iced tea, which gets watered down significantly. For comparison, an ounce of scotch is 64 calories and a glass of red wine is 125 calories.

Trying to do Better

I consider this experiment a success, but I know this doesn’t translate as a solution to the larger problem of having better non-alcoholic options in the programming community.

Cheers!

Cheers!

One of the reasons I am trying to do these experiments is to eventually figure out bette solutions that can be implemented within the confines of the system. I know that if I go to a bar with people I can order non-alcoholic beverages, but I would like to figure out a solution for catered events where there is generally wine and beer but not any other creative non-alcoholic options.

Most people don’t do something unless it’s easy. Right now it’s easy to drink alcohol because it’s the default. It easier to just drink wine and beer because they’re the most prominent options and everyone else is doing it. I think if it were easier to make non-alcoholic choices more people would do them and it would make more people feel welcome at these events.

Minuet in G

A few weeks ago I read this article about the right way to practice. The gist of the article is that we as human beings are able to do extraordinary things that we weren’t able to do a hundred years ago. The world record for a marathon a hundred years ago barely qualifies for a competitive marathon now. It isn’t that we have somehow evolved tremendously over the last hundred years. It’s that we’ve gotten better at learning and doing productive practicing.

Part of this resonates with me because of my experience with playing the piano as a kid. I was naturally good at it and no one ever made me practice or showed me a way to practice more effectively.

I progressed to a certain point and would play songs for fun and I just never got any better. I went to college and started taking music theory classes and I got overwhelmed by a bunch of stuff and shut down and just stopped playing.

I was still very interested in music and sound, but I abandoned music as a hobby. I moved out of my parent’s place about seven years ago and never brought my piano with me.

This topic interests me because I am seeing similar patterns of behavior with myself and programming. I am not going to say I feel I had the same aptitude for programming as I had for piano. I always felt incredibly stupid and out of my depth, which ironically is why I got good at it because I worked on it all the time.

I did targeted practice with programming where I would write a difficult piece of code over and over again until somehow my brain would process what it did and I would have an understanding of what the code does.

Unfortunately, there is not a lot of material out there for people who are not beginners. There was a great blog post about why programming is hard. When you’re a beginner, there is a lot of hand holding. There is a multitude of learn to code sites, including the one I used to learn to code, where you get walked through targeted practice that makes you learn better.

Once you get past learning the basics, however, you’re kind of tossed off a cliff to fend for yourself. My observation of the programming community has been that most people plug along until they reach a level of competency that allows them to be employed. We as a community assume that if a person has been programming professionally for 10 years then they must be better than someone who has been programming for three, but that is not necessarily the case. We tend to reach a level of proficiency and we don’t get any better unless we continue to push ourselves to improve.

But how do we do that? How is that measured?

It’s easy to see how you have improved with the piano. If you can tackle and master a difficult piece, then your results speak for themselves. If you aren’t getting any better in spite of hours of practice, then you’re doing something wrong. It isn’t that you have naturally hit your level of expertise, it’s that your not practicing effectively.

I also think that we tend to write off that we, as adults, are capable of learning extraordinary things. This other article talks about how impossible it is to take up chess at a later age because young children have vastly more potential to learn than adults do because their brains are flexible.

My reaction: So what?

I remember being a kid. I had no disciple. If I was good at something I didn’t work really hard at it and if I was bad at something I just avoided it altogether. I sucked at sports and running and I never thought that I could do anything to change that by working at it.

I basically squandered all of my childlike potential to be a super genius because I was stupid and didn’t do stuff. I refuse to believe that I am not capable of pushing myself now to be better than I was a year ago. I would rather believe in the first article about the effect of productive practice than be told that if I don’t start something by the time I am five that I am screwed and will never be great at anything.

So What Does This Have to Do with Minuet in G?

I am at my parent’s place today for Mother’s Day. One of my goals this year is to get my piano moved back to my house.

When you can't find sheet music...

When you can’t find sheet music…

I was curious about trying out this targeted practice thing with something I hadn’t done in a while, which was playing the piano. I was curious about why I never got any better. What did I do wrong besides not practice enough?

I picked Minuet in G because I believe it was written as a learning piece by Bach and I knew it was a relatively short and simple piece of music. I figured it was something I could sit down and get close to mastering in a few hours.

After hacking a solution to try and actually get the music in front of me, I sat down to practice for about an hour.

The first ten minutes of shaking off the rust were kind of demoralizing, but after I had warmed up a bit things got better.

The biggest thing I noticed while I was playing was that my fingers liked to overcomplicate things a lot. In the first half of the piece, the left hand does very little. It basically holds notes for long periods of time and doesn’t need to move around to hit the notes. I noticed that I had a strong urge to reposition my hand constantly even though there was no point in doing so. I would make a lot of mistakes because my hand was positioned in a place where it could not reach the notes.

Then, in the second half of the piece, where the left hand has more to do, my hand could not plan out where it needed to be. It would get very confused and keep hitting wrong notes. I think my brain felt like the only fingers that it had to work with were the thumb and first finger. Using the last two fingers on the hand always feels quite strange to me.

I also noticed that when I was working on the easier parts my brain would get distracted by being bored and I would stop paying attention and then I would make mistakes. This fits into what I remember as a kid. I liked fast pieces with a lot of movement on both hands because I would screw up easier stuff where I didn’t need to do as much because I would get distracted.

After I realized these issues, I was able to fix them. I would practice with the left hand by itself a lot and plan out how to avoid moving my hand as much as possible. I would get distracted and move it and I would force myself to only think about what measure I was currently playing.

By doing these things, I was able to improve much more quickly than I would have if I had just sat down and tried to play over and over again until I didn’t make a mistake.

How Does This Apply to Programming?

I don’t know yet.

I know there has to be some way for me to apply to programming what I did to the piano. I think it’s different in that with piano you know if you’re doing poorly immediately because you get the feedback of wrong notes. It is more difficult to know when you are programming badly because at a certain point you stop getting weird compiler warnings and stuff builds, but it’s not necessarily the best or fastest you can do.

I am going to continue to drive people nuts with my blog posts about the learning process because I find it fascinating and I don’t want to resign myself to the fact that I will never be a great programmer because I didn’t start when I was five. I think I can train myself like chess grandmasters and Olympic athletes can do. I don’t know how yet, but I have faith that it’s possible.