Monthly Archives: May 2013

Plotting The Course

I finished my semester (yay) and I am off to explore a few months of being able to do whatever I want.

I have some intriguing prospects. The coolest one so far is that I am communicating with the founder of an iOS start-up in Austria about going there for a month and completing my internship requirement. I am super excited about this possibility.

I am being offered a place to stay and help getting there, so if I can break even on my travel and living expenses I will consider that a great achievement.

I am starting to figure out what I am going to learn and how I would like to do so. My initial, not-thinking-things-through plan was to master Core Audio. This is still a large goal that I have that I want to work towards as quickly as possible.

But now I am thinking about what do I want to do with it. I also have interest and experience in graphics. This seems like a good opportunity to do Game Design. I know most people who do programming probably want to do Game Design. I am certain it is probably like my experiences in the Audio Recording industry where the cooler a certain career path is, the more sexist and intolerant it becomes.

I would like to design my own games. I have several ideas that I would like to implement. One that I had was far too advanced for me to do on my own and I had to figure out what I would do. I could go to someone about it and risk them taking the idea away from me and cutting me out of the process. I could talk to other people I eventually want to hire about co-owning the game with me, but I did not think that would go well. I eventually was able to formulate a less-complex version of what I wanted to do and I believe I can accomplish that on my own in the next year or so.

But where does that leave Core Audio?? I made a personal commitment to learning that this summer. I know that if I go chasing after every single whim and interest I have I won’t get anything done. I need to really figure out what I ultimately want to do so that I don’t waste this valuable time spreading myself in too many directions and accomplishing nothing.

Another fly in the ointment is my husband. He is under the assumption that since school is over I have no commitments and I am available to do stuff whenever he has a whim. We went to Star Trek Into Darkness on Friday morning because he took the day off. I don’t think he understands what I am trying to do.

That would not have been so bad had today not been so difficult. I felt like I hadn’t slept and I wound up taking two naps today because I felt exhausted. So I did no work on Friday, Saturday, or Sunday. I made some progress in my C programming book today, but I feel like today was mostly a wash. I can have those days periodically, but if I am going to try and treat this as a real job, I can’t randomly spend my day playing Portal and napping with my dogs. I hope tomorrow works out better.

My progress through the Core Audio book is slow but steady. I completed the first two chapters. I could probably plow through them more quickly, but based on how hard it was to process the other information during the semester for iOS, I hesitate to go too fast through the book. I am trying to spend a few days on each chapter and go through them about two a week. The earlier chapters are probably easier, so I will reassess when I get further.

I thought I knew C pretty well, but there are a lot of commands I am using that I am not familiar with. I am going to go more in-depth with C while going through Core Audio.

I will give another update at some point soon since this is the first full week I have to myself.

The Day I Became a Programmer

I have spoken a little about my first introduction to programming. It was five years ago and the language was Perl.

I did not progress very far with Perl. I got confused about functions and I did not have anyone to really talk to about my confusion, so I kind of forgot about it and got distracted by other things.

Nearly four years ago I began taking programming classes. I figured that if I had people to talk to and deadlines to meet it would be easier to keep from being distracted.

That worked somewhat well for a while. I took programming classes but I couldn’t remember how to do simple things from memory since we only did them once before moving on to another topic. I found “for” loops confusing because I could not remember what each slot in the parenthesis was for. I had to look it up any time I wanted to do one. I didn’t understand why people wouldn’t just do a “while” loop because it felt so much more straightforward to me.

So I kind of stumbled through programming classes for a few years. I would take the into course to a language and go over arrays, for-loops, and other things another time. Every time I heard it things made a little more sense. I was turning my homework in and I sort of understood it. I had a bad feeling that there was a lot more to it than I was processing, but I was trying to tread water to keep from drowning.

Finally I slammed into a wall: Object Oriented Programming.

The first language I learned, VB.Net, did not talk about OOP in the first semester I took. We kept getting further and further behind and we did not talk about it. When I took the second VB.Net class, the teacher assumed we knew it. The first time we saw classes, we were like, “What’s going on?! There is more than one document! How do they communicate?!”

