Why I am Not at WWDC

Seeing a lot of the normal “Why are there no women at WWDC??” posts that tend to come out this time of year. I want to offer my very limited perspective on why I am not at WWDC.

I did not enter to win the WWDC Golden Ticket lottery because I could not afford to go. It isn’t just the cost of the ticket. It is also the flight and the cost of the hotel. I estimate going to WWDC costs about five grand.

Five grand is a lot of money. That is a Mac Pro or a vacation to Europe.

There are a lot of people who go out there who do not have WWDC tickets who still paid between three and five grand to just be out there and talk to their peers.

My understanding is that a lot of people who go to WWDC work for companies that pay those expenses.

I don’t work for a company. I used to, but that company did not really value sending people to conferences, so I doubt they would have paid to send me even if I were still there.

I took two years off to go back to school to learn programming. I am now in the rocky process of trying to establish myself as a professional.

I have some health issues that prevent me from being able to work all those crazy hours that are expected of you if you work at the kinds of innovative start-ups that want to do cutting edge iOS technology or have enough money to send people to go play with the new toys.

Replace health issues with family issues and you will see the problem a large number of women have trying to get to something like WWDC. Even if you can afford to send yourself, you are still leaving your children/family for a week to go run yourself ragged.

For better or worse, women are still the primary caregivers of children. My conference excursions are becoming longer and farther away and it is causing an issue between my husband and I. He doesn’t think it is fair that I am going off on these trips without him and expecting him to subsidize the costs associated with them. Even though I am a speaker and many of the costs get taken care of, there are always some costs that we wind up paying.

There are two easy things that Apple could do to get more women at WWDC:

  • Set aside 100-200 tickets for women in technology. Either set it up as a lottery or have women apply using an essay or something. Try to pick people who are doing interesting things and not just the token woman board member at Zynga.
  • Do something to help ameliorate the cost. Waive the cost of the ticket. Set up a roommate system so that if you want to spilt the cost of a room with another woman you can do that to save money. Each time I have gone to CocoaConf Chicago I have ridden down and roomed with a woman I met when I picked them up to go to Chicago and both woman became very good friends.

I will probably never work for Apple. I can’t afford to move out there and I can’t work the number of hours expected of an Apple engineer. I probably won’t ever get to go to WWDC. I think it is disappointing because I would love to go to all of the OpenGL and Core Audio labs and sessions that I hear are a ghost town because no one cares about them. I am working within the constraints that I am given and doing the best I can.

Apple could make bringing women to WWDC a priority. They think bringing students to WWDC is a priority and the set aside 150 tickets for students. If they wanted more women there, they would do that for them too.

But then again, they would also set aside tickets for a lot of the prominent iOS companies that got shut out of the WWDC lottery. They probably had 100,000 people enter into a lottery for 5,000 tickets. They could double or triple the cost of a ticket and still sell out every year. They had nearly 400,000 people download their Swift programming guide within a day of it being announced/released.

Apple is going to do fine without people like me. I can throw a hissy fit about them not including me, or I can just accept the fact that I am in the same boat as a lot of other people and do the best I can with what I have.

I am not going to have the same career as everyone else. That doesn’t make what I do any less relevant than working at Facebook or trying to create a social photo sharing start-up. I don’t think I have to measure myself based on what other people use for measures of success.

To quote a famous philosopher:

“Here’s to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square holes. The ones who see things differently. They’re not fond of rules. And they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them. But the only thing you can’t do is ignore them. Because they change things. They push the human race forward. And while some may see them as the crazy ones, we see genius. Because the people who are crazy enough to think they can change the world, are the ones who do.”

Just because I am not at WWDC does not mean I don’t exist or that I am not a developer. We’re out there. It might take a while, but you will see more of us. I am not quitting.

AVFoundation Audio at CocoaConf Chicago 2014

Overview

Two weeks after I had my first tech talk I had my second tech talk. This second tech talk was at CocoaConf in Chicago.

My Door

My name isn’t in lights, but it’s still pretty awesome!

In some ways, this talk had higher stakes than my first talk did. CocoaConf is a more hard skills conference. CocoaConf is invitation only. Most of the people who speak at CocoaConf are well known developers in the Cocoa community. My talk was only going to be in front of 20-30 people, but those people were going to be very well known people. Additionally, CocoaConf is very reputable about having well developed talks.

This was a very important opportunity I was being given. It was very important to me that I not embarrass myself or let down the people who were giving me this chance.

Considerations

I was trying to figure out how in-depth to make my talk. From speaking with other people, I was under the impression that most people think that doing audio programming is hard. Part of what I wanted to convey with my talk was that audio programming doesn’t have to be hard, but then since audio programming is easy, then why am I doing a whole talk about it?

Janie Talking

Picture of me delivering my talk in Chicago

I decided to err on the side of just showing what could be done easily. I spoke to a few people about how hard people expect what I talk about to be and I was told that no one was expecting WWDC-level complexity.

Also, I hoped that by focusing on audio session-based demos that it would have a nice, cohesive block of information that I could cover in an hour without glossing over anything or running out of time.

I tried to think about what the fundamental things were that people would want audio for. I know that I personally would like to build a synthesizer, but that it would take years to learn and what I am interested in is highly specialized.

