Soul Searching

January, 2014

I began my programming career in late December 2013. It started something out of necessity. Sometime around October I suffered from a nervous collapse that made it impossible for me to focus on my school work. I had dropped out. I was lying to my husband about dropping out of school because I was gambling on my ability to find a job around the time I was supposed to graduate. I was very lucky and something came through.

My only hope for my first job was that I would find something in iOS. In the Madison area, that was a pretty stiff order. Madison is a lot of enterprise Java, government, and health care.

I managed to find a job at a start-up where I was the oldest person by a decade. I was partially hired because my bosses were not old enough to drink and didn’t know any better about hiring people who have actual experience.

By January, I knew this wasn’t working. I didn’t get along with my programming partner and I knew I was going to be let go. I was okay with that. I knew it was a bad fit.

I did some soul searching at that point. I knew it was bad to lose your first job after two months and I did have some concerns with my long-term ability to be hired. I had a few choices. I could kind of fake it and find another, similar job where I would be equally uncomfortable, but possibly be able to fake it better. Or, I could acknowledge that I was in the weeds and I didn’t know what I was doing.

The people around me didn’t know what they were doing either, but I had enough training and visceral awareness to know that my programming sucked. I knew it could be better and I knew it would never be better if I continued to pretend like I knew what I was doing.

I sat down and started thinking about what I wanted from my career. There was only one thing I absolutely knew I wanted. I wanted to be Brad Larson.

Brad, for those who have not heard my enthusiastic ramblings about him, is the creator of GPUImage. Brad taught the Advanced iOS class at MATC the first year it was offered. The classes were, and are still, available to watch on iTunesU. While I was a student I heard a lot of stories about him. I heard about how Apple engineers told him that something he wanted to do with his Molecules app was physically impossible to do on the current hardware. He figured out a way around the limitation and he made it happen. He was the guy who did impossible things.

I didn’t know if it was possible or how long it would take, but I wanted that. I wanted to understand the language well enough that I could figure out a way around the limitations. I wanted to be a great programmer.

I reached out to Brad and told him that I wanted to do what he does and asked him for advice about how to get started. He was very kind and wrote a nice email back. A few weeks later, a contract opportunity became available to work with him on an extension of his Molecules app. I knew I was on my way out at my current job, so I reached out to him. I told him that I didn’t know anything but that I wanted to. I really wanted to make sure I didn’t misrepresent myself because I wanted to learn and I couldn’t do that if I pretended to know things I didn’t.

After this contract job, I spent time working on a book with Chris Adamson and doing a lot of conference talks. I was trying to get my name out there so that I could find a job. I talked about GPU programming and Metal because they were new things. I didn’t really explain them as well as they should be explained because I didn’t have enough experience with them to fully understand them. I gambled on talking about difficult and obscure technology to try and differentiate myself from all the other new programmers out there.

To my shock and surprise, Brad reached out to me about working for him as my speaking obligations were winding down. I did it. I accomplished the short term goal I made at the beginning of the year to find a programming job with a great programmer so that I could get better and be a great programmer too.

January 2015

Let’s jump ahead a year.

At the beginning of this year I initiated a divorce with my husband. Things had been difficult for a long time. My goal for a few years had been to find stable employment that would allow me to end the marriage.

I do not want to badmouth my ex-husband. Our divorce was amicable. He was a friend before we were married and he continues to be a friend. We had a lot of trouble and I honestly wish him no ill will.

I am bringing this up simply to establish that the last six months have been very difficult.

I have never taken care of myself.

I lived with my parents until I was 27 years old. I was essentially a perpetual student because I didn’t really understand how to find a job or support myself. I moved from my parent’s house to my husband’s house. The first few years I was working I had my husband manage our money because I was earning minimum wage and I did not want to know what my weekly paycheck was because I was afraid if I knew how little it was, it would be easier for me to mentally justify calling in sick when I didn’t feel like going. I was unemployed from 2012 for most of the rest of our marriage. I have never budgeted my money. I have never paid my own bills. I never lived on my own. I don’t think I filed a tax return until I got married because I earned no income.

The last six months have been difficult. It’s been hard trying to learn things that most people knew when they were 16. It’s been hard being away from my pugs so much every day. My house is still a mess because I am simply too tired and demoralized to clean it. I don’t think I’ve put my laundry away since February. My ex-husband was actually so appalled by my inability to care for myself that he cleaned my kitchen one day when he was here picking up some of this things.

The last six months have been physically and emotionally exhausting. I have had bouts of depression that I have spoken about on this blog before. It’s been rough.

Because things have been rough, I have been letting a lot of things go. One of those things has been my focus on my long-term goal of being a great programmer.

I have barely been getting by.

I have had weeks where I have barely gotten anything done. I have felt a great deal of self-hatred and fear about losing my job and independence.

At a certain point it became easy to rest on my credentials. I wrote a book. I was invited by Saul Mora to interview people for NSBrief. I had lots of people who knew who I was. I was given some cache for being a great developer because I had credentials. I didn’t want to think about how little I actually knew because it was too fucking demoralizing to deal with. So I pretended. I even convinced myself that I was as good as I needed to be. I got careless. I stopped trying because it was just too hard to deal with.

Now

I am not doing this any more.

I am tired of what I have been doing for the last year.

The reason I told my long, rambling story at the beginning of this post is because I feel like I am back there now. I feel like I have two choices about how I can proceed from here.

I can either decide that I learned enough and keep hiding behind my credentials. I can learn fast enough to keep up with things, but I won’t ever become the developer I wanted to be. I will have to keep pretending like I know more than I do.

I don’t want to do this anymore.

I want to be very clear about a few things.

Chris wrote most of the book. My name is on the book and I wrote three chapters from the book. I wrote the Debugging, Testing, and Photos chapters. Two of those chapters didn’t really require me to add much to the code base. When I had to tackle the Photos chapter I had to fly out to CocoaConf Boston to work directly with Chris on that chapter because I was not familiar enough with the code base to write the chapter by myself. I needed help with the Core Image code.

Chris worked on the book for two years before I was brought on. I think my presence played an important role in getting the book done. I contributed to the book. But, I feel that I have received more credit for the book than I am due. I haven’t read the book all the way through. I am not comfortable with most of the concepts in that book.

I am tired of waiting around for someone to figure out that cut to the front of the line. I am going to be proactive and admit that I don’t really know that much. I have never written an app of my own. I have focused on some very obscure and esoteric low level programming. For a developer who has only been working for a year and a half, I am fairly advanced. However, I have a long way to go.

I have realized that I have been squandering my opportunity of working with Brad by being too proud and afraid to ask him for help. I have been ignoring things that I don’t understand. Yesterday I asked Brad about what provisioning was. He could have explained it in a sentence. Instead, he took an hour to show me Instruments and how it could be used to analyze one of his projects. I felt like my world went from 2D to 3D. I realized that there was a whole dimension of being a programmer that I used to be aware of and wanted to explore that I had abandoned because I was tired and demoralized and didn’t want acknowledge how little I know. I felt exhilarated and deeply, deeply ashamed.

I do not want to be afraid anymore.

I am working on my own personal application. I am going to do my best to write about that process on this blog. I will be talking about concepts that are probably covered in the book that has my name on it. I will talk about things that most people who have been programming for five years already understand.

