Doing Tutorials

I am probably overloading my methods right now, but there are a lot of aspects of iOS programming that I hear about in passing that I would like to master or know better.

I would like to do one tutorial a week on some aspect of iOS that I want to know better. I will write about these tutorials on here and talk about what I thought about the skill I was learning.

I have done this somewhat with UICollectionView. I am compiling a list of things I hope I can do a quick, several hour tutorial on to get a taste of what the skill is like.

Here is my list so far:

  • Storyboards
  • Auto Layout
  • Unit Testing

If anyone reading this has any recommendations of things they would recommend I become familiar with drop me a tweet! My Twitter handle is @redqueencoder. It is also the same on ADN.

My ADN Client Project

One of the goals I have had this semester was learning how to create an app utilizing an API. There are a lot of things I keep hearing about that I don’t really have familiarity with that I want to understand better. Using an API is at the top of that list.

My understanding of our class assignments is that we are primarily working on two different long-term app projects. One of them is one of our choosing (which will be my Core Audio app) and one that will be an client. We are being given permission to use the API to develop an ADN client for educational purposes. If we want to publish our client we need to pay the developer license, but for the time being we can see what it is like to practice making a client app. has a tremendous amount of functionality. There is a large variety of various different types of app clients released for ADN. Initially a few of them caught my eye. Ohai looked interesting because it was different than a lot of the other straightforward apps that just republished a stream. Ohai is a journaling app that will allow you to record where you are and what you are doing utilizing the ADN framework.

Rivr also looks interesting. I like the design and the feel that it conveys. Yawp! also caught my eye, but that was just because of the name.

The one I decided to model my project off of is Photolicious. I have been interested in using the GPUImage framework for a long time. When I was deciding what I wanted to focus my energy on this summer it was between Core Audio and GPUImage. It was a tough decision but I chose Core Audio. I am glad that I am being afforded an opportunity to use both of these technologies.

I need to spend some time looking through the ADN documentation and messing around with GPUImage. I will catalogue what I learn from these things as they progress.

Learning UICollectionView

The first concept we were assigned to learn for class this semester was the UICollectionView. Last semester we dedicated a great deal of time to learning UITableView. This seemed like a good first project since this was similar to the table views.

It was recommended that we look at the slides from the 2012 WWDC presentation on the collection views. I downloaded these presentations, but I had trouble focusing on them. I also opened the documentation from Apple. Both of these sources were rather dry and I wanted to find a tutorial.

The first tutorial I found was this one. This tutorial appealed to me because it also utilized two other concepts I have not learned or played around with yet: Storyboards and Auto Layout. I thought this would be a safe opportunity to play around with these things.

The tutorial is fantastic. I realized as I was working through the tutorial that it also utilized an API from Flickr. I applied for a developer key and I worked through the first part of the tutorial.

I realized that this was a little bit of overkill for the assignment we have been given. I looked for a simpler tutorial and I came across this one. This tutorial was written by the author of the book “Pro iOS Table Views”. I looked through this book earlier in the year when I was learning table views and the guy knows his stuff.

I have worked through the tutorial and reached a point where the program doesn’t work and I am uncertain as to why. I was waiting to write this post until I figured it out, but I have a deadline to show I have made a modicum of progress this semester. I am uploading the program to BitBucket later tonight and I will continue to work on debugging the project. Later I will post an update as to why the project was not working.

Redefining my Semester Project

My semester programming project has undergone some changes since I conceived of it and posted my plans on my blog.

My teacher came back with some notes saying that the primary purpose of the project was to chronicle my learning process of creating the app. Since the app was technically done and just needed some polish, I decided to be bold and go in another direction.

I have wanted to learn Core Audio for a year or so now. I have either not had enough programming experience or been too busy to dedicate much time to learning it. I am also now required to complete and independent project in lieu of an internship for that requirement. I decided to dedicate a lot of time to making a Core Audio app and to kill both of those birds with one stone.

I made this decision a week ago. My initial thought was to create a subtractive synthesizer. I really enjoy using Reason and I wanted to make a synth modeled on their Subtractor synthesizer. It is modeled on an old analog synth rack and I really like the aesthetic feel of the analog synth.

On Monday I met a person at my CocoaHeads user group who has been programming audio for the last 25 years. He invited me to get coffee with him so that I could look at his project.

So yesterday he and I met up and I saw what he was doing. His synth is incredibly ambitious. He showed me the code he used to generate a simple square wave. In Core Audio that would have been a few lines of code. In his this was several classes worth of code.

