CocoaConf Chicago and Core Audio

Haven’t had a chance to write on my blog recently. I went to CocoaConf in Chicago this last weekend and it was an intense experience. I thought I would have more down time, but not only were the days long, they were packed with lots of content and by the time the end of the day came my brain had run out of available RAM!

I met a lot of amazing people. I saw a lot of amazing speakers. Among my favorites were Jonathan Penn and Daniel H. Steinberg. I went up to Dan after his keynote and told him he was my new career role model and he looked at me and said, “Oh God honey, why??”

However, the talk that made the most impact on my life as it is was the Core Audio talk by Chris Adamson. I bought his Core Audio book back in December. I took it on vacation with me between semesters because I thought I could read through it. That went fine until I got to the first code sample. It had code in it that had been deprecated. I discovered why the main method has the autorelease pool in it. It was because before you instantiated an NSPool object, did something, then called the drain pool method.

So, anyway, I got very confused about what stuff was deprecated and what was pertinent for Core Audio, so I set the book to the side until I learned enough to be able to make that determination.

I was super excited to see Chris’s talk. I wanted to go up to him and talk before the talk, but I didn’t really know what to say. At conferences I prefer to go to someone’s talk and then approach them later and talk to them about their talk. So far it has worked. The Core Audio talk was one of the last ones of the conference, so I saw him around for three days without talking to him 🙁

When he started talking about Core Audio, it was a revelation. I noticed that when my brain sees a bunch of unfamiliar stuff, it runs away and hides. I usually have to look at something two or three times before my brain gets used to what it is seeing and is willing to process it.

I did not feel that way with Core Audio. The first time I saw actual Core Audio it was a revelation, an epiphany. I didn’t want to run and hide from it. I wanted to dive into it and absorb it.

I got to talk to Chris after his talk and he is super cool. He is the first person I have encountered in four years who knew the person I named my dog after (her name is Delia Derbyshire). I had a great deal of fun talking to him and I hope that I get to do so again at some point in the future.

After I got back from the conference, I felt energized. I felt like I finally had a grasp of what I am doing. I spent the whole next day coding. I was in the flow.

This is the first time I have gotten into the flow for Objective-C. Before this, I did my homework because it was something I had to do. When I would talk to people who said they would code for hours I was jealous because I wanted to want to code for hours, but I wasn’t there yet. I was afraid it would never happen.

I want to be part of this world. When I go to these conferences and everyone knows each other and they are all familiar with each other’s work. I want to be one of those people. I don’t want to be the nerd that goes to Comic Con once a year so that I can meet the people who create my favorite shows, only to go home and wait for the next year to come so that I can rub elbows with these people. I want to be one of them. I want to walk the walk rather than just be a fan girl.

When I got home I dug into Core Audio. I stayed up all night coding and listening to my internet radio while drinking tea. My husband kept yelling at me about when I was coming to bed and I yelled at him that I was busy and to leave me alone. My dog, Delia, was unhappy that I wasn’t cuddling with her, so she came to my office and gave me disapproving face.

It was glorious. I feel that I now have focus. I know what I want to do. I know what I want to accomplish. I feel confident that this is something I can do and do well.

I feel bad that I didn’t write more about the conference, but if you are reading this post you were probably there and don’t need me to say what it was like!

I am going to code now. Life is amazing.

With a Little Help From my Friends

Okay, my post a few days ago about being an iOS rockstar and doing the coding sample for Cocoa Camp, that was total posturing.

I rode down to CocoaConf Chicago with another programming student from another class. Her name is Emily. She is a decade younger than I am and a better coder than I am. She was showing me all this stuff she’s done and I had an awesome moment of depression. Oh my god! I’m old! I’m dumb! I’ll never figure this stuff out! I suck!

So I swallowed my pride and I asked for some help on the assignment we have due on Tuesday. Emily was super awesome and talked me through a problem I was having. It wasn’t a coding problem, it was simply a logic issue. I felt silly for not figuring it out because it was exactly the type of stuff I was doing years ago.

She told me not to worry about it. She has been doing this longer than I have and she said she felt exactly the same way when she starting doing things for the first time.

So, the reality is, I am not the world’s best programmer. And that’s okay. I am learning. I am trying hard and there are always going to be better people out there in the world. I can’t get hung up on comparing myself to other people. If I make that coding sample, send it in, and I don’t get picked, it’s not the end of the world. I can think of a half dozen people just at my school that are better coders than I am and it was stupid for me to think that I was just going to be chosen because I am somehow inherently special and will do something brilliant that no one else has ever thought of.

So, expectations are reassessed and if/when I am not chosen, I won’t feel bad about it because I had a good experience learning how to figure stuff out and when to ask for help.

I will write some more posts soon about specific CocoaConf Chicago events!

How Picky do I get to be??

My first degree that I obtained was in Broadcast Journalism. On one of the first days of class the professor told us that in 10 years only two out of a hundred of us would be working in journalism because everyone else would leave. I looked around smugly, feeling sorry for those other 98 people who were wasting their time.