I want to go back to the spirit this blog was created in. I created it to document my progress as a student to a professional. True to my roots, I am a perpetual student.

I am going to ask more questions. I am going to delve deeper and try to understand better. I made time for what was important for the first half of this year. Now I need to get back on the track I decided a year and a half ago. I need to stop worrying so much about my exposure or my reputation and worry more about my skills. If my reputation suffers because I want to shore up my weak points, then I probably deserve it. It’s painful to admit that you don’t measure up, but if you won’t accept reality then you can’t change it.

I hope that Brad will continue to be patient with my questions and continue to go the extra mile to expose me to things I wouldn’t have thought of otherwise. His commitment to excellence pushes me to be better and even though it is painful sometimes, it is something I asked for that is rare in this day and age.

The Trick to Forgetting the Big Picture is to Look at Everything Close-Up

Any sufficiently advanced technology is indistinguishable from magic.
– Arthur C. Clarke

Back when I was a programming student, my teacher Eric told me that over the years he has learned and forgotten a dozen programming languages.

At the time, it was inconceivable to me that anyone could learn and forget so much. Two years later, I am shocked to discover that he was right.

Two years ago when I really doubled down on learning iOS programming, I worked on it eighty hours a week. I was working through the Big Nerd Ranch iOS book. They had a series of about five chapters putting together a table view that would display a detail view populated by a singleton.

Every day I would wake up and code this over and over again. The first time I coded the examples, they made no sense. I typed a bunch of words that didn’t set off the compiler warnings, ran them, and magic happened. The second time was not much better. But by the third for fourth time, I began to realize, “Oh, I am creating this object because later when I load this detail view, I will be showing all the stuff I am keeping in this object. This is where it comes from.”

At the time Storyboards Interface Builder wasn’t particularly good for things. If you listen to many people online, their assessment of this situation has not changed. I used .xib files for each of my view and my custom cells and did all of my transitions programmatically. It took me weeks to wrap my head around all of these moving parts to figure out how they worked together. It wasn’t enough for me to just have something work, I really wanted to understand it.

Over the last year and a half, I haven’t really worked with user interfaces much. I had a contract job where there was no UI in Interface Builder because it was a legacy project from 2008. Then I spent a bunch of time running around like a chicken with my head cut off trying to figure out shaders, which are a tiny subset of a program. Then for the last eight months I have been working on porting another legacy project to Swift. We are just now getting to the point where I am working with interfaces again. It’s been over a year since I dealt with interfaces.

I am working on my first application. It is going to be rather limited to start off with, but I have plans to add additional functionality over time, so whenever I finally get it out, no, that is not the final product, more will come later, so don’t give me crap about it.

I am working with HealthKit. In HealthKit, there is a HKHealthStore that you are only supposed to have one instance of in your entire application.

I have been trying to figure out where to make that instance. I know that it needs to be accessible through the entire application and that you’re not supposed to make a bunch of instances of the same thing. I also know you have to pass it along to a lot of different places. I know many people don’t like singletons and I don’t want to create one of those, even though I am pretty sure HKHealthStore is a singleton. I was trying to figure out how all of the controllers can know about something while minimizing global state.

I talked to Brad about this a bit and he was talking about how it should be created in the root view controller for the application because that is responsible for the views that are controlled by it. As he was talking about all this stuff, it dawned on me that he was talking about the same things I was bashing my head against two years ago.

It wasn’t like I had spent a week mucking around with this stuff. I spent eighty hours a week for MONTHS trying to piece together how all this crap worked. I can’t believe that after spending all that time and pain on these concepts that they were buried in some far corner of my brain.

It also made me wonder about all the people who are learning programming now who use storyboards because, honestly, they are easier to get things done quickly. If you just push a couple of buttons and things happen like magic, how do you get a full understanding of what is actually going on? It makes me wonder about what else I don’t know about because I came into programming relatively recently. I know that my knowledge of memory management is bad because it was never something I had to deal with. I came in around iOS5/iOS6, so we had ARC and GCD and a lot of other things that abstract out a lot of the lower level programming stuff from you. Will understanding how root view controllers own detail views go the same way? I know talking to a guy at my first job he didn’t seem to understand this concept and it drove me crazy. I guess I have gotten to the point where I don’t understand it either.

It frightens me about how vast the knowledge is of everything that happens within the iOS ecosystem and how incredibly difficult it is to remember everything because really delving into the low level stuff means that you don’t know how to get things done quickly in the abstracted level. Sticking to the abstracted level limits your ability to do anything really customizable because you don’t see how the pieces fit together.

I am hoping that over the course of the next few years I can figure out a balance that works for me. I hope I can remember enough about how things work that I can deal with the abstracted layer without fundamentally forgetting everything.

My Defense of Swift

**Note: I am using an example in my blog of a post written by a developer in our community. I have noticed many posts with the same thoughts expressed in them and I am in no way attacking this particular person, who I respect a great deal. I want to preface this with saying I am in no way attacking the author of this piece or trying to single him out, so I hope he will not be offended that I am offering a counterpoint to his post.**

This morning I had someone send me a link to this article and asked me what I thought about it.

Honestly? I am kind of sick of everyone crapping on Swift.

I am tired of everyone saying the language is broken and that you can’t write real applications with it because it’s half baked and unusable.

I don’t mean to keep waving my credentials around, but I am working on a project where we are rewriting our software in Swift. We are not writing the usual weather app/something that pulls data from an API. This is some heavy duty crap. We are writing this on the Mac. We are using a serial port to connect to outside hardware. This is a legacy project that is on its third rewrite that has been around for ten years. So far we have not encountered anything that we can’t do in Swift that is being done in the original software.

For the last month or so I have been bashing my head against a project where I am implementing libXML in our project (which I am going to write a blog post about shortly.) Taking a really under documented C library where the sample code is written in Pascal and trying to get it to work in Swift has been a demoralizing massive pain in the ass. I have had to deal with all kinds of horrors that I didn’t know existed or were abstracted away so that I would usually never have had to deal with them again.

However, doing those things has made me a better developer. Just because I came into Cocoa programming after ARC doesn’t mean that I have no reason to think about it or know how it works.

I started learning programming three years ago. Prior to that, I didn’t know how to write a “for” loop without looking it up online. I was one of those noobs that people hate on Stack Overflow who ask how to do incredibly simple and stupid things. Learning programming was hard. It forced me to fundamentally change the way I think about the world. It was also hard because I had a lot of people who had been doing it longer than I had who were crapping on me because I didn’t know who the Gang of Four were or why we do the MVC pattern, or even what MVC means.

There are a lot of things that we think are easy and intuitive that aren’t either but we think they are because they are familiar. My boss told me about working with a woman who had a PhD but had never used a computer before. Our structure of navigating through folders and files is “intuitive” to us because many of us have been doing this for bordering on 30 years.

If you have been doing imperative programming since you were 12, then yeah, some of this stuff is going to feel complicated and unfamiliar. If you don’t have a painful, visceral memory of the pain it took to learn programming the first time, you might think that all of this stuff is complicated and broken and wrong.

