Back to School

My Spring Break is over. It was not productive in the way that I would have liked, but was productive in other ways.

We began learning about UITableViews before the break. Eric the teacher told us that when he was learning these he just made them over and over again until he could do them in a few minutes without looking up any of the methods associated with them.

So that is what I did. Every day during the break I redid the exercise in the book at least once. The exercise goes over three chapters. I only did the last chapter twice, but the first one was done almost ten times.

I am not quite at the point that Eric got to, but I feel better about them than I did before. I am now working on the assignment due for today. I probably should not have left it this late, but there is little to do about that now.

I really wanted to get my Cocoa Camp code sample done. I am at the point where I need to create a contingency plan. I have enough knowledge to do what I want to do, except I can’t be sure that I will have the focus to get it working. I know it is different to do something in a structured way than it is to change the context and do it slightly differently. I could probably do what I need to do if I had more time, but that is not the case.

The application does not specify how complex the code sample has to be, so I could always half-ass it and hard code the currency conversion and only do one currency, but that, to me, would be worse than doing nothing at all.

Judean People’s Front

Monty Python Life of Brian

Men dressed as women dressed as men to throw stones

Last semester I was having some minor coding issues that I wanted to talk through with someone but I didn’t want to bother the teacher about. I reached out to him to ask if there was anyone he knew about who would be interested in pair programming with me. He told me to look into NSCoder.

NSCoder, for the uninitiated, is a night that you set aside to meet up with other programmers to work on code, usually at a coffee shop. This is traditionally on Tuesday nights.

So I looked into NSCoder and hey, there is one in Madison! I kept planning to go to their meetings, but the winter has been pretty brutal. We have had snow storms most Tuesdays and it takes as long to drive from school to downtown as it does for me to drive from school to home.

I decided to create an NSCoder group at Madison College. I reached out over our group mailing list to see if anyone was interested and days people could do. I did not get any response. The few people I talked to couldn’t do Tuesdays.

So I had another person pick up the ball. He sent out an email telling everyone to meet in the cafeteria on Tuesday afternoon any time after 2:30. A couple of us from the afternoon iOS Development class all went down after class at 4:30. No one there, including the guy who initiated the NSCoder meeting. We all stay for about 40 minutes. I left early because I had a brand new puppy that I didn’t want to leave for too long and everyone else had obligations.

I found out later that the initiator did show up a half hour after every one left and just coded on his own.

So yesterday I get an email over the mailing list from yet a third person saying he thinks this is a great idea and we should really start an NSCoder group at school that meets on Tuesday nights. He tells all of us grandly that he will be in the school cafeteria all day coding and welcomes us to join him.

This is a person who dropped out without finishing his degree, so he was unaware that this is Spring Break and no one would be there. He was informed of this fact by someone so he pushed it back by a week.

I pointed out that we have already been doing this and that Tuesdays are not a good night for people that I have spoken to who would like to do NSCoder. I propose we do Wednesday night. The only other people who seemed interested but weren’t trying to reinvent the wheel all said that day worked better. I immediately got smacked down by most of the people responding on this thread that you have to do NSCoder on Tuesday because that is the way it has always been done and that you can’t please everyone.

I feel like I am in Monty Python’s Life of Brian. I feel like no one wants to just belong to the group and code, they would rather bicker about who is the chief and whose idea it was and who is the leader. So now we have the Judean People’s Front of coders and the People’s Front of Judean coders.

I don’t care! I just want to meet up with at least one other person outside of class to code. Who cares what day it is? Why do we have to do things a certain way because someone unilaterally picked a day out of a hat that doesn’t happen to work for anyone several years later in a different state?

I do not understand the mentality of some of my fellow students. A large group of us went to CocoaConf Chicago together. We did an NSCoder night there and were able to meet up with some new people. My fellow students only wanted to talk among themselves.

I went to some amazing talks there. One of them was the Core Audio talk by Chris Adamson. One of my fellow students went to it. I went up to him after and gushed about how amazing the talk was. He said, “Oh, I wasn’t paying attention. I was coding my project and I tuned out what he was saying.”

Why bother paying hundreds of dollars to go to a conference if you are just going to do things that can be done at home more efficiently for free?

Most of them also skipped the keynote speech by Dan Steinberg. I felt pressured to not go to the keynote, but I was on Twitter and I saw all the enthusiastic gushing about how amazing it was and I realized I was being stupid and I jumped ship. I hope one day to get to see the whole speech in its entirety.

I went up to Dan and told him how much I enjoyed his talk. I also went on Twitter to say I wish I had the talk on video. He asked me why since I’ve already seen it once. I was too embarrassed to say I missed the first 10 minutes because I was trying to prove I was cool to a bunch of people I probably won’t be dealing with a year from now.

That is the other thing I don’t understand. These people we are going to school with aren’t important in the grand scheme of things. After you leave school you will have other coworkers and a whole community of professional developers that you will interact with, so if one fellow student is being a piss ant, ignore them. They don’t matter.

Puppy Time!

I got a new puppy a week ago. We got her from the Humane Society and she is four months old. She isn’t quite housebroken yet and her favorite activity is to fight with the middle dog.

She has been a little bit of a handful. I haven’t updated my blog in a week because it’s hard to go more than a few minutes without breaking up a fight or letting the dog out or cleaning the dog’s mess.