Fast forward 10 years, and everyone I know who did actually get a job in journalism is doing something else. I never actually got paid to do journalism. I had internships and I worked at a community radio station for three years during which the only payment I got was an autographed copy of Fahrenheit 911.

I keep hearing that hiring for programmers is insane. I keep hearing that we are not outputting enough programmers for all the positions available and that if you learn stuff like iOS, you will be high in demand.

Madison does not yet have a large iOS community. You can program in your basement and hope you create Angry Birds, but large scale iOS operations are few and far between.

I am bringing this up because I am being contacted by recruiters. Most of the jobs are completely insane, which get trashed. Occasionally I get one that isn’t perfect, but not bad either.

I have had two of these in the last few days. Both of them are at Microsoft shops where they want you to use Microsoft. They both pay okay. One of them is kind of far away.

Last summer when I was unemployed and had not dedicated myself to going back to school I would have jumped at either of these opportunities, but right now I am looking at them going, “Meh.”

I don’t know how picky I get to be for my career. I still feel the panic I had as journalism major who graduated right before the recession hit and saw all the newspapers and TV stations go out of business and having that as a paid career disappear. Part of me feels like if I turn down something that isn’t exactly right the hubris gods will smack me down.

I am just afraid that I am going to go onto a path that I don’t want to be on. If you take, lets say, a VB.Net job even if you don’t like VB.Net, it’s hard to find a job utilizing a different language because all your experience is in that. I don’t want to get stuck in a job using a language I don’t like because I am afraid that I won’t find another one.

I don’t have to worry about this an awful lot right now because I have school and can’t really commit to anything yet. So I get to pull a Penelope and weave my shroud while I keep my suiters waiting while I await my Odysseus coming home. Just worried about what happens when time runs out.

Update suggestions welcome!

I have had this blog for less than a month. I have not quite mastered WordPress and I am probably not looking at this as a reader as well as I should. If I am missing a feature that you think I should have, please leave a comment or tweet me @redqueencoder.

I would be sad to find out people don’t read my blog because it’s missing some feature that it needs to be usable or professional.

Prepping for CocoaConf Chicago 2013

I think I just packed more for a three-day trip to Chicago than I did when I spent two weeks in China.

I packed a dress and dressy paraphernalia in case I have to go somewhere nice. I packed my make-up, even though I usually don’t wear it in case I feel the urge to.

I packed tea and a tea infuser. I am sure they will have coffee and hot water at the conference, but last time they ran out of the tea I like, so I am bringing my own.

I am bringing a bunch of board games so that I have an ice breaker for strangers and an excuse to spend time with people where we are doing something and it isn’t creepy.

I am bringing my Kindle in case I get bored and want to read. I am bringing a paper book in case my Kindle’s battery dies (I can’t find the charger).

I really hope that they have Wi-Fi at the conference. You would be surprised at the number of places that don’t do that. Now that I have migrated all my programming books online I will need the Wi-Fi to do anything.

I am rooming with a girl from a different class. I hope I don’t freak her out with all of my voluminous amounts of crap.

At the last conference I was at one of the speakers talked about getting rid of anything in their lives that didn’t fit in a backpack. Thinking about that makes me curl in the fetal position breathing into a brown paper bag.

Now, just need to make sure I pack my computer and clothes!!

Cocoa Camp 2013 Code Sample first impressions

The application for Cocoa Camp requires you to create a currency conversion app for the iPhone. The only requirements are that the app compiles and that it converts one currency to another. Beyond that, you can make it as complex or simple as you like/can deal with.

I would like to extract the data in real time rather than hard code it in. Once you figure out how to extract the data, it isn’t that hard to scale it to more than one currency. I am currently planning to have ten different currencies.

I also plan to display the flags associated with each currency and to make the text green if the conversion is higher and make it red if it is lower.

So this project has a few moving pieces. I need to create a picker menu with the currencies I am planning to offer conversion for. I need to extract the data and apply it to my output. I need to use the data to determine what flags I output.

There is a big piece of information that is used by all parts of my app, and that is the exchange rate information. I need to take the countries selected by the picker, send them to the place to get the rate, return it, then send it to an output for the rate. I also need to send the county info to the output for the flags.

I will probably create a diagram charting this out.

I also want to get this done soon, like within the next week. The application is not due until April, but I don’t want to spend a month on this. I contacted Apple about this program before the information was released and they sent me the information about it. So someone there knows that I have known about the camp since the data was released.

I don’t want to half-ass this, but I do have very clear goals that I want the app to accomplish and how I want it to work. I believe the goals I have created for this app are attainable in the amount of time I have given myself. If I get stuck I have a few people I can talk to for advice about what to do.

I am not going to get into any details about exactly how I accomplished this on my blog until after the deadline. I highly doubt anyone who will be applying to this along with me even reads my blog, but it’s better to be safe than sorry.

I created my stub project. I included most of the classes I believe I will need. I have already started this once when I decided to come at it from a different angle. I have the old version of the project in another folder. Tonight I am going to review the different pieces that I need to use so that I can build everything once instead of putting things in the wrong places and wondering why my code doesn’t work.