I, however, do remember how hard learning programming was. I find learning functional programming and figuring out Swift to be no more difficult than it was learning Objective-C. It’s different. It isn’t broken. Yes, there are some things that will be refined over the next few years, but Objective-C wasn’t born completed either. It evolved over a period of years as Swift will evolve.

I got into programming because I wanted to learn how to solve complex problems. I am excited about Swift because it affords an opportunity to solve a complex problem in a different way than we did before.

I am worried that people’s opinions of Swift are being influenced by a few people’s bad experiences with it. When I have tried to advocate for Swift because of the work I am doing, I get my experiences brushed off because of my boss. I am told that of course Brad Larson can use Swift to control robots. He’s a genius. Us normal people can’t use it because it’s too complicated.

Again, there is a difference between broken, complicated, and unfamiliar. If you go into Swift thinking it should be just like Objective-C, you are going to be disappointed. If you go into it knowing that it is unfamiliar and that you have to fundamentally approach things a different way, then you might be okay with it. If programming was easy, then everyone would be doing it. Just because something is different than the way that you are used to doing something doesn’t mean that it is wrong.

I hope that people who are discouraged will eventually change their mindset about how to approach Swift or some other hybrid language with functional features. Life gets boring if you just do the same thing over and over again in the same way. Programming is a young discipline and we haven’t yet reached the point where we absolutely know that the way we are doing things is best. It will continue to grow and evolve and change. And that’s a good thing.

Zen and the Art of Analog Synthesizer Maintenance

2014: The Year of Magical Thinking

You can take a picture of something you see
In the future where will I be?
You can climb a ladder up to the sun
Or write a song nobody has sung
Or do something that’s never been done

Last week I was in Atlanta for CocoaConf Atlanta. That conference was the cap on one of the craziest years I have ever had.

Exactly a year ago I had dropped out of school because I was having a nervous breakdown. I knew I needed to find a programming job but I had no idea where or how I would do so. I was completely broken and I had no hope that anything would get any better. The only thing that got me through that period of my life was the faith that something would happen.

I spent a lot of my time in 2013 sowing seeds, hoping one or two of them would take root. I attended several conferences and met a lot of people. Two of the people I met were Jonathan Penn and Chris Adamson. Jonathan mentioned he was writing a book and wanted to know if I would tech review it. Being a tech reviewer is an unpaid task, but I like and respect Jonathan, as evidenced from this blog post.

The editor for Jonathan’s book is Rebecca Gulick, who also happens to be the editor of my book with Chris. When he was looking for a coauthor and he mentioned me to Rebecca, she already knew who I was.

Before I was approached about writing the book, I reached out to Brad Larson about learning OpenGL. I knew I wanted to be a graphics programmer, but that it takes a long time to learn, especially for someone like me who didn’t have any programming experience until two years earlier. My reaching out to him resulted in me having the chance to work with him on a contract project for Digital World Biology. Even though we were working on this project, I hadn’t met Brad in person.

I happened to meet Brad in person a week after I signed the contract to work on the book with Chris. I didn’t know it at the time, but the book I was working on used to be the textbook used for the iOS programming class at MATC. That definitely made an impression.

Six months ago, I had a couple of conferences that I knew I would be speaking at. I wound up doing twice as many as I thought I would. My first conference talk was less than a year ago. This year I spoke at ten conferences total.

Between writing a book, traveling all over the United States, and getting a job with one of the best programmers in the world working on robots, my head is spinning. There are so many things I thought I might get to do a few years down the road. I just wanted a job to get some experience so that maybe one day in like five years I would be able to work with someone of Brad’s caliber. I hoped that maybe I would be able to work on a book in three years.

I looked back at the goals I set for myself at the beginning of the year. No, I didn’t wind up starting a podcast or buying my MIDI wind controller (however that is on the horizon). I set out six long-term goals that I wanted to do in the next 3-5 years. I have knocked half of those off in 2014.

Depression

Oh brother I can’t, I can’t get through
I’ve been trying hard to reach you, cause I don’t know what to do
Oh brother I can’t believe it’s true
I’m so scared about the future and I wanna talk to you
Oh I wanna talk to you

I am going to be honest. I had absolutely no idea how to proceed from here. Part of being alive is to strive to go further and do better. Once you get to where you want to be, what do you do? I always feel a bit of a disappointment when I finish my cross stitching projects because I keep feeling like I will feel a sense of accomplishment, but it’s always a letdown. I enjoy the process of making the thing more than the joy of accomplishing them.

Part of my excitement about these long term projects was the anticipation of all the neat things I would get to do between then and now. I was really looking forward to all the neat stuff I would get to do and all the time I would get to spend working on my craft.

None of that happened.

Things happened so fast that I haven’t had a chance to enjoy anything I have been doing. I haven’t had a chance to stabilize the ground under my feet. I haven’t had a chance to really dig deep into something than interests me because I am running around like a chicken with my head cut off rushing to the next thing.

I have honestly been depressed. I feel like I shouldn’t be depressed and that I am a terrible and ungrateful human being because I got everything I ever wanted. Not only did I get everything I ever wanted, I got it way faster than anyone else. I have it made and I have no idea how to get up each day and deal with my life. Plus I feel like I can’t talk about it because I know that there is absolutely no reason for me to be unhappy.

I had a lot of conference talks lined up for 2015 and I was thinking about doing a lot more stuff because I feel like I worked my ass off sowing these seeds. I hoped that one or two would take root but twenty did. Last year I had nothing but my stubbornness and refusal to quit and now I have the situation of having too much. It feels wasteful to me to squander opportunities I would have killed for a year ago.

But I have to.

It has been a tremendously difficult decision, but I am not doing any conference talks for at least six months. I do not plan to attend any conferences during that time either.

I love this community. I have made so many friends in so many places. I spent a lot of my life feeling like a freak who never fit in anywhere. Being welcomed into this community and treated with respect has meant more to me than I can ever express. One reason it took me so long to make this decision is because this community means so much to me and I want to make sure other people like myself have a chance to join and be welcomed as well. The Klein family has changed my life and I can never express to them what their kindness has meant to me.

I feel like my life is moving too fast and I need to take a step back. I need to focus on getting my feet back under me. I need to focus on doing my job well. I need to focus on sharpening my tools. I need to find something that gives me back the joy and meaning I had in my life back when I was struggling to break through.

The Zen of Sound

Are you lost or incomplete?
Do you feel like a puzzle, you can’t find your missing piece?
Tell me how do you feel?
Well, I feel like they’re talking in a language I don’t speak
And they’re talking it to me

Last year I felt like I had to spread a wide net to catch one opportunity. I spread myself very thin doing a lot of different things to try and get myself enough exposure to find a job. I am pulling back on a lot of these things.

Looking back at my long-term goals, the half that were not fulfilled all had to do with audio programming. I love sound. I wanted to be a sound designer before I became a programmer. Last year I wanted to write a synthesizer app as a portfolio project, but I had too much noise in my life that I couldn’t focus the way I needed to for this project.

Now that I can pull back on a lot of the things that are taking up my time, I can focus my free time on projects that personally interest me without worrying if they will get me a job.

I spoke to Brad when I began to feel overwhelmed about what I should focus on for the next year or so. He advised me to think of something that doesn’t exist and to try and make it happen. He talked to me about taking an impossible task and breaking it down into small, discreet parts that can each be accomplished individually.