I had to drop the class because I had absolutely no idea what we were doing. I wanted to take a semester off. I felt burned out and depressed because everything was so hard. Everyone else I talked to seemed to have be programming for years and already knew this stuff. I felt like a failure.

At some point around a year ago, I started using the web site “Code Academy”. They went over these introductory concepts again, but I could do the tutorials over and over again and things began to click. I felt comfortable with these concepts and I knew I could learn this.

I decided to take Java in the fall because the teacher I had had for my first programming class designed the curriculum and I knew that I could learn from him. He had since moved on to designing the iOS curriculum, so I followed him to that program too.

The “Intro to Java” class was the best programming class I have ever taken. One of the first things we did in that class was learn OOP. By tackling it immediately and using it over and over again we were able to process what programming is and how it works.

I consider the day I finally understood OOP to be the day I became a programmer. I have been messing around with it for five years, but it wasn’t until nine months ago when I had that first breakthrough.

I have all kinds of concepts that I have encountered that I did not understand. Delegation in iOS has been one. It is easier to keep working at something you don’t understand once you have had the experience of having a breakthrough and finally getting something that was hard.

I feel that I have made so much progress over the last year. I hope that this is just the beginning of a long period of productivity for me.

I know a year ago I felt very unsure of myself. I did not want anyone to ask me any questions because I was afraid they would figure out that I didn’t actually know anything. I don’t feel that way anymore. I feel like I can learn anything I set my mind to and I am up for the challenge. Bring it on!

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!! πŸ™‚

WWDC 2013 Disappointment

I did not win a scholarship to WWDC 2013.

I can understand why. I am 31 years old. Programming is my second career. I have only been programming Objective-C for nine months. I have classmates that have been programming longer than I have who can do really cool stuff.

If I had to compete against just the people I know I don’t think I would pick me.

I am happy for the people who got to go. I have been prepping for the fact that it was a long shot that I would win.

I am in good company. There are a lot of amazing programmers that did not get to go.

I really feel glad that I tried. I crashed and burned when I tried to create an app for Cocoa Camp. The fact that I had less time to complete an app but I was able to make it work and do exactly what I planned is a huge accomplishment, at least to me.

I am going to go back and revamp my app to make it work the way that I would like it to. I am going to keep focusing on doing the things that are important to me.

This isn’t my time. I can acknowledge that I have quite a ways to go and that I can get to where I want to be if I have focus and tenacity.

After I get the app to where I want it I will submit it to the App store and possibly throw it on GitHub. It isn’t super cool yet, but I have an interrupted block of time to make it what I want.

Eyes on the destination. Dust yourself off. Keep moving forward.

New Blog I am Contributing to

I was recently asked to be a contributor to a new blog:

Techcriquette

This is an offshoot of the blog Cocoanetics.

Techcriquette’s focus is on women in programming. We will be talking about our experiences as women dealing with sexism and things that we would do to try and broaden the different kinds of people who work in technology.

I may be “recycling” some of my posts between these two blogs, so if you by some miracle are reading both blogs, I wanted to clarify that I am not a plagiarist and that any article posted on this blog is written by me.

I am working on figuring out how to identify any article I wrote on Techcriquette. I also have figured out that I need to revamp my site somewhat. I believe it need a small redesign and I also need to figure out how to set up the site to tweet anytime I create a new blog post and to allow others to retweet my posts.

I am certain these are not large things, I just have not had the time or inclination to make them happen.

This is going on my list of things to do when my semester is over. That list is getting awfully darn long!

Adobe Creative Cloud Thoughts

A few years ago, my mother was organizing various things that were left behind by the school tech person who retired. One of the items was an unopened copy of Photoshop 3.0. My father told her that she should install it on the computer because it was a legally valid copy of Photoshop that had been paid for and the license was forever.

I know this topic has already been talked to death somewhat, but I wanted to put my perspective out there.