Most of what people use audio for is just recording and playing back. These are things you can do with a few lines of code that used to take hundreds of lines of code. I made a determination to focus on things people could implement easily and achieve quickly.

Preparation

I knew based on what happened with my first tech talk that I really needed to make sure I practice my talk in front of an audience. After I finished that talk I approached Brad from Bendyworks about performing my talk at their workplace so that I could get an idea of how much material I have versus how much I need.

I got to perform my talk three days before I got to do it for real. I had a rough draft of my slides and working demos.

I am posing with the door that has my name on it :)

I am posing with the door that has my name on it 🙂

Everyone I talked to said to not include too much information on my slides. I did that in my first tech talk and that went badly. I was so nervous that I forgot to talk about things that weren’t on my slides. I know it isn’t super dynamic to have a lot of slides, but I wanted to make sure that I was providing the information I needed to.

One thing I figured out by practicing my talk was that if I just brought up a demo and tried to find the code I wanted to talk about I tended to stumble over it and not be able to find it while people were watching me. One change I made was to take screen shots of the code I wanted to talk about and include it as a slide rather than try to find what I wanted to talk about in the code base.

When I didn’t include code in my slides my talk was only half as long as I needed it to be.

I included a quiz in the talk because I wanted people to be engaged in my talk. One thing I added was to have multiple choice answers for the quiz because people tended to not remember the choices. Hell, I wrote the talk and I couldn’t even remember all of them off the top of my head!!

Having gotten an idea about what wasn’t quite working properly and how to pad out the talk somewhat I was ready to proceed to the main event!

CocoaConf Chicago

I had the great privilege to be in the first group of speakers after the keynote. I was planning to spend five minutes before my talk with my headphones on listening to music to get myself psyched and focused. That didn’t happen. I forgot that the Kleins ask you to pitch your talk to people in the morning, so I had to go up and do my spiel about why people should come to my talk.

Kyubey posing with my special pink CocoaConf mug

Kyubey posing with my special pink CocoaConf mug

Then everyone dispersed and immediately went to the rooms for the talks.

I had 10-15 minutes before my talk where everyone was waiting around in my room. I didn’t really want to start my talk early because I didn’t have enough material for that and there was a possibility that someone might come in at the time the talk was actually supposed to begin.

We had a few hiccups with my set-up. I didn’t think I needed a microphone or speakers, but Chris Adamson very wisely advised me to have some and since we had a bunch of time before the talk was supposed to begin we had plenty of time getting those things taken care of.

Still, after all of this set-up there was a substantial amount of time where there was waiting. I threw on my psyched music and I got to have five minutes of meditation before I had to perform.

One thing that I did for me was I had a stuffed Kyubey doll that I used as a prop in my talk. Kyubey is a character from Madoka Magica that makes contracts with girls giving them a wish in exchange for them battling evil.

I know he isn’t real, but having a “safety net” there where I could pretend that if things went really badly I could just make a wish to get another bite at the apple really helped me to not panic. I know that only one person in the audience understood the joke/reference. I hoped that if I didn’t spend too much time on it that if it didn’t go over well then it wouldn’t derail the whole talk.

Another thing that I did was I brought a bunch of candy with me. I didn’t want to just stand up there and talk to myself for an hour, so I brought candy to bribe people to engage me in conversation so that they weren’t just spending the whole talk checking their email and doing things on Twitter.

Yes, I have been told that I talk with my hands. A lot. Also that I should have pulled back my hair.

Yes, I have been told that I talk with my hands. A lot. Also that I should have pulled back my hair.

Overall, I think it went okay. I did have a few periods of my talk where I got really nervous. One thing that happens when I start having a panic attack is that I develop a speech impediment. This happened twice during my talk. I felt it coming on and I was able to shake it off before it got too bad.

I know that after I do more of these they will get better. Considering my level of expertise and comfort with doing something like this it could have been much worse. I know if I do more of these my delivery will get better.

Aftermath

So, I spent several weeks focusing on this talk. I was not employed at the time I was preparing for this talk so this was the only thing I had to focus on.

I was really happy that I got to go first. I could get the talk out of the way and enjoy the rest of the conference. Another aspect about going first that I didn’t take into consideration was how energetic people would be at the beginning of the conference. I noticed that with some of the later talks the next day people were tired and a little burned out. This was something I observed when doing my first talk. I didn’t think about what a gift it was to get people who were bright eyed and alert over people who were looking forward to going home to crash.

One thing I didn’t take into consideration was how keyed up I was about doing the talk. After I got done with the talk I crashed a little. I was sitting in another talk when I realized that I was done. It was over. This thing I had been waiting for a month to do and preparing for was over and I had nothing else I was looking forward to after it was done. That was a little sad.

My slides are here and my demo projects are here.

Comments

While sitting down to write this blog post I finally bit the bullet and read my comment cards.

I was expecting a lot of what I saw. People said I seemed nervous. I did some silly things in my talk. People said they wish I had not relied so much on my slides.

The one that I saw that really disappointed me was that many people complained that I didn’t tackle a hard enough topic. One person said they wished I had tagged this as a beginner talk and that they were expecting me to go more in depth with what you can do with audio programming rather than just the easy stuff.

