The Importance of Style

I don’t remember a time in my life where I did not own a computer. I was three when my parents went to American TV in Madison, WI to buy an Apple IIe for my mother. My mom was pregnant with my brother and wanted a computer to do work on that would not bother the carpel tunnel syndrome she developed while pregnant. Oh the irony of that belief.

I was in fifth grade an I was creating a book report for a class. I discovered our word processing software allowed you to do some neat formatting on your document, including putting a border on it.

This was an amazing discovery to me. I was excited that I found this new functionality in a program on my own and I ran to go tell my dad about it.

My dad chastised me very harshly. He told me I was wasting my time trying to jazz up my book report and that I must not feel very confident in my work if I felt the need to use a gimmick like a border on my book report to distract the teacher from my research.

I remember at the time feeling very hurt and wounded by this statement. I had discovered something cool and I wanted to share it with someone and I was smacked down for figuring out that my report didn’t have to be boring.

Fast forward twenty years or so.

I am in the process of working on several tech talks that I will be presenting next month. One of my talks is on debugging. I know, debugging sounds like the most boring thing in the world. But it doesn’t have to be.

I spent a decent amount of time creating a custom template for my talk. Since it is about bugs, I thought a nice bug theme would liven up my slides somewhat. I am very proud of the work I did customizing my slides for this talk.

I think that there is an unfortunate attitude in tech that talks don’t have to be interesting. I have lost count of the number of droning, boring talks I have heard at various tech conferences. It’s like some of the speakers are thinking, “Yes! I have a captive audience! They have to listen to everything I say!! Bwahahaha!!!”

I have found that the less work people do to make their talks interesting and relevant the less I care. If the person telling me about this stuff doesn’t find it interesting and exciting, then why should I?

People buy Apple products because the engineers try very hard to make objects that people love to look at, hold, and touch. A great deal of care is taken to make using an Apple device a joy. Their design is one of the major reasons they are as successful as they are today. No one should make the argument that making something look and feel nice is a waste of time. It isn’t. It’s a sign of dedication to the craft.

I think my father was wrong. I don’t think people style things in order to distract the audience from its lack of quality. I think if you care passionately about something you will put a great deal of effort into trying to make sure it is interesting and exciting for other people too. I think putting work into making your stuff looks nice is an indicator that you care about your work and that other people should care about it too.

The Nature of Privilege

Yesterday my husband and I went to a Renaissance Faire. We had a pretty nice day. We both brought ale mugs with us to go around and have various beverages. My husband didn’t partake in anything alcoholic because he had to drive.

As we were leaving the faire there was a security checkpoint to verify that no one was taking alcohol out of the faire. I was asked to show my mug, which I did. My husband was asked to stop and show his mug. He refused to stop. He kept going. The security guard thought my husband didn’t hear him so he started following him to try and stop him. My husband began running to avoid the security guard, putting me in a really awkward position of trying to defuse things with the guard to avoid having him call the police or doing something to try to detain us.

I was very angry about this afterward. My husband realized I was mad and he told me he was sorry, but he didn’t like people trying to tell him what to do and that the guy tried to grab his arm to keep him from leaving.

I am going to share with you a huge, mind blowing secret. Are you ready for it??

I don’t like being told what to do either.

In what universe does my husband think that somehow every other member of the human race has no problem being told what to do and that somehow he is special? Oh wait, that’s right. He lives a world of aggressive white male privilege.

(I want to clarify here that I am not saying every single white male fits into this mold. I am not making a broad generalization about every single man. Please do not yell at me on Twitter for being sexist.)

My husband lives in a world where he has never had to do anything he didn’t want to do.

My husband is an aggressive driver. He has regularly put me in danger while he engaged in road rage with another driver. Once we were on a street where the road narrowed to one lane. Every driver before him would let one car into the lane and everyone took turns merging. My husband decided not to follow this pattern and another car nearly collided with us on my side of the car. Afterward my husband asked me if I was mad at that guy for nearly hurting me. I wasn’t mad at that guy. I was mad at my husband for putting me in physical danger just to be aggressive and let other people know he was not going to do anything he doesn’t want to do.