Audio affords me a lot of opportunities to explore things that interest me. I became interested in electronics after I began working with physical hardware at my job. I also became interested in math after I started working with GLSL. Additionally, Apple introduced not only Swift, but AVAudioEngine. There have been audio programmers on Twitter who do not think you can do audio programming in Swift because Swift is not built on C.

When I tried to tackle this last year, I had no idea what I was getting into. I also placed a lot of chips on me being able to pull this thing off that caused me a tremendous amount of anxiety.

I am not going to make that mistake again.

I know it isn’t necessary, but I want to build a physical synthesizer before I tackle a software one. I want to get a feel for how all of the pieces fit together.

I also want to spend more time making music with my tools. You can’t really create a piece of software for a group of people if you don’t understand how they are going to use it. I used to play around with this stuff all the time years ago, but it’s been too painful to work with until recently.

I am not going to disappear. I am going to catalog my journey here on my blog. I hope that I can figure out how to do some things that will be helpful to the community at large. I plan to take everything I am learning over this time and present it at NSScotland, which I am still going to speak at. I could not let down Alan Francis again.

I hope that anyone reading this can understand and respect my decision. I hope that I am not the only person who has felt this way and that reading about my depression can help someone else. I am in this career for the long haul. 2014 was a sprint. The journey is a marathon. I can’t keep going the way I am because I won’t make it to the end. I am going to miss all of the amazing people I have met over the last year, but I need to take care of myself and focus.

Thank you everyone for an unbelievable 2014. I am looking forward to coming out of my self-imposed isolation a happier and healthier person. God bless and keep all of you. Don’t have too much fun without me.

Impostor Syndrome

Was reading this article about being a beginning female programmer today and I began to feel incredibly depressed. This is something I could have easily written a year ago. I still write quite a lot about how incredibly difficult it is to break into the tech industry.

One reason I don’t necessarily talk about a lot of sexism in tech is because, back when I was starting out, I didn’t know if I wasn’t finding opportunity because I was a woman or because I had no experience. I had an acquaintance go on Twitter and ask why, whenever he posted a job opportunity, no women ever applied for it. I asked him if he would be willing to hire a woman with less than three years of professional experience. His response was a horrified, “Oh god, no!”

Many people enter the tech industry because we keep hearing the desperate plea of companies for more tech workers, but once many of us get here, we realize there is a giant ravine between us and the people who claim they want to hire us.

I recently wrote a blog post about the incredible dearth of opportunity from the various places that claim they can find no workers. I run a CocoaHeads group combined with an NSCoder group for student entirely to try to help them navigate their way to their first jobs. I am doing this because I am not too far removed from the period of my life where I had no fucking clue how I was going to break into tech.

I recently attended CocoaConf in Boston. I went there last year. When I went last year, I was asked by several people what I was going to do when I got home. I told them I honestly had no clue. Everything I had worked for that year was to make it to that conference to take the Core Audio workshop and maybe network with some people. But you know what, that conference was a catalyst for my career.

One of the speakers there, Josh Smith, got me invited to speak at CocoaConf in Chicago back in March. He also was willing to help me try and submit a book pitch to a publisher. I made friends with Chris Adamson there, so when he was looking for a coauthor for his book, he reached out to me.

I can be a sanctimonious prig and go on here and talk about how I worked my ass off trying to learn programming and how I earned/deserve all of my current success, but that isn’t entirely true. I had parents with enough money to help me pay for going to Boston. I got my husband to send me to the first CocoaConf I went to even though that one didn’t immediately pay off.

I have tried very hard to make opportunities happen for myself and I have done my best to exhaust each and every one that I have gotten. I have had a few opportunities that I have massively fucked up. I have tried my best to learn from those and hope that another one will come along that I won’t massively fuck up.

I see people who are given opportunities that squander them because they don’t really understand what they are being given. I scream in my head at these people. They make my brain hurt. They make me feel like crying. Not only are they wasting their opportunity, they are also training the person who gave them that opportunity to stop doing that because people flake out on them. It really sucks.

I wish I could just say that I leaned in and that I made the most of my opportunities and feel proud of how far I have come in the last year, but I have to acknowledge the uncomfortable reality that I got opportunities other people haven’t and I have simply followed through with them where other people have not. It’s a nice story to say I worked hard, but it isn’t right to tell other people that if they do the same thing that stuff will work out for them, because I am honestly shocked that it has worked out for me.

So, thank you to all the people who gave me a chance and lent me a hand. I hope that you will continue to do so for other people in the future and I pray that someday I will be able to do the same as well.

Janie’s Insanity Log: Saturday, November 8, 2014

Time: 7:45 am
Tea: Adagio 4 Seasons: Autumn
Current Music: Soundtrack to Revolutionary Girl Utena

Hello. Over the last month or so people ask me what I am going to do this weekend and I invariably say that I am trying to finish my book. I always get the same response: “Wait, you’re still working on that thing??”

Yes. I am still working on that thing.

I am tired of working on that thing. I want it out of my life and into the hands of people who will use it for its intended purpose of chaos and destruction.

Problem is that when I try to make myself sit down and write, I want to be anywhere other than in front of my computer. I start crawling the walls and try to gnaw my own arm off to escape.

So, I am going to the super counterintuitive thing of writing my thoughts down to avoid having to write my thoughts down. I am going to periodically write my mental state here over the next 48 hours or so so that I can share my psychological degradation with the rest of the world. Yay!

This will either be entertaining or it will be a disturbing, incoherent rambling mess. Or, if I am lucky, it will be both! Let’s see what happens.

Time: 7:55 am

I have realized that my chapter goals may have been overly ambitious. I have chosen three frameworks that could each justify their own book. This is a poor decision. I have removed one framework altogether and I am now figuring out how to adequately write the rest of the chapter.

I made the somewhat impulsive decision yesterday to go to CoocaConf Boston to spend some time with Chris working on the book. I started a job a few months ago where I can actually talk to another programmer about the issues I am having and it has increased my productivity tremendously.

One reason this has been taking so long is that life has gotten in the way. It’s been hard to say I am going to sit in front of my computer and write about something I am still figuring out when it has been nice and sunny outside and I would rather be doing other things. Having another person there to bounce ideas off of and who knows you are supposed to be working because they are in the same boat is an invaluable thing. We have been limping along this way out of necessity, but I really need to work with Chris in person, so I am sacrificing some of my royalties in order to make sure the project gets done the way I want it to be done.

Time: 8:00 am

Realized I am spending time I should not chatting on Twitter about what a cool idea this post is and all the awesome crap I am going to do with it. Gently directing my attention back to the task I have to do.

Time: 8:05 am

Reconnoitering the task at hand. I am trying to figure out the best way to proceed here. I have an idea about what I want to talk about and what project I want to complete by the end of the chapter. I know that some amount of the chapter is going to be structural stuff and the rest will be what Chris likes to call, “clicky-draggy” stuff of explaining how to set things up and show actual code.

I don’t want to work on coding the project by myself because I want to work with the person who has done a lot of the work on the code, which is why I am going to Boston. However, I don’t think I will get very much done if I don’t at least begin to explain some of the “clicky-draggy” stuff.