I needed to make a decision about how hard to make the talk. I erred on the side of talking about something easier rather than harder because I didn’t want to frighten people away from audio programming. That might have been a mistake. I know it was something I struggled with and hoped I made the right choice on. I don’t know if the choice I made was right or wrong, but having more than one person explicitly say that it was the wrong choice makes me feel bad.

One thing people did not comment on that I expected to have commented on was my use of Kyubey. I didn’t utilize him as best I could. If I had been smarter or less stubborn I would have cut him from my talk. I included him just for me so that I would feel comfortable and that isn’t really a good thing to do.

In the future if I am going to include a prop I am going to include a prop that is a reference more than two people in the audience will understand.

Conclusion

Having the chance to talk at CocoaConf was one of the most amazing opportunities I have had. I am grateful to the Klein family for giving me the chance to speak. I hope that I did a good enough job that they would be open to me speaking there again.

I know if I want to be a better speaker I need to do it a lot more. I have been pitching a few talks to different conferences later in the year. I hope to have opportunities to learn and grow as a speaker.

One of my goals as a developer is to be able to share my knowledge with other people. I would like to write books and do talks. Being able to give back to this community is very important to me and I hope that I will be able to continue to contribute in the future.

Snow*Mobile 2014

Personal History

SnowMobile

Snow*Mobile 2014 Logo

I started my blog a little over a year ago. The reason for starting my blog was because I was speaking to Ray Hightower at Snow*Mobile in 2013 about a book I wanted to read. He told me when I finished it he would love to read about what I thought about it on my blog. I was like, “I don’t have a blog…yet!”

I never read the book or wrote a blog post about it, but I have done other things and I have come a very long way in the last year.

I am very pleased that I had my first opportunity to speak at a conference at the same conference I first attended: Snow*Mobile.

I attended as a student volunteer last year. It was my first experience going to a conference. I had no idea what to expect and no idea about how much it would change my life.

Talk Preparation

After attended a half dozen or so conferences over the last year, I had semi-formed ideas about how I wanted to do my talk. I wanted to do a Steve Jobs-like talk where I am having a conversation with the audience instead of going up and rambling for an hour while people play with their phones and laptops.

I was urged by a lot of people to not really use a lot of slides. I think everyone has had an experience of seeing a speaker who just reads their slides while people lapse into unconsciousness. I know that every other speaker was using slides. I also had to do a tech talk for class where I didn’t use slides and I was informally told that it was expected that I would if I ever wanted to speak at a conference. I figure after I have been doing this for a few years I can go in and change things up, but my first talk I am not going to be arrogant enough to try and reinvent the wheel.

My talk was titled “Sound: The Silent Partner in User Experience”. I studied sound design and I have been spending years trying to find a way to get people to care about sound design in their apps for the purely selfish reason that I want people to pay me to do it. Sound is something that I think most people don’t think about because it is like lighting: You only notice it if someone does it badly.

Wasn’t really sure how to show sound on a slide, so I tentatively decided to not use a lot of slides. I was planning to play some examples and talk about them. I knew from when I used to do forensics in high school that I tended to choose pieces that were way too long and go over time. I did not want to do that again, so I tried to constrain the breadth of what I was talking about.

I was supposed to go to the CocoaHeads meet-up before the conference to try out my talk. This did not wind up happening because the weather in Wisconsin all winter has been simply miserable. It wasn’t safe to drive in and the meet-up was cancelled.

Snow*Mobile 2014 Logo

Snow*Mobile

After arriving at Snow*Mobile and sitting through the first few talks I realized I was in a little bit of trouble. I didn’t consciously think about how long a half hour really is. When you are doing forensics you have seven minutes to tell a story. That is a quarter of the time that you have to speak.

The morning of my talk I started working on doing a sample project to show the audience. I wasn’t planning to show any code because part of my pitch was that my talk is platform agnostic. If you are an iOS programmer, an HTML5 programmer, or an Android programmer you should be able to get something out of my talk.

So I started working on this demo about three hours before I had to give the talk. That was fun.

I tried to do things a couple of different ways. The first way was more complicated and I couldn’t debug it in the time I had, so I reverted to the “easy” way of adding sound to a project.

I compiled the project and got a weird crash. I was so nervous about everything that I had a minor panic attack and went to my teacher and was like, “OH MY GOD! IT DOESN’T WORK AND I DON’T KNOW WHY!!!!”

Luckily, Wil LaFrance was there to help me out. He showed me some debugging methods (that I really should learn sometime soon…) and we got it working. Huzzah.

I realized that the winter took a toll on everyone in the audience. When I came here last year everyone was really energetic and enthused to be there. This year the energy of everyone was dragging. When I went to the party the day before my talk everyone was very lethargic. Trying to get any energy into anyone was like pulling teeth.

My talk was scheduled for forty-five minutes after lunch. Everyone I talked to all day said they were on the verge of falling asleep.

I really wanted to earn the attention of my audience and I knew I needed to do something. I thought about what might get people engaged and I decided to make everyone stand up and dance for a minute before my talk. This was great because it got people to wake up and it killed a minute or so of my talk.