He has never spent a moment in his life worrying that someone might shoot him for being aggressive on the road. He has never been troubled when he refuses to follow the same unwritten rules that everyone else abides by. He is a 6’2, relatively young, white, upper middle class male. He has never had another person use their size to physically intimidate him into doing something that he didn’t want to do.

The fact that anyone could have this entitled, privileged attitude absolutely blows my mind. I can’t imaging living in that world.

This is my world:

There is a lobbying group in town that assaults people on the street trying to coerce them into “donating” money. Every time I see one of these groups on the street my heart sinks because I always see one guy scanning the sidewalk until he sees me. He makes a beeline for me because I am small, female, and look like someone who can be overpowered into giving money to this person to make him go away and leave me alone.

I have had teachers back me into corners to better be able to look down on me while they tried to intimidate me by threatening my grades. When I was in eighth grade I had one teacher who let a bunch of students write a skit to be performed on a class trip where I had to pretend to be naked and throw myself at a popular guy who was going to cruelly blow me off and humiliate me. When I told the teacher I didn’t feel like that was appropriate, he asked me if I had a tube top or something I could wear so it would only look like I was naked in front of all of my peers rather than actually being naked. My parents had to take me to an out of state wedding when the trip was scheduled to prevent this from happening.

When I worked in retail I routinely had men try to coerce me into giving them refunds that I could not give because of various policy and legal reasons. A few guys tried aggressively flirting with me to make me give them a refund. Several guys threatened to speak to my manager to get me fired if I didn’t make them happy. The worst imposition I had in retail was when an old man came up to me, handed me two containers of sexual lubricant, and asked me which one I liked better and asked me which would be better for masturbation.

Getting out of retail didn’t mean the end of this kind of humiliation. At one of my last real jobs I had a team lead lock me in a room and yell at me for an hour because I spoke to a manager about the fact that he told me to work over a hundred hours off the clock without telling anyone and to bill them to the company while I was out of the country.

How do you explain to someone who has never been physically intimidated how upsetting it can be? At my last job at a start-up, I observed my CEO and CTO aggressively approaching women to get them to try our app. I told them that women don’t really like being approached by tall, scary, aggressive guys. They didn’t get it. They couldn’t see how uncomfortable they were making these women and they refused to try to think of a better way to approach women to use our app.

My husband has trouble understanding why it is so difficult for me to find a normal job. Programmers are in short supply! Why can’t you just walk into a company and get a job? You must be incompetent.

It isn’t about that. The same attitude that my husband has when he runs past the security guard is the attitude that my teacher, manager, and lobbyist have. They feel like they have the right to force me to do something I can’t or don’t want to do, and their privilege to abuse me is indirectly imposing on my husband’s privilege to have a wife who can go to work and earn a decent salary without fear of being exploited, abused, or being inappropriately fired and having my professional reputation annihilated. Everything we do affects everyone else. His privilege is indirectly hurting him through me, but he can’t see it that way because it is hurting him rather than helping him.

Privilege is the ability to feel you have the absolute right to never feel imposed upon by anyone. Privilege is being able to piss someone off because you can and to have absolutely no worries that this person will come after you and cause you physical violence or endanger your livelihood.

I know that I am a relatively privileged person myself. I got to take a few years off from work to go back to school. I get to do a lot of things that most people don’t by nature of being a white, educated, middle class female. I don’t want to give up my privilege, but I never forget that I only get to do what I do because a lot of other people do not. I appreciate my privilege and I try not to abuse it or assume that others haven’t done what I did because I “did it all on my own”. A lot of other people and societal forces converged to let me do what I do and I never forget that.

The security guard at the faire didn’t try to detain us or call the police. However, I had to deal with an angry, aggressive man that I didn’t want to or have to because my husband chose to force me to do the thing he didn’t want to do. He’s right, he lives in a world where he doesn’t have to do anything he doesn’t want to do without fear of being shot, attacked, or harassed. I just wish that he cared enough about me to not force me into a situation where I have to be afraid of being attacked or hurt in his place. To be fair, he also probably wishes I cared enough about him to get off my ass and get a normal job like everyone else does instead of delving into esoteric technology and writing. Hey, maybe I am the one who is privileged.