I am a pack rat. I am a few degrees away from being one of those people that appear on “Hoarders” on A & E. I can only get through my day knowing that I have access to every single thing that I might need during the course of the day. I have a bag containing aspirin, Sudafed, and a 42 oz. Thermos full of tea that I lug around to class even if I am not thirsty. I went to a conference where one of the speakers talked about living out of a backpack for several years and I almost had to lay on the floor in the fetal position breathing out of a paper bag.

Currently I own over 50 different kinds of tea. I justify it to myself in my brain by saying that if I went to Starbucks every day I would spend more on beverages (which is true, but only because it is terribly overpriced). I like knowing that if I feel like drinking a certain kind of tea, I have it at my disposal. When I get up in the morning I can pick anything I want and it feels luxuriant and amazing.

The biggest thing I hoard is sources of information. I have crates of books in the basement that I own because I want them around in case I feel like reading them at some point. I have a friend who is a beneficiary of my book hoarding because I will buy books multiple times not realizing I already own a copy.

My hunger for information was strong enough that I pay $43 a month to subscribe to Safari Books Online. I was using their limited subscription plan for a while, but I found limiting myself to ten books a month to be limiting. I like being able to know that I can look at anything I want. If I want to read a book on 3D animation, I can do it. If I want to read about how to do Storyboarding in iOS, it is at my fingertips.

One would think that I would be an example of a person who would love the Adobe Creative Cloud subscription, but I am not. I hate it. I will never use it unless I work for someone who will be paying for it.

Here, in my mind, is the difference between these services:

– I can own any book that I am currently renting if I want to. I can buy a paper version or an e-book version of any book I am subscribing to on Safari. I am actively choosing not to because if I buy a book a month on programming that will cost more than my subscription and the vast majority of those books will be worthless in a year or two. I do not need lots of phone book sized door stops cluttering up my house when I can just pay a fee each month to read the most current things.

– I do not use these programs every single day. I used to use these program every day, but I am heading in another direction and now I don’t.

A few years ago I got a graphic design and video editing degree. On the first day of Photoshop class, the teacher asked us who didn’t think they needed to take the class because they already knew Photoshop. I raised my hand. I have been using Photoshop since 1996. By the end of the first day we had already exceeded what I knew about Photoshop. That program is massive. It can do some extraordinary things.

I did a project utilizing both Photoshop and After Effects for a class and this is what I created. So I am someone who has delved somewhat deeply into these programs. I love using them. They can do great things.

But I want to own them. I want to have them on my computer where I can ignore them for six months and then play with them any time I feel like it.

The major difference, in my mind, between my Safari Books Online subscription and the Adobe Creative Cloud subscription is that Safari allows me to own the books I want. If I want to own the K & R “C Programming Language” book, I can do that. I can either just read it through my subscription or I can buy it.

Some of the knowledge is transitory and won’t be relevant in a year, but I have the option to own it if I want.

The Adobe files are not transitory. If I don’t pay for a subscription each month my files become dead weight. It is indentured servitude. You are obligated to pay every month to have access to your own work. That is not cool.

I hope that either Adobe rethinks their decision or else another company comes in and fills the void.

I own Adobe CS6 Design Premium. I got it for $250 on a daily deal site for educators and students. If I had not been able to get this deal, I would still be using my copy of CS3.

I am glad to know that my current version of Dreamweaver supports HTML5. I have not opened it yet, but it will work if I ever decide to.

I won’t pay $50 a month to use programs I only think about sporadically. I am happy to pay $300 every few years to have programs that live on my computer that I know I could use if I felt like it but usually don’t get used.

This is totally different from Netflix or Safari. Those have content. You watch a movie once and usually don’t care to watch it again. If you want to, you rent it. We have a basement full of DVDs that have been watched a few times but are gathering dust because it just isn’t necessary to own them.

It is necessary to own software that you dedicate time, energy, and file space to. You don’t use Photoshop once and then never look at it again. I truly hope that Adobe rethinks their decision or that open source solutions emerge to allow hobbyist artists and photographers to express themselves artistically.

Summer Plans

I am writing out how I plan to spend my summer so that I can formulate a plan of action about the best way of utilizing my time. I also, from past experience, know that when I put in writing exactly what I plan to do, within 13 hours the Universe steps in and thwarts all of my plans, so I want to give myself enough time to adapt to whatever changes will invariably be throw in my path πŸ™‚