I realized very quickly that it would have been very helpful for me to have had the opportunity to work through the talk at least once. I relied on my slides more that I thought I would. Things that I was planning to speak about extemporaneously flew by because I didn’t give myself landmarks to keep myself on track.

The demo I crafted before my talk only used up about a minute of my time. This was both bad and good. It was bad for me because I thought it would take longer, but it was good for the audience because I showed how easy it is to add sound to your projects.

The conference was live streaming my talk. While I was doing a demo on my phone I got a notification from Alan Francis telling me he was watching me in Scotland. That was a really amazing thing to me that someone I talked to online and had never met in person took time to go online and watch my maiden voyage into being a conference speaker. I was very touched that he did that.

My talk wound up being 12 minutes short. I took some painful Q & A until Jim put me out of my misery by starting the afternoon break a little early.

Post-Mortem

Everyone came up to me and told me what a great job I did, which convinced me it must have been terrible because otherwise people wouldn’t have been so emphatic about telling me I did a good job 🙂

I don’t remember who said this, but someone asked me if I was having the post-talk thinking I failed and looking for a roof to jump off of. That was the best thing anyone said to me after the talk because it let me know that freaking out thinking you did a bad job is something other people feel too.

I was assured I didn’t embarrass myself or the conference organizers. I learned a lot of lessons from this talk that I applied to my next talk (which I will write about a little later). The first thing I did after I got done with my talk was to find Brad Grzesiak to ask him if I could come into Bendyworks to perform my next talk before I had to do it for real.

So, the takeaway I want to give for anyone doing their first talk is to do it in front of an audience at least once! I didn’t do that and I think it would have been far better had I done this. I know everyone told me to do that and it just didn’t work out.

I am incredibly grateful that I had this opportunity. I am glad that the stakes were relatively low. Being later in the day and having people not really expecting very much was helpful to me to be able to try something that didn’t necessarily work as well as I would have liked. Next time will be better!

Tech Talks Prep

I have been very fortunate to have two tech talks accepted for the beginning of this year: Snow*Mobile 2014 and CocoaConf Chicago.

Snow*Mobile was the first programming conference I ever attended. I was able to attend by being a student volunteer. My job was to hand out the name badges to the attendees. Having that job made a huge difference to me because I got to meet everyone who came and since I was working with the conference I had some built-in recognition from the conference goers.

The talk I am doing for Snow*Mobile is about sound design and user experience in mobile applications. The talk I am doing for CocoaConf is on AV Foundation audio.

If someone told me that I would be speaking at the next Snow*Mobile after I attended the first one I would have laughed at them. I didn’t think it was possible that I would be able to be a conference speaker at this point in my career.

I know that I am being given this opportunity by the Remsiks and the Kleins. At CocoaConf especially they tend to only invite experts and people who have written books.

I am putting a great deal of pressure on myself to not let down people who are giving me opportunities.

Snow*Mobile is a month from now and CocoaConf is two weeks after that.

I am juggling a lot of things right now. I have been at my job for a month and I love my job. However, due to the nature of the beast, I do not have a lot of free time or mental energy to take on new tasks.

I decided to dedicate this whole weekend to getting some portion of these talks done. I do not intent to leave them until the last minute. I want to give myself some time where I can change course if something I am doing is not working.

So far this weekend I have completely rethought both of my talks. I realized that the UX talk was misguided because I was thinking of it from the perspective of film. I realized all of my examples were from things that are vastly different than what I as a user am looking for in an app.

I feel better about this talk now that I have a better grasp on what I would like to say that would be useful to people attending the conference.

I had a similar revelation with my CocoaConf talk. I started getting overwhelmed by the amount of information I felt I needed to present. While I was doing research I found a focal point for my talk. I know that I can speak reasonably about the amount of information I am going to present and I will be able to give a solid, yet entertaining talk on my topic.

I am also lucky in that I have access to people who know more than I do who are willing to help me and answer my questions.

I think at this point I have maxed out the number of things I can effectively manage without dropping anything. I am gambling somewhat because I am counting on nothing disastrous happening to me in the next month and a half. This is one reason I am trying to knock these things out now on the off chance that something unforeseen happens.

My Goals for 2014

I am at a little bit of a crossroads with my blog. When I began this blog last year I wanted to use it to catalog my journey from being a student to being a professional developer. I thought it might help me get a job or provide visibility or something. My goal for 2013 was to learn enough programming to get a job, preferably in iOS development.

I accomplished that goal.

I have been now struggling to figure out where my blog fits into my current situation. I was planning to write about some of the struggles of having a first job, but after speaking to several people I have realized that this is a terrible idea. I love my job. I believe in my company and I am super happy to be here but I don’t think it is wise to write about that experience.

So what do I do? Do I just stop writing my blog? I can’t really talk about personal experiences because the vast majority of my personal interactions are with coworkers and that violates the rule I set up above.

After doing some soul searching and thinking about this a lot, I have decided that I am going to continue this blog in the spirit that I created it.

One thing that has gotten me down recently is this idea that I accomplished what I set out to do. It’s great that I reached that goal, but I also feel a little empty, like now what do I do? I know I have challenges to meet at my job, but it just doesn’t feel the same as when I had this journey I was on to get from where I was to where I want to be.