Code of Conduct

So today there has been some controversy on Twitter about 360|iDev’s Code of Conduct.

I honestly do not understand what the controversy is here. They are clearly stating that they want a diverse conference where everyone will be respected.

Here is my perspective on things.

I am a female programmer. I got into programming later in life. I originally studied video and audio production. I was young and foolish and thought I could succeed purely through sheer force of will. I would say I was about 30 when I really began to learn enough programming to make a go of it. At the last job I had I was not only the only woman, I was also the oldest person by a decade. I also have some health issues that make it impossible to work more than 40 hours a week.

Between being a woman, being older, not having a dozen years of experience, and having health issues, I feel very vulnerable in a community that fetishized boys barely old enough to drink who have been coding for fun since they were ten.

I have been extraordinarily privileged to be given the opportunity to speak at conferences on something that isn’t feminism. 360|iDev will be the fifth conference I have spoken at this year. I am speaking about Apple’s new 3D graphics programming framework.

People like Jim Remsik, Dave Klein, and John Wilker are all throwing me a lifeline to give me the chance to establish myself as a professional and maybe have a career.

I worry sometimes that I only get these opportunities because of “male guilt”. I am very concerned with being seen as someone who only gets to speak because they want more women. I have worked tirelessly to try to prove my cred by tackling difficult programming topics that frighten most people away. I am worried sick about not having a great talk to present at 360|iDev because my reach exceeds my grasp.

Even if I make an idiot of myself, at least I was given the chance. That’s all I ask for. I am being given a time and a place and what I do with it is up to me. A lot of people won’t even do that and I am eternally grateful for being given the chance to do what I can and make what I can of it. I am also grateful for the chance to meet the other people who are speaking and attending. In a world where connections are everything, the connections I have made at my conferences have been absolutely invaluable.

I have absolutely no idea what in the Code of Conduct created this fuss. I do know that I submitted a talk to a conference I could not afford to attend and that the organizers are not only giving me a chance to speak about a topic that is near and dear to my heart, they are also financially making it possible for me to go.

Talk is cheap. If you care so much about getting more women in technology, hire more women. Be willing to train them when they don’t have 5-10 years of experience. Mentor someone. Do something that actually costs you time or money. 360|iDev did. Don’t just go on Twitter and be a douche.

Ebook Annoyances

I have a confession to make: I am addicted to books. I am not addicted to reading books, I am addicted to buying and accumulating them.

I have far more books than I am ever going to read in my lifetime, but I like the feeling I get when I feel like if I wanted to know how to do something I could just do it. I am fascinated by animation and I have over a dozen books on HTML 5 animation. I like to think I will get around to reading them one day.

This is a "stack trace" of one of my multitudes of stacks of programming books.

This is a “stack trace” of one of my multitudes of stacks of programming books.

In order to avoid the massive piles I have stacked all over my house, I discovered ebooks. Ebooks are awesome. They just take up a little space on your hard drive, you can put them on multiple devices, and you can take them with you on trips without having to pack an extra suitcase. They also have the added benefit that if I decide I want to buy a book, I click a button and it appears on my computer like magic.

I have been primarily getting my books from InformIT. They are part of Safari Books Online and they sell the ebook version a few series that I am addicted to, primarily the “Learning , A Hand’s On Guide to Learning .” They have a deal of the day and they also have a lot of sales.

Back over the Fourth of July I preordered two books from them: Introduction to Game Design Prototyping and Development and Writing Interactive Music for Video Games. These are both part of a game developer series I have become enamored with.

I ordered these books on July 1st. The prototyping book was set to publish on July 8th. I figured, great, I get the book in a week. Huzzah!

July 8th came and no book. I checked the site and the publish date was pushed back a few days. Okay, no big deal. I can wait longer.