This is my last week of classes. Next week is Finals Week. I am signed up to take a Linux scripting class over the summer.

After I get done with my finals I anticipate doing the following:

– Mastering Core Audio. I will work through Chris Adamson’s wonderful Core Audio book and the Apple documentation for it. I plan to spend every morning from the time I wake up until around noon working on Core Audio.

– Take a lunch/cleaning break. I then plan, around noon each day, to spend some time cleaning the house. I have gotten very far behind on my chores and I need to schedule time for myself to do these things.

– Learn Linux. This will happen later in the summer when I begin taking this class. I plan to spend two or three days working on Linux.

– Possible other skill. I am contemplating learning more about Cocoa Drawing or Cocos2d gaming. I realize that learning Core Audio is a pretty sizable endeavor, so I am not committed to doing this third thing. I may also modify my plans to only learn Core Audio in the mornings. I worry that I will burn out if I only work on one thing. If all else fails, I will simply keep working on the skills I learned in my iOS class this semester and work my way through a few of my iOS programming books in the afternoons rather than trying to learn a second large skill. The more I type about this, the more committed I am to that course of action.

My goal is to see if I can make myself work a regular schedule on my own without having a job. Roald Dahl says that being a writer is the worst job in the world because you have to make yourself get up and sit at the typewriter and write a book. If you have a job where you are expected to be there at 8:00 in the morning and you get paid even when you are surfing the Internet reading Dilbert comics, it can be difficult to motivate yourself to work hard when there is no immediate financial reward.

Working for yourself isn’t for everyone. Most people I talk to about being an entrepreneur have this grand delusion of getting out from under the boot of the Man and setting their own schedule and being free. I see that to some capacity, but there is also something to be said about having a job where you get paid regardless of whether you produce something useful or not.

Since, as of this moment, my options are to work for free for myself or to donate work to someone else, I am working for the person who values my work more, which is me.

Internships

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.

Status Updates

I have had a hectic week running around trying to get things completed, so I haven’t had a chance to update my blog on any of my activities. Caught my breath, now have a chance to give some status updates.

I got my WWDC application completed! Yay! It works and it has all of the functionality that I planned for it to have.

I created a portable wine journal. You go through, create wine tastings, and add wines to your wine list that you can then look back at later to figure out if you liked it or not.

I took it out for a test drive on Thursday. Middleton, WI had a Wine Walk that night and I went with some friends to try out how it works.

I have discovered some design issues that I need to address:

– The save function is flawed. I followed our textbook a little slavishly on the “save” function because I had not done it very often and had not sorted it out quite yet. I have the app set to save when you push the home button. So if you create a large list of wines and navigate off the page in any way other than to go back to the home screen, your wines do not get saved. For some reason your tasting gets saved, so I have a large list of empty wine tastings. Super counter-intuitive and annoying. I would be mad if I bought this app and it did this.

I figured out the save function was flawed when people would come up to me and ask what I was doing and where I got the app. I would navigate people though it, but none of my data saved and it did not go very well. Fortunately most people I showed it to were drunk and they won’t remember this and think badly of me! πŸ™‚

– I designed it for the iPad because I thought that more people would be using it on one. Going to the Wine Walk I realized that it was a pain to do so. You need two hands to type into the iPad and you are already holding your wine, so you have to find somewhere to sit down to type everything in. This would work far better on an iPhone.

I will need to, at some point soon, go in and fix these features. I got behind on my homework because I was trying to get this accomplished, so I need to put it on the back burner for a little while.

When I get this up and running I will put it up on GitHub.

I feel proud of the amount that I accomplished in the time I had allotted. I got something that works as designed. The design is flawed, not the code. I made it look nice. I included documentation about all of the features I planned to include when I have more than a week to work on it. I figured out a useful app to make that was limited enough that I could complete it in the time allotted. I successfully accomplished what I set out to do and I am okay with whatever the outcome is (but I would be far happier if I won the scholarship to WWDC!!).