I think if I don’t keep pushing myself I will get complacent and let my skills atrophy. I want to keep giving myself goals to reach. I want to keep finding new things to learn to push myself to do more than I could last week, last month, last year.

So here is how I intend to proceed with my blog:

Each year I will come up with goals I want to reach. Some of these goals might be long-term, taking five years to reach. Others will be short-term, to be reached by the end of the year.

I will spend time writing about my progress with these goals. I can at least come here once a month to say, “I had too many deadlines and I was too busy to get anything done. Boo. I need to manage my time better.”

Apparently more people read my blog than I think actually read it, so I figure if I don’t keep working on my goals someone on App.net will give me crap about it.

Short-Term Goals for 2014:

  • Get familiar with GPUImage to the point that I can do a project.
  • Finish at least one of the audio programming/math books I got for Christmas.
  • Buy a MIDI wind controller and record at least one song utilizing a sound I designed.
  • Start a good podcast that isn’t just two white guys talking about Apple.

Long-Term Goals

  • Become a master audio programmer.
  • Write a complete synthesizer app.
  • Fully understand the math associated with audio synthesis.
  • Write a programming book.
  • Speak at a conference in another country.
  • Speak at 10 conferences in a year.

Both the short and long term goals will probably get larger over time.

So, challenge for 2014 is to figure out how to manage my time to allow me to get these things done. I am counting on people to hassle me about my goals if I don’t update very often.

I picked the name Red Queen Coder because she had to run as fast as she could just to stay in one place. I finally ran fast enough to get to the place I want to stay. That doesn’t mean that I can take a break and stop running.

Ready? Set? GO!

Learning Core Audio

CocoaConf Boston

I went to CocoaConf Boston this past weekend. I feel very fortunate to have been able to attend this event. I won a ticket to the conference and I had a lot of help just being able to get there.

This was a life-changing weekend for me. I spent a day doing the Core Audio workshop with Chris Adamson. This workshop was one of the first times that I got into the flow with programming.

Don’t get me wrong. I really like to code. I have just noticed over the last few years that I wasn’t getting the same “high” I was getting when I understood concepts before. I would spend a while debugging a huge project and when I got it debugged and working I never felt like “Yes! I got it to work! I am amazing!” I always just felt like, “Okay, that’s done. On to the next thing.” While the project isn’t working I feel miserable and unhappy because I didn’t get it perfect yet. I started to feel like a masochist because I was going through all the pain but never got the emotional payoff at the end.

This past weekend was different. When I grasped concepts with Core Audio that I hadn’t known before I felt my mind expand. The sky opened and the rapture came. I was so high off of learning this code that I could not sleep for almost a week. I was completely wired.

I want to briefly explain my interest in Core Audio. One of my self-appointed titles is “High Priestess of Audio Programming.” I am not saying that because I think that I know more than most experts on the topic. Far from it. I am a beginner and I have a lot to learn.

I love sound. I want to fully understand it and get as close to merging with it as I possibly can. The best analogy I can come up with is that for me learning audio programming is like a hard core Christian learning Aramaic so that they can read the Bible in the original language. They want to get the direct words and meanings without being passed through the filter of a translator who might have their own agenda.

I know giving myself that title is probably flaky and arrogant. I will probably have to drop it at some point in the near future but I would love it if I can keep it with people knowing the reason behind it.

I was exposed to a lot of ideas this past weekend. I was exposed to the idea of writing a book and speaking at conferences. I got distracted by a lot of shiny objects and I got seduced by the idea that I am where I will probably be in a few years, but I am not there quite yet.

My goal is to be a hard-core, bit eating programmer. I want to master the hardest things I can find. I want to get as close to the metal as I can. I want to be the person who writes a language or a framework that everyone uses. I want to be Linus Torvalds or Ada Lovelace. I do not want to be the token female programmer who got hired for diversity reasons.

Woman Programmers vs Women Who Code

I may or may not have complained about this already (probably have), but I am annoyed by the recent women’s programming outreach programs. I like the idea in theory, but all of them are along the lines of, “Here! We can teach you Ruby in three weeks and you are now a programmer! Yay!”

You can’t master programming in three weeks. Sorry, but no. I don’t like things where you type in one line of code then lots of magical voodoo happens. I love C for heaven’s sake! I want to learn some Assembler and kernel programming. I want to learn more Linux and shell scripting and regular expressions. At some point in the future I want to learn the math that is being done by my computer for DSP so that I can understand the language of sound.

I wish that these programs would focus on longer-term goals. I wish that they would tell women, “Hey, this stuff is hard. Take 2-3 years and really focus on understanding difficult concepts.” Support them when they think they aren’t good enough because they don’t understand something the first time. No one does. I usually have to expose myself to something about three times before I begin to process it. I can seriously feel my brain rewiring when I am learning a new skill. It takes time. Throwing someone into a week-long workshop to train them to be a code monkey doesn’t count.

My First Real App

That being said, I am laying out my plans for my app. I know that it is one thing to say I want to be a hard-core programming geek, it is another to actually be one.