I asked him how long he had been working on this . He told me he started it four years ago. He said he has been “almost done” with it for the last two years.

This was very daunting information. I want to make a synth, but I don’t think it would be a good project for my semester. Even if I just got one component done (which isn’t really likely) then I really wouldn’t have a lot to show for it.

I went to Chris Adamson and asked for advice about how long it takes to program a Core Audio app that does something. Part of this issue with Core Audio is learning the technology and looking through the header files. I wanted to get an idea of whether it was feasible for me to learn enough Core Audio to make something functional by the end of the year as a portfolio piece. He and my teacher Eric both gave me some ideas for a much less ambitious project.

At this point in time I am thinking about attempting either a streaming app or a recording app. I want to work my way all the way through the book at least once before I firmly commit myself to a project.

I have the next four days to just focus on Core Audio. I am through the first two and a half chapters and I need to see how much progress I make over the “long” weekend.

So, my current plan is to spend a few days getting up to speed on Core Audio and then redefine my semester project. That is where I am at right now for the independent project. I will update later with my progress.

WWDC: The Canary in the Coal Mine??

I am a current iOS student at a tech school in Madison, WI. We recently began offering a degree in Mobile Application Development utilizing either iOS or Android. This seems to be a growing field and many teachers at our school have felt that we are leaving money on the table by not producing mobile application developers.

For the last three years or so, our school has sent two students to WWDC on a scholarship. Before, at least to the ones I spoke to, you filled out an application.

This year you were required to produce an app. The limited information I have at this time says that most people who received a scholarship application had an app in the store already.

I heard a story from someone saying that a few years ago a student won an award at WWDC and immediately started a company that makes millions of dollars a year, but still takes a class a semester to maintain his WWDC scholarship eligibility.

You know what, fine. Part of me was thinking about delaying my graduation to have another bite at the Apple next year when I have been doing this more than a few months.

However, a lot of this bothers my Spider Sense.

This year the WWDC tickets sold out in 90 seconds. This bothered a lot of developers who worked on Apple programs during the Dark Ages before the iPad.

I got my first Apple computer in 1984. I think I am one of the oldest people that exists who does not remember a time when they did not own an Apple computer. I have never owned a computer made by any one other than Apple. I remember as a child being confused as to why I could not just buy any software I saw because it said “IBM/Tandy” on the side. I stuck with them during the Dark Ages of the mid-90’s when their imminent demise was all but certain.

I am not alone in this. The estimates that I saw were that 20,000 people all logged into Apple to try and snag 5000 tickets to WWDC. I have no idea how many students applied for scholarships, but I would not be surprised if it was comparable to that number.

I might be displaying Hipster tendencies, but to me, when I see numbers like that it is a warning sign to me that it is time to leave the party.

My previous attempt at a career was in Journalism. When I was trying to break into that field I was told that there were 50 applicants for every job out there.

I am getting a sinking sensation that Apple development is becoming a similar situation. It is hot right now, which means that more people (like myself, I guess) are having a crack at it. When there are too many people going after something, it becomes less likely to succeed.

Look at law school. Law school used to be a stable, well paying career. Now it is over saturated by people trying to find somewhere to land in their professional lives.

I think something will change. My sense, along with recent news, tells me Apple is headed for a crash. I do not know if that means I need to move on to whatever comes next or if this is a readjustment period to purge excess developers. Either way, I am not certain that WWDC 2014 will attract the same people in the same quantities.

If anyone knows what comes next, let me know!! 🙂


We, as programming students, are supposed to get an internship to complete our coursework. I have spent the last three years being told that there is a massive demand for mobile application developers and people who know HTML5. One reason our programming teacher is pushing us so hard to learn this stuff is because, according to him, we are leaving money on the table. The world needs more of us and he is trying to mint us as quickly as possible to keep up with the demand.

Imagine my surprise in trying to find an internship. I am currently in my final week of classes and I have been trying to find an internship for nearly three months.

I contacted a company in Chicago that does internship/apprenticeships. They got back to me for a while, but it was always at least a week after they said they would and only if I contacted them first reminding them they were supposed to send me information. I have not heard back from them in a month and I am officially deciding that this lead did not pan out.

