Cocoa Camp 2013: (Almost) Final Countdown

Well, the application for Cocoa Camp 2013 is due tomorrow. I am in the last 30 hours or so that I have to complete a decent code sample and submit it for consideration.

I am modifying what I plan to do for my sample. I am planning to make the whole app a series of table views. In the root view you click on cells to select the data that you wish to submit, then at the bottom you navigate to a view that tells you the conversion.

I am eliminating my flag graphics. I figured out that what I wanted to do is more difficult than what I plan to do and would look substantially less professional.

There will be four cells in my root view. The first will prompt for an amount to be converted. The next two cells will bring up the same list of currencies to choose from. The last cell will navigate you to a view that has the conversion information.

I hope I have enough time to puzzle through it. It is an all-or-nothing thing at this point. I can’t submit it if I can only get it to partially work.

If I can’t get it done by tomorrow I will still complete it and put it in my GitHub “portfolio”, so it won’t be a total wash. It wouldn’t be anyway because doing an outside of class project is always useful.

I will keep you posted as to what happens!

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.

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.

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.

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.

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.