I want to make a synthesizer. I want to program custom audio units and put together a huge, complex graph of audio effects. I am not there yet!

I am trying to come up with a project that will take about two months to complete that is impressive enough to get me my first job. I need to make the scope small enough that I can get it done in a reasonable amount of time but also impressive enough to capture someone’s attention.

My plan is to make an app that is a sound recorder. When the user pushes the record button a modal view pops up that has a user interface that shows audio level metering and the amount of time being recorded. If you look at Logic, when you begin recording there is a green bar that shows the amount of time being recorded. I want it to look like that. This user interface is the most difficult part of my project and it will be done last.

After the user records their voice and dismisses the modal view they will be able to play their voice back with some effects. I have two sliders, one that controls pitch and one that controls speed. I also have three buttons that will be mapped to various audio unit effects. I am thinking about having a distortion unit, a reverb unit, and I need to determine the last one. I am going to look through the audio unit properties header file for something that looks like it will fit into the rest of the project.

I started getting all confused and turned around. Where do I start? How do I store my data? How do I make my user interface? There is a level meter parameter in Audio Queues, how do I map that to an animation? Do I need to learn Core Animation?

I spoke to my teacher Eric Knapp. He was imminently practical. He told me to start at the beginning. Make an app that records a sound. The next step is to play it back. Then go from there. When he puts it that way…

Systems, apps, and games need to start simple and then get more complex. You need to make sure that the simple things work first and then you add complexity. You can’t immediately set out to create a complex system or else it will fail.

Finally, after I get everything coded I want to try to design the user interface. I have a degree in video production and graphic design. I have not used these skills in a very long time because I honestly don’t want to be a designer as a living. I am a fairly sensitive person and when you are doing something creative you will deal with rejection a lot. I don’t love design enough to persevere through the vast amounts of rejection my work will probably receive. I know that design is a matter of taste and that if someone doesn’t like my work it doesn’t necessarily indicate that I am bad at what I do.

I do know enough about design that I can hopefully make my project look like I didn’t ship it with developer art.

I will keep updating my progress on this application. My biggest enemy is lack of focus. I keep hearing from a lot of different places that whatever I happen to be working on at any given point is wrong. I start worrying about hedging my bets and learning a few “safety skills” in case this whole iOS thing does not work out.

I can’t do that anymore. I have to put all of my effort behind one thing and have faith that it will work out. Doing a few things badly is worse than doing one thing really well.

Moving forward. Not looking back.

Because it Also Needs to Be Said

Yesterday I got immersed in a conversation on App.net about this incident. A female designer working for a Ruby shop in Ohio was sexually assaulted while drunk at a conference by her boss.

This is causing a lot of discussion about whether or not we have a community of “brogrammers” who feel this behavior is appropriate. I have spoken to several female developers who have had it with the community and are planning to leave because of the experiences they have had.

I want to add my two cents in here.

I have no doubt that this woman was assaulted. I have been assaulted many times (I prefer not to get into the details at this point) and the way she describes her feelings and why she behaved the way she did is consistent with every story I have heard from a real assault victim.

Now, I want to point out that a lot of people did the right thing in this situation. A co-worker noticed that things had gotten out of control and came over to diffuse the situation. Justine reported the behavior. The HR department determined that what happened was inappropriate and they let go of the person who did so.

THIS DOES NOT USUALLY HAPPEN!!

Most assaults that happen are not done by people in public. Had this assault happened in a more private place where others didn’t observe it, I would like to think that the business still would have done the right thing, but the odds are it would have been easier to ignore.

I have been to a half dozen conferences over the last year. I am actually going to another one next week in Boston. I am traveling by train by myself. I have never made a trip by myself before. After hearing these stories it does cross my mind that I am vulnerable. I enjoy going to the bar after the conference and chatting with my fellow attendees. I know that the possibility exists that someone might drug my drink and I would wake up in a room other than my own. I don’t think that is very likely, but I think about it.

I was at a conference in June where there was a lot of alcohol. The party moved to a weird old building on campus in Madison where I and people I had met a few hours ago wandered around drunk after coming in from the rain. I had an amazing time that night, but I knew there was always the chance that something could have happened to me.

I think my risk of being attacked is small enough that I do the things I was to do with my life. I accept that the possibility exists that someone might try to do something to me. I make sure to only spend time around people that do not make me uncomfortable. If someone starts to make me uncomfortable, I leave that situation.

At my last conference, Madison Ruby, I had a person attach himself to me at the end of the conference. After knowing him for all of an hour he acted like he owned me. When I tried to leave him to be around other people he came over and told me that I had “really shitty body language” because he couldn’t read why I had left him.

A friend and classmate noticed this douchebag’s behavior and asked me if I needed help. I said yes, I did. So any time this guy tried to be near me my friend would pointedly insert himself between the two of us. When the guy would be verbally possessive of me my friend would interject himself in the conversation and mess up the guy’s game.

I think what he did was awesome. It really does not take very much to support another person who is being made to feel uncomfortable and do things to make them feel safer. Everyone should do this.

The takeaway I want to interject here is that I feel being a woman who is in programming, engineering, name-male-dominated-field here, is like being a character in a horror movie. Everyone has that thought of watching the blond virgin wandering into the dark alley and you yell at the screen “Don’t go in there!! It isn’t safe!”