I found a project very similar to the one I want to explain by the end of the chapter. I am tentatively planning to throw code in the chapter that I will tag to remove when I replace it with the actual code I am creating for the project. This will give me a sense of how long this chapter will be. I will also have to account for screen shots that will be taken later when I get the project working.

I feel bad that I am having trouble doing a remote project by myself. I worked alone out of my house for a year and half while learning programming and I could self motivate for that. To be fair, I never completed a project that was released to the world when working by myself. Also, working with another person on code they primarily wrote is an entirely different skill set than just doing your own thing.

I am an inherently social person. I like talking to people about their code. I am not one of those solitary programmers who lives in the basement staring at a screen. If I don’t have anyone to talk to about things that interest me, I kind of wilt and get depressed. I had hoped to work more directly with Chris on the book, but we both had a lot of curve balls thrown at us and it is understandable why it wasn’t really possible to spend an hour a day chatting on Skype about the book. I am hoping that working on the project together in person will accelerate the process of getting the book done.

Time: 8:15 am

Oh! Student Council elevator song from Utena is playing!

Touga: If it cannot break out of its shell, the chick will die without ever being born.
Miki: We are the chick-
Juri: The world is our egg.
Nanami: If we don’t crack the world’s shell, we will die without ever truly being born.
Saionji: Smash the world’s shell.
All: FOR THE REVOLUTION OF THE WORLD!

Sounds about right. Probably shouldn’t be listening to mind fuck anime soundtracks. What else do I have? Neon Genesis Evangelion, Puella Magi Madoka Magica, and Attack on Titan. This isn’t a promising development…

Time: 8:25 am
On second pot of tea. Already driving Chris insane with my pestering. Will leave the poor guy alone. It must be nice to be an introvert.

Time: 8:30 am

Holy crap! I actually started writing something for the chapter!

Time: 8:45 am

Went looking for sandals. Floor is gritty and covered with various pug debris. Resisting urge to procrastinate by trying to clean my office. I am looking forward to deep cleaning the living crap out of this room when I get done with this thing.

Time: 9:00 am
Current Music: Soundtrack to Puella Magi Madoka Magica

Succumbed to the temptation to clean when I went to refill my tea and saw lots of dirty dishes in the sink with a dishwasher full of clean dishes. Feel slightly better that the kitchen isn’t a complete mess. I should probably eat at some point in the future…

Time: 9:30 am
Current Music: Soundtrack to Attack on Titan

I figured out something I was confused about and didn’t understand about the framework, so I actually got some stuff written. Now I need to determine if this is something Chris explains earlier in the book.

Also ate the other half of my leftover crispy chicken sandwich and french fries from yesterday. I am sad that this is probably going to be the healthiest food I eat this weekend. I am keeping a food log of all the horrible things I am going to put in my body to punish myself for not getting this done sooner.

Time: 9:45 am

Got sidetracked by an argument with a friend of mine online about whether the TV show Scorpion is offensive and stereotypical to smart people. My friend is on the autism spectrum and is thrilled to see people like herself on TV. I am annoyed that it is assumed that if you are a smart person you must be completely socially inept. Wait, I am supposed to be writing now, aren’t I? *grumble*

(But seriously, if one piece of your dialog in the pilot is the main character telling the young white guy with glasses in the back of the room that he is a programmer and the guy asking, gee, how did you know, and the main guy saying lucky guess, guess what?? THAT IS A FUCKING OFFENSIVE STEREOTYPE!!!)

Time: 10:05 am

Having an existential thought about whether or not what I am writing is correct and if it isn’t, would anyone ever know? Wondering how many tech books I have read where the author was completely talking out of their ass and doesn’t know what they are doing only to figure out like years later that something they wrote was completely wrong. I guess it doesn’t matter because anything written about Apple tech is inherently ephemeral.

Time: 10:20 am

Got slightly derailed by a flare-up of my involuntary muscle twitching. Beginning to wonder if it might be an allergic reaction of some kind. This only happens when I am at home. When I travel to conferences or I am at work I rarely have any issues. I hope I am not allergic to my pugs. That would suck to the extreme.

Time: 10:45 am

The Husband returned from his outings. He brought me hacker food. He brought pizza, a case of Mountain Dew made with real sugar, and french silk pie. My digestive system is about ready to strike and walk off the job in protest. This will be fun.

Time: 11:45 am
Current Music: Soundtrack to The Rocky Horror Picture Show

Crap. I got pulled into conversations with people on Twitter. Chris seems to have gotten over my annoying him this morning and we are talking about Revolutionary Girl Utena. Also talking to people I need to connect with in Boston while I am there.

I am making progress on the book. I have written quite a lot so far. I have mentally broken thing up and I am putting the pieces together. I had to spend some time doing a little research, but I am able to find the answers I need fairly quickly and not falling down too many rabbit holes. Also not stressing myself out too badly or crawling the walls trying to escape. Plus, it’s almost noon and I haven’t thought about how long it is until I can open a bottle of wine, so yay to that.

Sadly, getting to the part of the book I am going to have to hack somewhat because it involves code I haven’t written yet. I want to write some of the glue code about the process even though I haven’t done it yet. Sigh.

Time: 12:00 pm
Tea: Adagio Raspberry Black Tea

On my third pot of caffeinated tea. I might want to consider switching to something herbal in a little while or else panic attacks will happen. I wonder if I switched to Mountain Dew if that would still result in panic attacks because caffeine is caffeine. Should run experiments on the pugs.

Time: 12:30 pm

As I am writing the chapter, I am realizing I might be approaching the project incorrectly by trying to describe doing it before creating it. I am taking a bunch of notes in the chapter to try to come up with a list of requirements for the project so I can start working on it when I am in town with Chris. Also need to look over the code better to figure out how to integrate this into what we have so far.

Also, figuring out that I am hungry. Grabbed a random pizza from the freezer and preheating the oven. Also took a can of Mountain Dew and threw it in the freezer to get it cold quickly. I am mentioning it so that when I inevitably forget to take it out of the freezer and it explodes there will be foreshadowing of that event.

Time: 1:30 pm

Managed to collaborate on a plan of action with Chris so we can make the most of our limited time in the same physical plane of existence.

I am creating a set of software requirements for my sample code. I am also looking over all of the code we have thus far to strategize about the best way to approach the code and the organization. I might just stub out some space in the book where I describe what is going to happen in each place.

Also made pizza and switched from tea to Mountain Dew (no, I didn’t forget the can in the freezer and we had no explosions.). Haven’t gotten super hyper yet. Give it some time.

Time: 2:15 pm

I am approaching the end of what I can do on this portion of things by myself. I am getting an idea about how I need to approach my project, which is what I will do for the remainder of my day. I am planning to tackle another part of the project tomorrow. Hopefully I will be able to put together a software requirements package that will allow me to just sit down and code my project when I can collaborate with Chris and we can get this stupid thing done and shipped.

Time: 2:30 pm

Bah. Tired. Time for first bath. Normally I would read tech books in the bathtub, but I am trying to avoid contaminating my focus with any of my other hobbies. Will probably just read historical fiction book about Henry II and Eleanor of Aquitaine. Pondering whether I want wine or not…

Time: 4:00 pm