Last week I checked back. The book was now available to purchase and download, but my account page showed that I preordered it and couldn’t download it. I contacted customer service. I was told that I contacted the wrong customer service and I was sent somewhere else. Okay…

I got a response back this morning telling me that my order couldn’t be completed and was cancelled. If I have any questions go to this link.

Uh, why was my order cancelled? Is there a problem with preordering books from your site? Does this mean my other preordered book was cancelled? What happened here exactly? How can I avoid this situation in the future? Is there any way I can still buy the book at the price I ordered it at?

How many of these am I really going to be able to read??

How many of these am I really going to be able to read??

I forwarded these questions back to the representative. I got a response back saying it was between me and my credit card company and that if I have a problem I should talk to them.

No, the problem isn’t with me and my credit card company. It is with you and me. I paid for a product I was not given. I need to get access to my credit card statement to make sure that yes, in fact, I received a refund for the books I ordered. Even if I do talk to the credit card company and get them to authorize this purchase, I can’t get my book because you cancelled my order.

I have purchased books from you every week or two for the last year. I have never had this problem before when I impulsively buy and download random books that catch my eye. Why was I able to buy a book literally two days later but somehow the issue is with the credit card company?

Also, why was I not told the order was cancelled? If I hadn’t contacted you asking where my book was would I have gotten my money back or would you have just held onto it?

If someone who has blown over a thousand bucks on your site over the last year contacts you to find out how to give you more money, don’t blow them off. Don’t tell them to talk to someone else and just cancel their order.

I really wish that O’Reilly carried this series, but sadly they do not. I checked Amazon and they do carry the book I am looking for. It only works on the Kindle, which is kind of limiting. However, I do know that this would never happen on Amazon. As much as I am annoyed by bad business practices, I at least know that if they can’t fulfill my order that at least they will tell me about it and I won’t have to track them down.

I have access to this book through Safari Books Online. I pay nearly fifty bucks a month to get access to everything they have. It is probably a stupid thing for me to buy a book I can access online, I just like to know I can touch and feel it. I guess this should be a wake up call for me to stop wasting my money on impulse ebook purchases from InformIT.

So, thanks for not letting me buy that book. Thanks for saving me from myself. Time to get back to reading one of the many multitudes of books I already own.

Lexical or Preprocessor Issue

So, today was the day I decided to bite the bullet and start working on my Metal demo for CocoaConf Columbus and 360|iDev.

Since a large focus of my talk is on GPUImage, I am hoping to put together a light Metal version of GPUImage that processes an image using a series of filters. I want to write between three and five filters that are easily stacked on one another that have a GPUImage counterpart in order to test how fast Metal processes images compared to GPUImage.

I went to look at what sample code is available from Apple for Metal. To my delight, I saw that there was an image processing base project. It includes one filter to change an image to black and white and that is hardcoded. I should be able to go into this project, add my filters, and add some UI elements allowing me to add the filter shaders I write.

Today I opened the sample code. Immediately, there was an error.

“Lexical or Preprocessor Issue: QuartzCore/CAMetalLayer.h not found.”

This is why we can't have nice things!!

This is why we can’t have nice things!!

Huh. That is inconvenient.

Did some digging. Refrained from asking this question on Stack Overflow because the last time I asked a question about the betas I got a snide person telling me to go somewhere else. Headed to the Dev Forums and found this thread.

Apparently, for the time being, there is no support for Metal in the simulator. There should be support for Metal if you have an A7 device like the iPhone 5S (which I have) that is running the iOS 8 beta.

I have not yet updated my phone to the beta. I know we are getting close to the point where it will be released, so it isn’t a huge thing to update to the beta, I just feel like I have no guarantee that stuff will work on there properly even after I update to the beta.

I must say that this latest wrinkle is not doing anything to sell me on Metal.

Metal only works on iOS A7 chips and now further won’t even work in the simulator. I usually use the simulator in my talks to demonstrate things I am doing, but now I have to get it on my device. I think I can use Airplay to show what the screen looks like, but that is one more step that can go wrong in my process.