No one is (or should be) saying that the woman being murdered by the serial killer in the dark alley had it coming for doing something stupid. No one should say it’s okay for the killer to kill anyone for making a really dumb choice. Even if you put the onus on the serial killer for being 100% in the wrong, the blond is dead.

With Justine, she got about the best result that anyone can hope for when reporting an assault. That didn’t change the fact that she was permanently damaged from the experience.

You need to be more careful.

I wish I did not live in a world where I have to say that, but I do. Don’t close yourself off to every person at any conference, job, or whatever. But do listen to your gut and monitor your relationships to make sure things do not go too far.

Long before this reached the assault stage Justine could have left. She could have said things were too intense and she could have gone home. She tried to stick it out and show it didn’t bother her. That was a mistake.

Again, I am not saying that I think she deserved this or that she is wrong. I am simply stating that bad situations have inertia. They will continue to get bad until an outside force acts upon it to make it stop. If you nip them in the bud early then things are less likely to escalate.

You have control over your body and what happens to you. You do not need to cede your right to control your body to anyone that you do not want. You can leave. You can scream. You have choices. These choices get more and more limited the longer you wait. If something makes you uncomfortable, leave. You will not get anything out of trying to stick out a bad situation.

Stay safe. Be vigilant. Help others who look like they are in distress. Have a buddy to watch your back.

The Road Not Taken

I probably spoke earlier in the year about my various disappointments regarding WWDC 2013. I applied for a scholarship and I did not win.

Someone I met somewhere I can’t remember who talks to me on Twitter told me about another conference happening at the same time, GLS 2013. GLS stands for Games Learning Society. It is an interdisciplinary group at the University of Wisconsin-Madison. It is made up of tech people and education majors who are trying to create a learning experience through games

This conference opened my eyes to a multitude of things I had never considered. They showed me tools that others had developed with the express purpose of teaching children how to code by creating their own games.

This spoke to two things that I hold very dear: Gaming and using games to learn.

I grew up playing “Where in the World is Carmen Sandiego” and “Oregon Trail”. I never had a video game console or any of the “fun” games my peers had growing up, but I had games. I loved games.

I can only learn is something is interesting to me. I am very compelled by story. The only reason I know anything about astronomy is because of the vast multitude of celestial object that are named for mythological characters.

For me, the GLS conference was a life-changing experience. It really focused my attitude towards not just becoming a developer, but becoming a game developer.

I wonder how different things would have been had I gone to WWDC.

There was some focus on gaming at WWDC, but the vast majority was focused on grand-master programming. They focus on people who want to scale a code version of Mt. Everest.

I go back and forth. Sometimes I really want to be an elite-grand master programmer who scales Everest because it is there. Other time, I just really want to share my thoughts and ideas with the world and create nice tools that other people can use.

I am beginning my last full semester of school for programming. I am on a track that I hope to continue to take. Right now I am kind of taking inventory of where I am, where I want to be, and who I am right now.

I had a very turbulent summer that I intend to write about at some point. It is still hard for me to talk about, so I hope that if you read my blog you will be patient with my lack of responsiveness over the summer.

I am planning to write here more regularly. I have been advised to keep a public blog of my projects for my development class and this one is already established. Stay tuned for the next few months. Where we’re going, we don’t need roads!

The Conference Difference

I attended a pair of conferences this past weekend: Design Madison and UXMad. I attended as a volunteer along with some other people.

One of my fellow volunteers behaved in a way that made me very upset.

The way the Sapling Event conferences work is that when the conference is about to begin someone walks around with a cow bell to get everyone’s attention.

My co-volunteer heard that and said very loudly to the conference goes, “Hey Sheeple! You need to moo-ve!” imitating a cow.

Female Developers

Awesome inspirational female developers and speakers.

I was furious that someone who was representing this company would behave this way. I don’t think anyone else really heard this happen, but I was appalled that anyone would think it is okay to speak that way.

I have a very good reason for wanting Sapling Events to not be embarrassed by their student volunteers.

Back in February 2013 I attended my first conference. The conference was Snow*Mobile, a mobile development conference in Madison put on by Sapling.

My teacher Eric Knapp told us that the conference organizers allowed students to attend the conference in exchange for several hours of volunteer help. The conference cost several hundred dollars, which is a lot of money to an unemployed college student.

I went to the conference not really knowing what to expect. Going there was a life-changing experience.

I had an opportunity to meet a lot of prominent developers from around the midwest. I got to listen to a bunch of talks about technologies I was unfamiliar with.

I discovered why on earth people use Twitter. Twitter gave me the chance to tweet a speaker telling them I liked their talk. It also gave me the chance to talk to these people about something specific rather than just awkwardly trying to make conversation until we found a common thing to speak about.

One of the conference speakers mentioned the K&R book on C that I wanted to read. I tweeted him and told him it was on my to-read list. He told me after I read it he wanted to read my blog post about it. I didn’t have a blog then, but I do now! (Again, thanks Ray Hightower).