Took my bath. Got really sleepy. Was really hoping that I could take a nap. No such luck. I really miss taking naps. I haven’t been able to have one in a while because when I go to lie down the involuntary twitching comes back and I can’t sleep.

Today has been a fairly productive day. I am trying to spend what energy I have left outlining the things I need to figure out to implement the first part of this project.

Going to navigate away from my desk. My arm and leg are jerking so much that I am afraid of falling off of my ball. I need to go to bed or somewhere that I am not going to fall over and hurt myself.

Tentatively going to call it a day unofficially. Going to get up tomorrow and continue on my odyssey of writing. See you then!

Your Pipeline is Broken

Yesterday I had lunch with a friend of mine who is smart and talented enough to have gotten an internship at Apple and is planning to go out there for a permanent position at the end of the school year.

We were catching up about all the stuff we have been doing over the last few months and I can’t remember how this topic came up, but she mentioned to me that a company in town was desperately anxious to hire every mobile developer our school produced.

She is not the first person to tell me this. I am very puzzled and confused by this information because it does not correlate with my own experiences.

I started in the mobile development program two years ago. I was at school as a mobile development student for three semesters. Each semester we have an IT Job Fair where local employers supposedly send representatives to connect with students looking for jobs or internship.

I noticed that every semester I went to this job fair it got progressively worse and worse. At the first job fair people would actually talk to you and answer questions. The second one people would avoid eye contact with you and were incredibly unhelpful.

I went to the last one purely out of spite. I simply wanted to see just how bad it had gotten over the last year. I was not disappointed.

Each booth has a sign on it saying what they are looking for. I found one company looking for a mobile developer. Every other company that was looking for developers was looking for someone who knew VB.Net. VB.Net was eliminated from our curriculum around the time I went back to school full time. No one there had ever even taken a class in it. There was also a shocking amount of people looking for COBOL programmers even though I have no idea how long ago that language was eliminated from the curriculum.

The only people even looking for Java, which I had assumed was a pretty safe language to learn, were recruiters. Yes, there were recruiters at the job fair. I guess they really don’t want to miss an opportunity to capture someone before they know better than to hand over their soul, I mean, resume.

So, back to this company that is supposedly desperate to hire people. They have a booth at the job fair. Back when I was just starting out I talked to people there about what I should study if I want to work for their company. They handed out data sheets and seemed happy to talk to me. At this last one there were two women at the booth gossiping. I was feeling like a troll, so I went over to talk to them. They ignored me. Having nothing better to do and being curious about what was going to happen, I stood there and watched them while they tried to pretend I wasn’t there.

When it became obvious that I wasn’t going to leave, one of them sighed and snapped at me, “What do you want?”

I told her I was looking for a job. She sighed again and rolled her eyes at her friend. She said, “Yeah, we don’t hire people. If you want to work here, go over there and talk to Robert Half and leave us alone because we are busy.” She then went back to ignoring me and picking up her conversation with her friend.

Aw, isn't that cute. She wants a job. Doesn't she know she has to fill out form BZ/ST/486/C and defeat the Minotaur to get a phone screen?

Aw, isn’t that cute. She wants a job. Doesn’t she know she has to fill out form BZ/ST/486/C and defeat the Minotaur to get a phone screen?

Yeah, I am not talking to Robert Half. Robert Half is evil and incompetent. Actually, I could replace their name with any number of other recruiters in Madison and it would still be true.

I have spoken to recruiters (back when I didn’t know any better) and I have been told that no one in town wants entry level developers. No one wants to hire someone who just got done with school. I was told that no jobs ever came up, but if in the unlikely chance they ever did, I needed to sign an exclusivity contract with one of the recruiters to even have a shot at it. I was speaking to about five recruiters as part of my unemployment obligations back before I decided to go back to school full time and each recruiter was only interested in getting dirt on what the other recruiters were talking to me about.

I stopped looking for jobs on job sites because every job posted is a fake job created by a recruiter to trick someone into sending them a resume so they can fulfill some quota. I have seen the same job posted over and over again, but it someone miraculously never gets filled.

I have tried applying for a job directly at this company. I have applied for jobs that I fit perfectly and I have never made it past the HR screening criteria to even receive an email written by an actual human being.

I found it was easier to get tech conference talks accepted, get a book deal, and find a job at a weird esoteric small company that builds fluid printing robots that is run by one of the best programmers in the world than it was to even get to first base with this company in town that is supposedly desperate for developers.

I thought that maybe things had changed since last year. Things in tech change very rapidly and it was possible that this company had gotten their heads out of their asses and actually fixed their problems.

I asked a current student if he went, and he verified my tale that no one there was actively seeking out mobile developers. He saw lots of people looking for COBOL, but no iOS or Android.

I am actively telling people attending school not to bother with this company because it is too hard to perforate the layers of bureaucracy protecting it from ever actually hiring a competent person for work they supposedly need done.

People, your pipeline is broken. I believe that it is possible that the executives talking to our school actually want to hire some of our students, but they are setting up impossible obstacles to prevent us from ever actually getting there. Sending representatives from your company to a job fair to basically tell anyone who wants to work for you to fuck off is not going to convince anyone that they really want to work for your company.

I guess I should thank these guys for making it so hard for me to get in. When I went back to school in 2010 I wanted to work there and have a nice, stable, mundane existence. I think if I had done that I would be bored to tears. Things worked out fine for me. I guess maybe they were doing something right by trying to keep people like me out. I will see what I can do to help the other people like me avoid being trapped by the endless recruiter bureaucracy.

My plea to the current students studying programming: Don’t fall into this trap! This leads to misery and despair. Build a portfolio. Reach out to experts in your field. Go to conferences. Do things that don’t pay you a lot of money immediately but build your skills and establish your credibility. Push yourself to do things that are hard and be comfortable with feeling that you are stupid. Be willing to learn better ways to do things. For the love of God, do not give your resume to a recruiter! They will hound you to the grave with four month contracts in Boise, Idaho programming in a language that died ten years ago. Choose your own adventure.

Mono No Aware

Over the last year we in the iOS community have had a mass exodus of our best people back to the Mothership. There was a period for a while on Twitter where like once a day I would see someone tweet “I have an announcement to make. I just made a really tough decision, but I have accepted a job at Apple.” My favorite response to this phenomenon that I saw was from Jeff LaMarche, who tweeted: “Last one to go work for Apple turn the lights off, okay?”

One day a few months ago I go on Twitter and see a tweet from Jonathan Penn. “I have an announcement to make.” Oh no. “I just made a really tough decision…” Oh please, dear god, don’t let this be what I think it is. “…but I have accepted a job at Apple.” NOOOOOOOOOO!!!!

The Breakpoint Formerly Known as Jonathan Penn

The Breakpoint Formerly Known as Jonathan Penn

I honestly can’t tell you why losing Jonathan Penn to Apple affected me so profoundly. I met Jonathan back at my first CocoaConf in Chicago 2013. It wasn’t like I was as close to him as I eventually got to Chris Adamson. We weren’t best pals or anything. I don’t think I had a closer relationship to him than anyone else did and I actually think I probably wasn’t as close to him as other people were. And yet.