The other things I am noticing in the sample applications is that most of the class implementation files end in “.mm”, which means that they are explicitly telling the compiler that there is going to be C++ code in them.

I have not worked with Swift as much as I should have, but I am wondering if this is going to be a problem with trying to write an app in Swift. I know that theoretically Swift is supposed to behave like Objective-C in that you can include C and C++ code, but I have not tried to write straight C code in a Swift class yet. Can you write C code in a Swift class, or is the support just that I can import a C class into a Swift-based project? How is this going to work with Metal?

At least with OpenGL ES you have the GLKit framework with should work with Swift. I am interested to know more about this, but sadly I don’t believe I will be able to explore these issues before I give my talk in Columbus.

I am also trying to figure out just how much C++ I need to know to fully work with Metal. I thought that I needed to know about the same amount of C++ as you need to know of C to work with GLSL, but after seeing the number of classes that are implementing C++, I am slightly worried that I am going to be out of my depth for a while.

These are things I am going to have to take into consideration and disclose during my talk. I know most of these issues will resolve themselves in the next few years, it is just slightly frustrating to sit on the sidelines trying to figure out how to make it work here and now.

Fortune favors the brave.

Heavy Metal

Hair Force One announcing Metal

Hair Force One announcing Metal

I know that the big new hotness from WWDC 2014 for most people is the Swift programming language. Swift has a large impact on me and on the project I am working on that I can’t publicly announce yet, but that was not the most intriguing thing announced to me. The most interesting thing that captured my attention was Metal.

I have been interested in learning OpenGL ever since I heard about it. I had to make the terrible choice last year of choosing whether to learn OpenGL or Core Audio because it would be complete idiocy to try to learn both at the same time. Since Chris Adamson didn’t write a book on OpenGL, I made the choice last year to learn Core Audio. It was the first programming book I read cover to cover and I got to spend a day with him in Boston at CocoaConf doing Core Audio. That was an amazing experience, but it’s time to move on to the next thing.

I started to learn OpenGL ES in earnest back in March. I had a few books and I have primarily been reading the same materials over and over again hoping that my brain translates them.

GPUImage

GPUImage

One accepted way learn OpenGL ES is to work on the GPUImage framework. There is a great blog post about how to write a custom shader here.

I decided a good way to learn OpenGL ES was to do a talk on GPUImage. Many of the tutorials I have seen on the framework basically just tell you how to plug it into your project and use the built-in filters. I wanted to do a talk about how the framework actually works and how to write your own filters. The creator of the framework, Brad Larson, lives in town. He has been extraordinarily generous with his time and knowledge about OpenGL ES. I pitched this talk and got it accepted at two different conference: CocoaConf Columbus and 360|iDev in Denver. Both of these conferences are in August. I pitched these talks around May. I figured that would be a decent amount of time to figure all this stuff out.

Then, like everyone else, I got slammed by WWDC.

I know that I don’t have to talk about Metal. It’s only been publicly announced for a few months and it only works on a handful of devices. There was no reason I couldn’t just keep my original talk topic. No reason except I had some existential questions I wanted answered.

Every time I heard about GPUImage I heard it was faster than Core Image because it was programmed on the GPU. What does that mean? All of my research on OpenGL ES says to push as much work off the GPU as possible, but they never specify what work the GPU is doing. I read a whole book on OpenGL ES without having any real clue what work is being done on the GPU.

The Defending Champion, OpenGL ES!

The Defending Champion, OpenGL ES!

I really wanted to do a talk on how to optimize OpenGL ES. I also wanted to explore what exactly it was that Metal was doing that was so much better than OpenGL ES. I heard a lot of bemoaning about how slow and inefficient OpenGL ES was, but after talking to Brad about it for a little while, I wondered if the mob was wrong.

I am doing my first talk on Metal three weeks from today. I have exactly one slide from my talk done as of 1:00 this afternoon, but I am in the process of gathering the answers to my questions.