I hope this will be enough. I can’t think of a way to make this more complex without creating app bloat. I am hoping that most people won’t do this much, or if they do that I did it better!

Overcoming Stumbling Blocks

After descending from my information euphoria last night, I have started tackling problems in the real world. And so it goes…

I had been having some problems with my iOS projects the last few weeks. They seem like they are working, until I build them and try them out in the simulator. Then the app crashes and Xcode takes me to the Main method.

This makes no sense. I don’t do anything in the Main method. I don’t even know where the main method is located in the damn project!

This kept happening and it was frustrating me because clearly I was doing something wrong for this to keep popping up.

Today I noticed that under the main window the console was open and it was full of random gibberish. On a whim I scrolled through the gibberish.

Success!! At the top of the gibberish was a message saying the program threw an exception and told me where the problem really was! Huzzah!

Got my current projects running. Now I can go back and figure out why my other projects don’t work. No rest for the wicked.

Slight Existential Crisis

I began a Safari Books Online subscription at the beginning of this semester. At the time I began, there were two tiers: 10 books a month or unlimited.

I took the 10 books a month because it was substantially cheaper and I didn’t think it was possible to need more than ten programming books a month. I decided to do this specifically because I bought some Objective-C books a few years ago and this language changes so rapidly that there seems no reason to own a paper copy of the book. Once it is a year old, it is worthless and can’t be used or resold.

I only had this subscription for a week before it became oppressive. I am learning both iOS and Java. There are so many resources out there for both of these that I wanted to know more! I wanted to learn about Data Structures and Test Driven Design and OpenGL. There was so much to do and so much information! How can I confine myself to just ten books?!

Well, recently my husband started a business and I can now have my unlimited access. My mind is sponging with all the information out there. Python! Ruby! C! Core Audio! Photoshop! Logic Synthesizers!

I realize I can’t know everything. I can’t read all that there is and even if I could, it will all change in a few months anyway.

It is extremely frustrating to know that there is all this beautiful information out there in the world and with my limited human lifespan I can only absorb a fraction of it. Life is too short!

I wish I were Jamie Maddrox from the X-Men comic book universe. His mutant power is the ability to split himself into hundreds of different instances and to be able to go out and live a hundred lives and then combine to one shared experience.

I don’t know if this is exciting or if it is a punishment from God. Either way…

Canned Responses

I have mentioned a few times that I am searching for an internship. I would prefer one in Madison, but I have expanded my search to Milwaukee and Chicago. I would also prefer one in Mobile Application Development, but also have expanded my search to Java internships.

I did not think there were many places in Madison that do Mobile development, so I was pleasantly surprised when I learned of one I was unaware of. I immediately went to their website to inquire about an internship.

When I got to their website, there was no obvious “Career” link on the site. I looked at the links across the top, and nothing. The only contact I could see was for prospective customers.

On a hunch I checked the bottom of the screen. Hidden among identical links across the top was one that said “Careers”. Yay! I found it!

I clicked on the link and it brought me to a form. The form asked for my name, my email, and a brief description of what I was looking for. So I fill in my info, say I am a student looking for a mobile application internship.

A few hours later I received a canned response. The canned response said that all of their opportunities were filled but that they would keep my resume on file and if I cared to update it in their system I could contact them.

Now how did they get my resume?? I never gave it to them. There was no option to upload a resume. Did they get it by magic? Am I already so awesome that they were scouting me out waiting for me to ripen into a full blown rockstar application developer?

Nope. They were using a canned response. Further, they were using a canned response I already received from another Madison company I contacted a while ago for a different position.

Do I really want to work for a company that is so careless that they will automatically use a canned response that they never bothered to read to ensure that it correlated with the information that they gathered from my contact? Nope.

Clearly they don’t want to hire anyone in the near future. That is just fine. I ask if you genuinely don’t have any need to hire anyone, be honest about it! Don’t ask me to jump through a bunch of hoops in order to be blown off.

Also, my understanding of the job search process is that is a two-way street. If, by a lot of hard work and tenacity, I one day become a rock star developer, I won’t want to work with this company. I have a bad taste in my mouth about them. I won’t recommend them to someone looking for a company and I won’t work with them if given the option to do so.

I am one person, but if I notice this then I am far from the only one. Joel Spolsky of Joel on Software says about doing an interview, even if you are not planning to hire an applicant, you want them to walk away feeling good about your company.

He is a wise man and I am saddened that this company did not read this article or take that advice.

Cocoa Camp 2013

Every year Apple does a summer camp for programming students in Cupertino. The last few years Madison College has had several students who have gone.

They just released the application to us yesterday. We are required to send a resume, a letter explaining why we should be considered, and a coding sample. We have to program a currency converter that must work on either a simulator or an iOS device.

I am in a conundrum. I have a (slightly) late Java project to work on and I have some iOS homework to complete, but the challenge put forth by the Apple people is more interesting to me. Maybe it’s just interesting because it is new and shiny.

I have a month to complete the challenge and submit it to Apple. I will try to work on my other stuff for a while, but I might come back to working on this. I want it to be awesome.