I think Jonathan has a biological mutation that causes him to secrete nitrous oxide because whenever you are around him, you can’t help but feel happy. I don’t think I have a picture of Jonathan without a big goofy grin on his face. Watching him crack up during the CocoaConf game show was a joy to experience. Additionally, Jonathan is wicked smart. I would go to his talks and feel like the village idiot because I would be blown away by his rapid fire delivery of concepts that sailed right over my head.

I guess I got used to the idea that he was always going to be here. I figured when I go to CocoaConf there are certain things that are always there. There will always be an amazing keynote by Daniel Steinberg. There will always be a Breakpoints Jam concert. I guess I thought there would always be a Jonathan Penn.

Back when I had my life changing trip to Boston, I started thinking about what kind of a person I want to be. I wanted to be Jonathan Penn. His passion and his energy were absolutely amazing. He is such a warm and giving person. He adds so much to the iOS development community. I wanted to be like Jonathan Penn.

I am being slammed this year with a lot of instances of impermanence. We got a new programming language from Apple. Many prominent actors and comedians who I grew up with passed away. I feel change happening around me everywhere I turn. The phrase I have as the title of this post, mono no aware is a Japanese phrase that talks about the ephemeral nature of existence. Everything we do has meaning because nothing lasts forever. Life is precious because we have a limited amount of it. Each and every moment we have will never come again and no matter how lousy it might seem at the time, it is special because it is transitory.

Everything in life is transitory. As a member of the generation that came during the internet boom and the Great Recession, that is painfully obvious. People don’t work for the same company for forty years anyone or have the same job their entire career. This is doubly so for computer programming. I have only been programming for the last two years and I am already gearing up to switch from imperative programming to functional programming. Before I left for my conference on iOS programming I got a bunch of help from my boss setting up iHaskell notebook to learn Haskell. I can already feel the ground shifting under me and I am trying to adapt before it is too late or too difficult.

Jonathan going to Apple felt very much like he had died. We can’t talk to him about what he is doing anymore. He is too busy to waste a bunch of time on Twitter. I don’t reliably have an event ten times a year where I can go and absorb all of the joy he radiates. He’s still here, but he is now sharing that joy with other people.

I guess I was also very upset when Jonathan left because I didn’t know that the last time I saw him might literally be the last time I saw him. Had I known that he would be moving on to another stage of his life I would have savored the time with him more. We always feel regret when it is too late to do anything about it.

Jonathan leaving makes me think about the fact that I am going to leave someday. Right now we have this amazing community in iOS, but this is ephemeral. Something else that is going to be really cool is going to come along. All the top people are going to get tired of what we are doing and are going to move on to the next thing.

Yuri Nakamura is my spirit animal

Yuri Nakamura is my spirit animal

I worry about my ability to let this thing go. I don’t want to be the person who graduates from high school and keeps hanging around because they can’t move on. There is an anime series, ”Angel Beats!” about a group of teenagers who had terrible lives and died young who spend time in an afterlife that looks very much like a normal Japanese high school. The point of this afterlife is to get the people in this afterlife to resolve the unresolved issues they brought with them in their previous lives and to help them move on, which in this series is called “graduating.” (My twitter avatar is of me dressed as one of the main characters from Angel Beats, not Sailor Moon.)

Sometimes it is hard to move on. You have a snapshot in your brain of this fixed point in time where things were really great or terrible. In Star Trek: Deep Space Nine, Captain Sisco is trying to explain linear time to the wormhole aliens. The aliens point out to him that he has frozen his linear existence. His life was trapped in amber at the exact moment when he lost his wife. He can’t figure out how to live his life after this tragedy happened.

Life doesn’t stop just because you want it to or because you have been so incredibly damaged that you can’t figure out how to cope with your new paradigm.

Imagine my surprise and delight to actually have a chance to rectify all of this, Jonathan made a cameo at CocoaConf Las Vegas this weekend. Jonathan’s parents live right outside of Vegas and he brought his whole family to CocoaConf to watch him rock out at the Breakpoint Jam.

Thanks to Solomon Klein for making me look thin in this picture with Jonathan.

Thanks to Solomon Klein for making me look thin in this picture with Jonathan.

Having the chance to sit in the audience one last time with Jonathan being a Breakpoint was a fantastic gift. James Dempsey asked me how the concert was and I told him it was the best one. He thought I was pandering to him, but I wasn’t. Jonathan brings this energy to the performances and being able to sit there and enjoy this performance knowing that it would be the last one was truly meaningful to me. The crowd was a smaller, more intimate crowd. The concert wasn’t a super rousing concert, but it felt more like hanging out with your friends goofing around, which was really nice to have.

Jonathan, if you are reading this, I hope you are not creeped out by my writing a whole post about you. I hope I didn’t bother you by hugging you a few times. I wish you the best of luck at Apple. I will try to stop talking about you like you are dead, but I make no promises.

Culmination of a Dream

Two years ago, I didn’t know Chris Adamson existed. I was taking my first semester of the iOS development degree at Madison College when I first found out about him. I was taking the Objective-C class mostly because I needed to have a full load in order to continue to collect unemployment benefits. I was planning to follow the Java track, get a job for a health insurance company, and lead a normal mundane existence. That all changed when I heard two words that would change the course of my life: Core Audio.

In my previous life, I went to school for audio engineering. I learned Pro Tools and Logic. One of my teachers was talking about the extreme guys who programmed those pieces of software and they fascinated me. I had no idea how anyone would program a digital audio workstation, so I kind of forgot about it.

When my teacher Eric Knapp mentioned Core Audio, he said it was one of the hardest things to learn in the Apple development environment. It was a toss-up between Core Audio and OpenGL. Me being the good little masochist that I am, I decided I would learn both of them. (Having tried my hand at both of them, I am awarding Core Audio with the trophy for being harder to learn.)

Trying to read "Learning Core Audio" while cruising and enjoying the ocean.

Trying to read “Learning Core Audio” while cruising and enjoying the ocean.

I bought Chris’s book on Core Audio and made the incredibly stupid decision to take it on vacation with me for beach reading. After seeing the unfamiliar and deprecated “NSPool” object, I freaked out and realized I had to work a lot harder in order to learn enough to understand what the hell is going on.

In February 2013 Eric told me that Chris would be speaking at a conference in Chicago. The conference was in two weeks. I was a poor, unemployed college student, so I had to scrape together enough money to be able to go down and attend this conference so that I could meet Chris.

I saw him around the conference, but he was a big important author and I didn’t really know what to say, so I didn’t approach him. On the last day of the conference, Chris did a talk on audio on iOS. I sat in one of the front rows and peppered him with a lot of impertinent questions about audio programming on non-iOS platforms. Having been on the receiving end of questions like this in my own talks, I commend Chris for his patience and restraint at not shoving my Ravenclaw scarf down my throat.

Kyubey and I grokking AV Foundation video.

Kyubey and I grokking AV Foundation video.

We wound up talking after his talk and having lunch together. He was one of the first people I have encountered that I felt completely in synch talking to. I wore a Doctor Who shirt trying to bait someone into talking to me about it. Chris saw it and commented that he would ask about it, but everyone and their brother was into Doctor Who. I pulled out my phone and showed him a picture of my pug, Delia Derbyshire. When I said her name, his face lit up and he got really excited. He was the first person I met who knew who Delia was without me having to explain it. Eric asked who Delia was and we were talking over one another explaining who she was. I was so happy. I was grateful to him for hanging out with me and talking about my stupid geeky audio stuff.