One resource I can’t recommend more highly is the video tutorial series done by Ray Wenderlich. I had a list of questions in my head that I now have answers to because of his series on OpenGL ES. I am a quarter of the way through it and subscribing to his video tutorials is the best money I have spent on tech resources this year. It is my hope that one day he will produce a 3D graphics programming, hopefully after I know it well enough to be able to contribute to it!

So, I am going to take some time, but not too much, cataloging my work on this talk. I also have a debugging talk to complete in three weeks along with some obligations for my unnamed project. I think this is doable if I don’t have a panic attack or get distracted by squirrels.

The Famous Utah Teapot

The Famous Utah Teapot

I am planning to include links in my blog to any resource I have found to be particularly useful.

My goal before going to CocoaConf is to have a working Metal application with a few of the GPUImage filters translated from the OpenGL Shading Language to the Metal Shading Language. I would like to show the performance differences between GPUImage and Metal using the same project. I would also like to be able to intelligently explain GPU programming to people who are coming into this without knowing anything about OpenGL.

Three weeks. Two talks. Git ‘er done!

Lay Down Your Burdens

Today I invested way too much of my time contemplating my future. These thoughts were primarily based on these pieces by Ed Finkler and Matt Gemmell. Both of these articulate men spoke about feeling burned out.

Ed has at least 15 years of web developer experience and Matt recently left software development to become a full time writer.

Here is my story.

I began programming in earnest in March of 2012. I began going to school for programming in 2010, but I was working at the time and I didn’t have the time or energy to really immerse myself in programming. By March 2012 I had unofficially dropped out of school and had walked away from programming feeling defeated.

I began a new job. The second week I was there our team lead walked in, closed all the doors, and told all of us under no circumstances were we to tell anyone in the company that we had no work to do and that we were to pretend to be busy.

Along with looking for another job, I also started working through the tutorials on Code Academy. It looked kind of like work and it was something to occupy my time. Ever tried doing nothing 40 hours a week? It’s living torture. Doing those tutorials kept me from having a complete nervous breakdown.

Miraculously, I discovered that if I spent 40 hours a week coding, I actually was able to learn it. Before I embarked on this experiment I had to look up how to write a “for” loop. I got to a point where I could just code. I didn’t feel stupid, I could do things and make stuff work. I felt amazing.

I was eventually fired from my job, but I actually finally understood what I needed to do in order to be a programmer. I needed to code. A lot.

I went back to school and I was on unemployment. It was going to take a year and a half to finish my programming degree, so I set out to code a lot. I gave up everything I used to love doing to learn programming. I would wake up at 7:00 in the morning and code 10-12 hours a day. I would code tutorials over and over again until I understood them.

I assumed this was temporary. I figured I would learn enough to find a job and that eventually I would be able to get some of my life back. I would be able to read fiction books. I would be able to cross stitch. I could learn to make candy. I would be able to take a weekend off. Hell, I would be able to go on a vacation!!

Welcome to my life,  Jared.

Welcome to my life, Jared.

None of this has happened yet.

I have never been able to get back to the feeling I had when I initially mastered the fundamentals of programming. There has always been another obstacle to overcome. I learned object orientation. I learned to build user interfaces. I learned design patterns. I’m learning a whole new fucking language.

The only thing that gets me through all of this is the idea that somehow, some day I will gain a critical mass of knowledge where I will be able to take a break. I am not talking about never learning another new thing ever again, I am talking about being able to go on a cruise for a week without bringing my computer and having a panic attack because I am wasting time I could be spending reading programming books. I am talking about being able to think about possibly having kids without thinking that it would completely and utterly derail my career. I am talking about being able to write and produce an application without having to immediately go back and redo it because everything changed a week after I finished it.

I regularly work myself to exhaustion. I will be laying in bed completely incapacitated feeling guilty that I am not working. I give myself migraines where I have to have my Kindle pried from my hands because I feel like I should be reading a programming book when I am about to throw up from the pain and I should be asleep.

I don’t want to be Sisyphus. I don’t want to get so close to getting that boulder up to the top of the hill only to watch it fall back down to the bottom. It is fucking demoralizing to see everything you know crumble to dust before your eyes and having to start over.