The first day of the conference when we broke for lunch, I didn’t really know anyone at the conference. I was too shy to just sit down with someone so I sat by myself feeling bad because I was eating alone. I felt a light punch on my shoulder. It was the videographer with the conference. He said, “You. You’re eating with us. We’re up on the stage.” That moment let me know it’s okay to just go up to random tables at conferences and eat with people you don’t really know.

Eric says that many people feel like they “found their people” at their first conference and I agree with this assessment completely.

I really enjoyed my time there and I became a conference addict. I found a CocoaConf that was happening in Chicago the month after Snow*Mobile. I carpooled and roomed with a classmate of mine I had never really spoken to very much.

I got to meet a huge number of people at CocoaConf. Among the people I connected with were Chris Adamson, Jonathan Penn, and Daniel Steinberg. I forged some amazing connections at that conference. I never would have paid the money to go there had I not seen how important these conferences can be to my professional career. Additionally, my conference roommate is an amazing person that I am planning to work with on an app in the near future.

Big Tiger

Big Tiger rocks out to Eye of the Tiger at the UXMad After Party.

Getting the chance to attend Snow*Mobile made one of the largest impacts on my potential career. I am so happy that Jim “Big Tiger” and Jenifer Remsik opened that opportunity up to myself and others. I hope that this one bad experience does not convince them to stop hiring student volunteers because their generosity has enriched my life so much.

I hope that I have the chance to pay things forward later in my career. We all get to where we are because people like the Remsiks give us a hand. Sometimes people squander the opportunities that others give them and that is a shame. If someone takes a chance on you, do your best not to let them down. If you do, then work hard to avoid doing it ever again since there are limited opportunities in this world and each one is precious.

GLS 9.0

First off, I would like to apologize for the lack of updates on my blog. I had a lot of time where nothing interesting happened, but then I also had a lot of time where a lot of interesting happened and haven’t really had a chance to put out a steady stream of information.

From June 11-13 I went to the Game Learning Society 9.0 conference at the Union in Madison. This is a group I was unfamiliar with. I went because someone on Twitter told me about it and said it looked interesting. Since I had my heartache with WWDC I took this as a consolation prize.

Holy crap! This conference was the most mind blowing thing I have done recently.

The group that puts this conference on is an interdisciplinary group at UW-Madison. It encompasses the Education department, the technology department, and other groups to study how to utilize gaming in education.

One of the big things I keep hearing about at programming conferences is how we can get children, especially girls, to code. I have had ideas in my head about applications I want to author to introduce children to programming concepts. Before I came here I had no idea that anyone else had already had that idea and made things (but to be fair, it really isn’t an original idea).

We were shown games that kids created using a program called Scratch. They had a list of at least 20 different programs that kids use to create games and learn how to code. I was only familiar with a couple of them. With these programs kids can go into a game engine like Unity and create a game. That then acts as a gateway so that when they reach the limit of what they can do without knowing how to code they are then introduced to learning code as a means of expanding what they can do.

I also heard a great deal about how to actually get technology into the classroom. Schools want software and games for their classes. However, there is a rigorous amount of hoops to jump through and most people (including myself) are unaware of it. So if you create a game to teach something but you do not submit a lesson plan or a rubric or justify what specific testable skills your game will accomplish it won’t be implemented in the classroom.

I saw that a person from NYU created a game that works on an iPhone or iPad where you go around New York and visit places that historical events occurred. I think this is a brilliant use of the iPad. This could be done outside of educational contexts for people who are visiting New York any other city who want to look around without being stuck in a tour group.

I saw enough while I was there to grasp that we are not even scratching the surface of what these devices can do. There is a huge demand for quality software on mobile devices, especially for education that is not being met.

One problem that I think exists is that the better you are at programming the more out of touch you get with what non-programmers actually want. One thing that I think helped Steve Jobs was the fact that he wasn’t a programmer or an engineer. He simply had an intuitive feel for something that he knew he would love and thought other people would love too. I am not dissing Jobs, who was brilliant, I am simply stating that when you get too close to the code you tend to only be exposed to other people who think like you do and want what you do. It gets harder to go to something like this and see that there is a large demand for something you were unaware people wanted.

It was very helpful for me to go here and see what I need to do if I want to write educational games to put in the classroom. I think this is going to become more and more important as time goes on. We are in a crisis in this country right now. Children don’t vote, so education is becoming a large political target.

For a very long time private companies were not getting a taste of the money going into public schools. Now that things like “No Child Left Behind” have been implemented, test prep and test creation companies have flourished to the detriment of the educational system.

Private companies are creating charter schools that are no better than public schools but cost far more because they need to turn a profit.

Teacher’s unions are being busted. No one wants to be a teacher anymore because it is not really possible to make a living at it and the criteria needed to be a teacher is complex, confusing, and onerous.

If you can offer a uniform solution to education where you don’t need to train a great teacher but have them implement a program that has the possibility to change things. A program can be replicated. A black student in a poor school in Chicago can have the same learning experience as white student on the Upper East Side. You can offer more choice of what people can learn than if you have to hire a human being to do so.

I think we would live in a better society if we paid teachers better and had more people in the classroom, but I don’t get to have what I want. I can either watch as things get worse or I can try to offer solutions to offset the damage being done by the people who run this country.