Any delusion I had that if I ever decided to reproduce that I could work from home while watching the baby are now completely resolved. Good to know that before rather than finding it out after!

Will get a better, more complete post of my activities soon!

UIPickerView Insight

So for the last week or so I was trying to wrap my head around how to create a custom class of the UIPickerView type. I have two instances where I need to have a list of the same set of options and I didn’t want to repeat my code. Usually that entails putting something in its own class.

Wasn’t really sure about how to do this with that type of object. It already is its own class, so how do you create a class around that? Is it a subclass of UIPickerView or of UIView? How do you implement the UIPickerView required methods if you are trying to put everything in its own class.

It finally occurred to me that it is its own class. I don’t need to subclass it or put any of this stuff in its own class because it already exists. I can create two UIPickerView instances and set them to the same information.

Don’t know if I am explaining my problem clearly. Now that I understand it I am using terminology in my explanation of my problem that I then used to solve the problem.

Basically was over thinking things. I was dealing with something I have never seen before and I assumed it to be a completely foreign thing instead of thinking of it in context of what it actually is and how it functions.

So feel slightly silly for spending so much time pounding my head against a wall trying to solve a “problem” that someone else already solved for me.

Acquiring Focus

Okay, so I have a few days without school to work on my code sample. I know I talk every day about doing my code sample and this probably looks like I don’t know what I am doing, so not sure if I should document my meanderings!

I read a book recently by a gymnast who, at the peak of her career, won the US National Championship. She talked about how when she would get the gym in the morning and hop on the balance beam she would immediately know if it was going to be an “On” day or an “Off” day. She would not feel comfortable doing anything dangerous on the off days because she would not be in her flow.

I feel that way with learning programming. Some days I can focus and I know what I want to accomplish and how to make it happen. Other days I can’t get into my flow. I sit here and fuck around on the internet thinking I will look at just one more site, then I hear the door open and I realize my husband is home and I have been screwing around for eight hours. D’oh!

I know that if I were being asked to do something I was familiar with I could bang it out with no issues. It is when I am trying to do something for the first or second time that have trouble focusing. I have processes that are percolating through my brain and I am waiting for it to click.

I know that I won’t ever be at a point where I am just doing stuff I already know how to do. Things change so much and so fast that you have to be constantly on top of things or else you will fall behind.

I just hope that at some point I know enough of what I am doing down cold that I can get more done.

So the big things I need to do in order to get past this current hump are that I need to set up a dictionary to receive JSON data regarding exchange rates. I have done this once before, but it was with a text document on my desktop. I need to defamiliarize myself with how to parse the data and find out if I need to do something different if I am sending a query to a website rather than reading a text document.

I also need to create the UIPickerView objects. I need to populate them with the countries whose currency I am planning to convert and I need to set them up to send their data to the object that will be calculating the conversion rate.

So I have an object that is receiving the conversion rates and the data from the two Picker Views that determine which rate is being converted and to which rate.

The Flag views also need to receive data from the Picker Views in order to know which flags get displayed.

I really should set up a UML document so that I can visually create a view control document. Crap, now I see why we took that class!

Hopefully this isn’t boring to the five or so people who are reading my musings. Also hopefully this isn’t off-putting to anyone thinking about hiring me.

Trying to Focus on my Cocoa Camp Code Sample

So got an unexpected break on my code sample. I checked the text input keyboard options and I can specify a purely numeric keyboard. It makes sense that Apple would make it easy to idiot-proof apps for their devices. So something I worried about figuring out is taken care of.

The big thing I am trying to focus on right now is setting up the picker. I want to have a text box that brings up a picker instead of a keyboard. This should not be that hard. I see this all the time in apps I use. I am having a little difficulty figuring this out.

I believe I read somewhere that you can specify a UIPicker instance as the input for a text box, but this isn’t something I am seeing commonly in my books.

A lot of my books don’t talk about stuff that I find to pertinent. I don’t know if it’s because what I want to do is so easy that no one thinks it is relevant to talk about or if it is overly complex.

Maybe I will write a code recipe book for beginning coders who want to do some specific things. By the time I get done writing it the code will be deprecated.

Always look on the bright side of life…

Also super happy that it is easy to determine which comments on my blog are spam. First off, all but one so far is spam. Second, I can safely assume if a comment includes a link to something consumer related it is spam. For some reason spammers think that people who read my blog want to buy $500 shoes.

My favorite spam comment so far is one insulting me. I deleted it, so I can’t remember the whole comment, but it went along the lines that what I was writing about provided no insight into anything and all of my thoughts were derivative. Oh, and by the way, go to this site to buy Air Jordans!

Restarting the Cocoa Camp Code Sample

Okay, I have come down from my coding high from CocoaConf and I am back to mediocre reality.

I need to work on the currency converter for Cocoa Camp. I need to start it over.

Originally, I did not want any user input other than them selecting the currency and pushing a button because we all know if the user can get something wrong, they will. I did not want to have to validate that any input they had was a number.

Well guess what. That is a requirement of the code sample, it must take a user input for the number. Crap.

Oh well. I think I can still make it where I don’t need to validate numbers. I can create a UIPicker that hold four digits that can be rotated to make any number from 0 to 9999.

Now I just need to make sure all my pickers don’t take up too much layout space or make the app aesthetically unpleasing. I believe there is a way to hook the picker up to a text box so instead of you getting a keyboard you get a picker.

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.