The Modern Programmer

The Modern Programmer

There is a chapter in one of Anthony Bourdain’s books talking about how when you go to a celebrity chef’s restaurant, like Wolfgang Puck’s, your food isn’t being prepared by Wolfgang Puck, it’s usually being prepared by a guy named Jesus or Jorge. He says being a chef is grueling and you don’t have guys chained to their kitchens into their sixties. He pleads that these guys put decades of their lives into their craft, don’t they deserve a break? Why should programmers be any different?

Everyone has a certain number of times they can watch their life’s work go up in smoke before they say fuck it, I give up. I am not there yet, but I can seriously see a time ten, fifteen years from now when I am there. I don’t think it is healthy for us to just accept that everyone is going to either get career burnout or career obsolescence. There has to be a healthy, sustainable way for everyone to be able to adapt to change at a pace that is reasonable. It isn’t right to treat people like resources to be used and discarded when they can’t take it anymore or want to have some semblance of a normal life. This isn’t too much to ask.

Thoughts on Being an Indie Developer

Back at the beginning of 2014 I thought everything was finally coming together. I got my first programming job and I had my first tech conference talk lined up. Everything was going great. 2014 was going to be my year.

A month into 2014 I lost my job. It wasn’t a great fit and I wish everyone the best. However, it put me in this uncomfortable position of revamping my conference speaker bio. I felt kind of like I broke up with my boyfriend a week before Valentine’s Day. I had no idea what to say. I didn’t want to just go, “Hey, I am unemployed! Huzzah!”

My answer came in an email from our CocoaHeads organizer. He was announcing what people in our group were presenting conference talks and he listed my job as: “Independent”.

Yes! Independent is perfect. I don’t have to go through the humiliation of having to put in my bio that I am unemployed or tap dancing around the fact that I don’t have a job listed. I have a job. I am an independent developer.

After I got done with my talks I started a remote contract job that lasted two and a half months. Immediately after that I started a project that I am currently still working on that will take another few months.

Life is pretty sweet. I work out of my house, so I can wear comfortable clothes. I don’t have to leave my pugs. I don’t have to drive anywhere. If I want to leave in the middle of the day to work out of a tea house, no one cares.

I would love to do this for the rest of my career. I get to do things that interest me and I can change what that is every couple of months without my resume looking like swiss cheese. I keep waiting for a nice block of time where I don’t have any obligations to anyone to work on my own stuff.

However, I am coming to a slightly uncomfortable reality.

everyone-is-a-democrat-until-they-get-a-little-bit-of-money.jpgI have noticed over the last month or so that an awful lot of formerly independent developers are now being hired by large companies.

I am wondering if my wanting to work for myself out of my house is me still clinging to a fig leaf that I am not an unemployed developer but that I am doing this out of my own free will. I am worried that I am going to be the guy in the group who dates women half his age long after it stops being socially acceptable and it just becomes sad.

I don’t even know if what I want to do is feasible. Other developers that I have spoken to have seen contract work dry up because iOS has become a mature enough platform that companies are creating in house developer teams rather than hiring contractors to do piecemeal work. Additionally, it is conventional wisdom that the market for paid apps has also mostly dried up.

I don’t really want to start a company and be in charge of people because I noticed people don’t really listen to what I have to say. I also don’t want to jeopardize a bunch of other people’s futures on the chance I might not be wrong about something. I am okay with gambling my own future, but I don’t want to be responsible for anyone else’s.

I am an arrogant person who looks at Steve Jobs and uses the fact that he succeeded as proof that following your gut can pay off even though there are thousands of people out there who have done that and failed. I like to think that there is more than one way to do something and just because 90% of the world does their job the same way doesn’t mean I have to. There is a 10% out there that does things differently, and isn’t that the spirit behind people who identify themselves as Apple users?

I know if I am smart I will find a nice, stable company to work for that hopefully will let me work remotely and pay me a nice wage. One day it will happen. But not yet. I have apps to make.