Several months later I got to attend CocoaConf Boston and spend a whole day with Chris doing Core Audio. That day was one of the best days of my life. I was having a lot of problems at that point in time and I felt like my life was falling apart. Spending the summer working through the Core Audio book knowing I would get to do this workshop in the fall gave me focus when I needed something to get me through my life.

Chris giving his penultimate Core Audio workshop at CocoaConf Boston 2013.

Chris giving his penultimate Core Audio workshop at CocoaConf Boston 2013.

Chris and I were able to work our way through our initial awkwardness due to both of us having some social anxiety issues to become friends. I stopped worrying that I was bothering him by commenting on his tweets and I began to feel comfortable asking him for advice.

Earlier this year I was again trying to figure out what I was doing with my life. I had a contract job that was ending in a few weeks and I had to figure out what I wanted to do. I applied for a QA position at a company in town whose employees I knew and liked a lot. Something in my gut told me that I didn’t want to do this job. I knew I needed a steady paycheck, but I just had a gut feeling that I wasn’t supposed to take this job.

I went to Chris and explained my situation. He patiently read through my long rambling email and responded back, “I should tell you to take the stable job with the decent paycheck and the nice coworkers, but I have an ulterior motive. I need a coauthor for my book and I would need you to start after your contract is over.” I immediately wrote back to the company and told them I was no longer available.

Like all recovering journalism and English majors, I always wanted to be a writer. I wanted to write books and stories. I have absolutely no idea why I wanted to be a writer. I don’t remember if I actually liked writing or I just liked the idea of being a writer. I sort of gave up on the idea of being a writer in high school when I realized everything I wrote was crap. I realized if I wanted to be a writer I needed to have some actual experiences. I had to get out of my comfort zone and change my perspective of the world. Sometime in college I just sort of decided not to think about writing for a decade to give myself a chance to actually find something to write about.

The Boston Breakpoints

The Boston Breakpoints

I began writing again last year around the same time I met Chris. I had another developer recommend starting a blog and I have written at least one blog post a month since I started my blog. I know a lot of people do podcasts because they are “easier”, but I have always found that writing really helps me get my thoughts out of my head.

Back in March at CocoaConf Daniel Steinberg had a session called “Book Chat.” It was for anyone who had written or wanted to write a book. The only other person there besides Daniel and I was Chris. Many people over the last year have tried to talk me out of writing a book. I heard the usual arguments that books take a long time and they don’t generate any money. Daniel asked me what I wanted to get out of a book. I told him I wanted to be able to type my name into Amazon and have a result pop up. I also wanted to take the cover of my book, frame it, and put it on my wall. That was all.

Today marks the culmination of a dream for me. I have a book I wrote being published. We are on a public beta and there is still more work for me to do on the book. But it is real. It is happening.

OMG! I got a shout-out in Chris's "Stupid Video Tricks" talk in Chicago!

OMG! I got a shout-out in Chris’s “Stupid Video Tricks” talk in Chicago!

I am thinking about where I was a year ago. I had weathered several failures and I felt broken. I had no idea what the following year would bring. I had the single-minded determination that I had to finish the Core Audio book and go to Boston. I didn’t know how or why, but I knew that it was a turning point in my life and I threw everything I had at that.

Going to Boston changed my life. It changed my perspective of who I could be. I was pitched by several companies there that I didn’t imagine would even be interested in me. None of those leads worked out because I was just too messed up to take advantage of them, but they made me realize what kind of person I could be if I wanted to. Josh Smith had me talk to Dave Klein about speaking in Chicago this year. I didn’t think I could be a speaker until that happened. I applied for another talk that happened a few weeks before CocoaConf Chicago, which wound up being my first tech talk, but that would never have happened without Josh Smith.

Mad props to Mark D for throwing Greek and trombone playing at us at 8:00 in the morning.

Mad props to Mark D for throwing Greek and trombone playing at us at 8:00 in the morning.

I love this community. I love that I came here from a really crappy background and that I found people who were willing to accept me for who I am. I am happy that I haven’t been discarded because I am damaged. My damage could even be considered an asset because I bring uniqueness and experience with it.

All of these people keep talking about the importance of teaching young girls to code, like somehow my generation of women is too old to learn new things and we are a lost cause. Meeting someone like Chris whose experience was so like my own and knowing that I could have another chance at life gave me hope, which gave me the tenacity to endure all of my various disappointments. He gave me strength to accept all the broken, dirty pieces of myself and accept that they are part of who I am. He woke me up and made me think about all the parts of myself that I had numbed because they were too painful to deal with.

I went from a world of “No” to a world where anything is possible with enough work and tenacity. These last two years has been a miracle.

“iOS 8 SDK Development” is my first book. I hope there will be many more where this one came from. I treasure this book because it represents something I didn’t think I would ever have. It is also a project I got to work on with a great friend whose presence has enriched my life.

I wish I could go back two years and tell the earlier me that I would meet these people who would change my life. But I can’t. Spoilers, sweetie.

Approaching the Speakers at the Tech Conference Zoo

I am traveling to CocoaConf Las Vegas tomorrow. This is my second CocoaConf of the “season.” The first CocoaConf of the season was in Columbus, OH.

Since I am a member of Eric Knapp’s gang of iOS disciples, I was able to car pool with some of the other members of that group. On the way home, one guy in the car asked me if I had spoken to a certain person at the conference. I had not. I didn’t know this person.

I was told that this guy really wanted to talk to me but he was intimidated by me because I was speaking at the conference.

This made me feel really bad.

"No, I never thought about working at Apple. Why are you asking?"

“No, I never thought about working at Apple. Why are you asking?”

I am in this weird transitory state at the moment. When I first started going to conferences I really wanted to meet all the speakers, so I would aggressively and strategically make sure I was sitting next to them for meals. I made a lot of great friends and found a lot of advocates for myself this way. I would not be where I am today if I had not done that.

Now that I am a speaker, I don’t really know how to act. I don’t want to aggressively sit next to all my fellow “speakers” and make people feel bad because somehow we are an exclusive group of people because we really aren’t.

I feel bad about CocoaConf Columbus because I basically spent the entire trip hanging out with Chris Adamson. He’s my friend and coauthor, but I felt like I really should have made an effort to meet other people. It was kind of hard for me because I had no opening line to start a conversation with a stranger. That was one great thing about talking to speakers at programming conferences. There was a way to start a conversation. You could read their bio and ask about their job. You could ask them about their talk. I used to tweet people during their talks and come up to them later and explain who I was.

I am asking anyone who wants to meet me at a programming conference to please just come up and say hi to me. Tweet at me so when you introduce yourself I have an idea about who you are. Believe it or not, I am a somewhat socially awkward person and it is a lot easier for me to talk to people if I have some idea about what to talk about.

Unless a person is really putting off “stay the heck away from me” vibes, most of us are really approachable. We like to geek out about technology. That’s why we are here talking about it. If you want to geek out with us, just pull up a chair and say hi.

Hope to see a few people do this in Las Vegas. Looking forward to meeting you.