I also contacted another company in Madison that does not currently do internships, but were considering the possibility. We had several meetings and I felt good about the outcome of this, but in the end they did not want to create an internship program. I completely understand their decision. This company’s primary focus is in attracting/upgrading master programmers. I am a student who has been doing this for less than a year. I am nowhere near a master programmer and what I am looking for is not in their scope as a business.

I found one other place that does do mobile application development that also does internships. Cool!

I had an interview with them a few days ago. I did all the stuff that you are supposed to do. I dressed nicely. I put on make-up. I brought my WWDC app to show off some of my work. I arrived on time.

When I got there the interviewed left me alone in a room for ten minutes. Okay, no big deal. When he got there he spent about five minutes telling me about the company and asked me about myself.

I went over my education, talked about my interests, showed him my app.

He then starts asking me if I do web development. Well, kind of. It isn’t my primary focus. I spent the last ten minutes telling him about how I gave up everything in my life to learn iOS development, spending 40-80 hours a week doing just that.

Excellent! They have a web site they have been contracted to make in HTML5 that is supposed to mimic an app they already created.

Do I use Photoshop? Yes, it is in my resume.

Excellent! This web site is a small project, only about 300 hours and they want an intern to work on it to get their feet wet in working at a real shop.

Cool, how much does this pay?

This is unpaid.

Thank you for coming in. We have a lot of other people who we are interviewing for this job. We will get back to you. Don’t let the door hit you on the way out.

I can’t remember a time I have had a worse interview experience than this.

– They have a contract with a company to provide a service. They were either hired or they bid on this contract and they will receive a certain amount of money to complete this project. They do not get to dump that on an unpaid intern and act like it is a travesty that the intern ask to be paid, even a nominal amount.

– They did not listen to anything I said about what I do and what I hope to do. They had a certain need and they tried to shoehorn me into doing something that they didn’t want to do.

– They did not show me around their office. Nearly every interview I have had, they show you around a little before they talk to you because they want you to want to work there.

– They cut off the interview at the point where I talked about payment. Clearly they only want someone to work there for free. I have had three unpaid internships and none of them have lead to a paid job. Ever.

If you are majoring in something like Journalism and there are 50 people competing for an internship, that is one thing. It isn’t cool to not pay interns, but if you can find someone who will work for free because there are 49 other people who will, it is easier to get away with.

HTML5 and iOS development are hard. There are not a lot of people who do them and do them well. Just because the guy down the street in the State Capitol can get a hoard of political science majors to work for him for free does not mean that you can get a programmer to work for you for free.

If I am going to work all summer without being paid, I am working for myself. I have said that I want to learn Core Audio. I will spend my summer learning that and making a kick-ass app that I will own. I am not going to come and pay $15 a day for parking for the privilege of working for you for free, where at the end you will shake my hand and not hire me.

I have absolutely no indication that I will be treated well at this place. They do not feel that what I am doing is important enough to pay me even though they are being paid to perform this service (which, by the way, violates the law regarding internships).

I am sure if they look hard enough they will find some poor sucker to come in and do this job for free, but they will be getting what they pay for. No one that I know that sweated blood trying to learn this stuff is going to go and work somewhere for free when they can get an actual programming job somewhere that pays them a lot more.

I am sure if I tried finding a job that required Java or something else I could find one pretty easily, but I don’t want to do that. I have a very specific idea of what I want to do and I have been afforded the luxury of waiting things out and being picky. This is a tremendous opportunity and I am not throwing it away on people who have no respect for me or the work that I do.

I truly hope that I am not making a huge mistake in attempting to get into this field. I do have to consider the possibility that people will not pay me to be a programmer.

Chris Adamson wrote a great blog post on app pricing. Basically the amount that people are willing to pay for an app is not enough to make it worthwhile for a programmer to code an app. People want apps, but only ones for a buck. There is a tremendous demand for apps and a tremendous want on the part of developers to make apps, but the economic of app pricing have precluded this from happening.

I wanted to learn iOS because it is hard. I figured if I could master something difficult, then the next time I attempt something equally difficult it will be easier and so on.

I know that I probably won’t be programming iOS in 5-10 years, I will be programming something else. I believe there will be a need for programmers and that because we are in a recession that does not give you the right to demand my work for free. Scratch that, you have the right to ask whatever you want, but I also have the right to say no, my time and expertise are worth something.

I supposed time will tell if I am right or wrong.

This is Why You Need to Understand Technology!

There is a winery in Baraboo that I go to periodically. The guy who runs it is a small time operation. He put together a mailing list of people and started sending out emails. However, the way that he did so was by creating a group email list, which means that any time anyone contacts him for any reason everyone who is on the list gets an email.

So every minute or so I get bombarded with emails from strangers asking to be taken off of the list. The longer this continues, the more often people are sending unsubscribe emails and the angrier they are getting. I got three different emails from the same woman who is typing in all caps “UNSUBSCRIBE ME FROM THIS LIST!!!!!” One guy said in his subject line that if he isn’t taken off this list immediately he will never visit the guy’s winery ever again (I am thinking it is likely that this is a person who only went when he had a Groupon).

I feel for the guy. He has a small operation and he isn’t a techie. He just wants to make his wine and he’s drinking the social media Kool-Aid. He probably has some young relative who is telling him he has to do this in order to reach out to the tech savvy generation. Unfortunately he is alienating the people he is trying to attract.

I hope that he is checking his email or the group listing to see that he has a small mess on his hands. I hope he can do something to rectify the situation with the people whose emails he has inadvertently leaked.

Injuries Suck!

I was going to pair program with another student today, but I forgot that most programmers aren’t up at 7:00 am, so I was waiting around for a while before I figured out that it was going to be a while.

Unfortunately, on my way to our meeting place I tripped on the steps and I hurt my wrist. It was already a little fragile, but putting a bunch of weight on it as I fell really did not help it.

I wrapped it up and soaked it in hot water while I took a bath. It feels slightly better. I can type some now. It hurts to pull things with my hand. I tried to uncap a pen and I cried out in pain. This is the Universe telling me to give up on non-digital forms of note taking.

I feel pretty good about my Java project. I think I dotted my “i”s and crossed my “t”s, which means that there are probably a billion errors I have not encountered yet.

I am still in the beginner programmer bad habit of writing all my code before I compile and debug it, so I am sure I am in for some fun tomorrow. I have found that if I wait long enough to debug my code it is less hurtful because it stops feeling like yours. It is just some random code that came from somewhere and it’s a treasure hunt to fix it.

I am sure anyone reading this read the last paragraph with their face buried in their hands moaning, “God no!”

It’s my mess and I will deal with it as I like!

Second Day of the Weekend, First Java Project Part 2

Hit a small snag this morning. We are required to complete this project on a Virtual Machine. I have been having some difficulty with my VM. When I tried to install it the first time it would crash no matter what I did. We eventually determined that the VM was only allocating something like a byte of RAM to the VM and it was being starved to death. I also have a retina display Mac and there is a setting to do with 3D rendering (I think, this was a month ago) that causes the VM to crash.

Anyway, this morning I tried to log into the VM and it froze. It was unresponsive and wouldn’t do anything. I was afraid that I was going to have to reinstall the VM, which would be a massive pain to deal with, especially since we had to install Ant manually rather than using the Synaptic Package Manager.

I restarted my computer, but apparently I needed to restart the VM. Happy that the husband was home. He maintains these for a living and he helped me get back on track.

Generated my documents for the testing. Forward ho!

Second Day of the Weekend, First Java Project

Yesterday was not as productive as I had hoped it would be.

I hate shoveling snow! I noticed that when I go outside to shovel the snow it irreparably ruins my ability to focus on programming. It also bothers my wrists. Right now the right wrist is in a brace because it hurts a lot. Hopefully it will feel better later in the day. I can still type, but it is annoying.

I am doing the shoveling because my husband goes to work all day and I really don’t think it is fair to make him do a lot of the chores just because I have trouble focusing. Plus he does all the lawn mowing during the summer. I refuse to do that because last time I tried to mow the lawn the grass clippings gave me what I can only assume is an asthma attack. I was laying on the lawn gasping like a fish. I don’t care to repeat that experience.

I am going to take a different tack today. We are learning about test driven development. As far as I am aware, we have tests that we run on our programs to see if they are doing what they are supposed to be doing and contain what they are supposed to contain.

I am going to save the work that I have already done/been given in another place, start from scratch, and try to complete the project that way. Rather than having my focus scattered over a bunch of disparate classes and pieces of information, I will have a single focus on a single problem at a time that I can solve rather than trying to put a puzzle together without a picture and any corner pieces.

I am holding onto the work I have done and I can integrate it back into the project, so it isn’t exactly starting over again, it is just taking things from a different angle that will hopefully allow me to focus.

I feel like my focus is light wave going through a prism. I am hoping that by giving it a focal point my focus will be white instead of a rainbow going in all different directions.