Jumping off the Boat

I have been working on implementing my app for school. I found a lot of documentation about how to code the parts of the project that I am doing. I have access to at least two people at a moment’s notice to ask questions to about my project. I theoretically have everything I need to get my project done.

I am having trouble making myself do it.

I know that the only person putting pressure on me is myself. I know that I have people who are happy to help me get through my project. I know that my deadline is a month in the future. I know I can make my project less hard if I can’t figure one part of it out.

It is still hard to work on.

I am afraid of failing.

For the last year all I have cared about was learning Core Audio. I worked my butt off trying to establish enough knowledge to be able to even approach it. When I was in Boston at the Core Audio workshop I felt exhilaration because I knew enough about what we were doing to understand everything we were talking about. I learned stuff, but I was only able to make those connections because I had a solid knowledge base with which to draw from.

I am afraid that I won’t get this done. I am afraid I will fail myself and my teachers. I am afraid I will fail my family who gave me the time and support necessary for this opportunity.

This reminds me of when I tried going scuba diving the first time. They took us out on this rickety boat over choppy waters for nearly an hour. I got into my equipment. I was ready.

They told me to jump off the boat. I couldn’t do it.

I stared at the short drop off the edge of the boat through my mask and I felt paralyzing terror. I knew that I could breathe and that I had a floatation device on that would immediately bring me back to the surface. I knew my wetsuit would keep me from being too cold. I just couldn’t jump.

I used the ladder to get into the water, but I didn’t actually go through with it. When the instructor wanted to take me under water and take my regulator out of my mouth and have me clear it I knew that I was going to choke. I was hyperventilating and I knew I would inhale sea water and have to get CPR.

There is so much to success that is completely mental. I know I am smart enough to do this project. I know I am a good developer and that I will have a great career, but doing something for the first time is terrifying. Finding the first real job is terrifying. Fearing that you will screw it up and never find another one is scary.

A lot of people, including myself, think that all we need is a shot. We have elevator speeches prepared in case we have 30 seconds with someone who supposedly can give us that shot. No one talks about what you do after you have their attention. It’s easy to think that if you could just have a chance that everything would work out. Getting that attention is the easy part. Delivering on your promise is where the work and the risk happen.

I have done everything I need to do to complete this project. I established my knowledge base. I absorbed my vocabulary. I forged connections with people who can give me advice. I have my app planned out and the design finalized.

I will not fail. I will do this. I will succeed.

I Don’t Want to Bother You, But…

I am currently working on trying to figure out AV Foundation. AV Foundation, very much like the rest of Core Audio, is not very well documented. It has been broadened and expanded the last few years and a lot of the material out there in the world is from 2 years ago, which is a century in Apple development time.

I feel unsure about how I am proceeding with this. I go into the Apple documentation and see that there is a programming guide! Cool! This will be easy.

Then I look online and I see developers talking about how the guide is really out of date.

I ask a developer what to do. His answer: Watch the WWDC videos and visit the developer forum.

I get ready to do that and I notice that the guide was just updated less than two weeks ago. Great! That means it is up-to-date and comprehensive, right? Not necessarily. Watch the WWDC videos and visit the developer forum.

I don’t want to bother anyone. I feel bad that I am asking things that keep getting the same answer and I worry that people think I am dumb or I am not listening to what they are saying. I don’t want to be a time suck to people who are high level developers who need time to actually do work.

I don’t know if this is just a stage everyone who is interested in audio programming goes through, where you think, “There has to be more than just this.” Yes, somehow people who are experts on this stuff don’t know that there is some super secret easy guide to doing these things that I am going to magically find because I am a special unique snowflake who doesn’t have to deal with the same issues as everyone else :p

I really want to be a self reliant person who can look things up and figure things out. I keep hearing from two different camps of people. One camp says never to ask any questions because it will make you look stupid. The other camp says that asking questions is a good thing to do.

Earlier in the year I could not get a VM working on my computer. I took it to my teacher. He tried one or two things for a little less than a minute then immediately got up and started asking the teachers around him about whether they encountered that error before and how they would fix it. Five minutes later we resolved the issue and it was working.

I think it is good to ask questions, but I get wary when I notice that I am getting the same answer to a lot of the questions I am asking. I hope that if I can show that I listened to what I am being told and can follow through with it that hopefully my earlier obtuseness will be forgiven. Apple development is a small community of people and audio development on the Apple platform is an even smaller community of people and I don’t want to be known as the person who can’t figure things out.

Okay. Existential crisis over. Time to get to work!

AVFoundation

I began work on my Core Audio app yesterday. I had a whirlwind of activity the last week or so and yesterday was my first day to really sit down and work on my app.

One of the things that was invaluable to me to learn was how to translate a command-line application to an iOS application. Instead of creating a user data struct, you take those parameters and set them as properties. The methods then get placed in the View Controller instead of the main method.

With those vital pieces of information and a lot of sample code, I figured I was off. I knew I needed to figure out how to set up the recorder, so I looked at examples of how to do this. I had an example for audio queues and audio units.

Things turned out to be more difficult than I anticipated.

There was a lot of code that was either hard-coded for the command line or looked for parameters that were not going to be available on an iOS device.

I spent a few hours trying to cram a square peg into a round hole. It was a little frustrating and I started to feel discouraged. My “glow” from the conference was starting to wear off and I began to realize why every talks about how incredibly hard this stuff is.

I decided to attempt another approach. I knew that AVFoundation was created a while back to make things easier for people who want to do relatively simple things. I wanted the recording process to be easy because I don’t plan to do any processing with it until playback.

I found a tutorial on AVFoundation.

I spent the rest of the day working though this tutorial. This was some of the best time I spent on this project.

AVFoundation was designed to work with an iOS device. It was the right tool to use for the recorder. I could have spent a week wrestling with trying to make a different framework behave the way I wanted to. At that point I probably would have asked the Core Audio mailing list or Stack Overflow and everyone would have been like, “Dude. Just use AVFoundation.”

I think it is always worthwhile to explore the simplest way of accomplishing a task. It was possible that the tutorial would not have helped me find a solution, but I think that dedicating a few hours to looking down a path that might work is a wise way to proceed with something you have not done before.

I did not do any work on my app today. I had class this afternoon. I find it difficult to focus on learning something new if I know I am going to leave in a few hours. Instead I spent my time this morning doing a multithreading tutorial.

During class this week we talked about Core Data. I also saw a talk at CocoaConf Boston about Core Data that made me feel like a complete idiot. So I looked at Safari Books Online and I found a rough cut of “Learning Core Data for iOS” by Tim Roadley. It is a whole book about Core Data where you work through a large and complex program that showcases the capabilities of Core Data.

Core Data is hard, but having a large tutorial where I can read about something, type out code, and not have to make any of my own intuitive leaps is about as much as I can do on days I have to leave the house.

I am hoping to improve my toolbox to learn how to do hard stuff. I also want to figure out if Core Data is a good way to store and process audio data.

I have created a more realistic timeline of when I hope to finish my app. I am going to take the next two months to work on it. I am going to spend that time polishing my skills with debugging tools, instruments, version control…

Goal for the end of the year is to have a nice app to show prospective employers.

Further updates tomorrow!

Learning Core Audio

CocoaConf Boston

I went to CocoaConf Boston this past weekend. I feel very fortunate to have been able to attend this event. I won a ticket to the conference and I had a lot of help just being able to get there.

This was a life-changing weekend for me. I spent a day doing the Core Audio workshop with Chris Adamson. This workshop was one of the first times that I got into the flow with programming.

Don’t get me wrong. I really like to code. I have just noticed over the last few years that I wasn’t getting the same “high” I was getting when I understood concepts before. I would spend a while debugging a huge project and when I got it debugged and working I never felt like “Yes! I got it to work! I am amazing!” I always just felt like, “Okay, that’s done. On to the next thing.” While the project isn’t working I feel miserable and unhappy because I didn’t get it perfect yet. I started to feel like a masochist because I was going through all the pain but never got the emotional payoff at the end.

This past weekend was different. When I grasped concepts with Core Audio that I hadn’t known before I felt my mind expand. The sky opened and the rapture came. I was so high off of learning this code that I could not sleep for almost a week. I was completely wired.

I want to briefly explain my interest in Core Audio. One of my self-appointed titles is “High Priestess of Audio Programming.” I am not saying that because I think that I know more than most experts on the topic. Far from it. I am a beginner and I have a lot to learn.

I love sound. I want to fully understand it and get as close to merging with it as I possibly can. The best analogy I can come up with is that for me learning audio programming is like a hard core Christian learning Aramaic so that they can read the Bible in the original language. They want to get the direct words and meanings without being passed through the filter of a translator who might have their own agenda.

I know giving myself that title is probably flaky and arrogant. I will probably have to drop it at some point in the near future but I would love it if I can keep it with people knowing the reason behind it.

I was exposed to a lot of ideas this past weekend. I was exposed to the idea of writing a book and speaking at conferences. I got distracted by a lot of shiny objects and I got seduced by the idea that I am where I will probably be in a few years, but I am not there quite yet.

My goal is to be a hard-core, bit eating programmer. I want to master the hardest things I can find. I want to get as close to the metal as I can. I want to be the person who writes a language or a framework that everyone uses. I want to be Linus Torvalds or Ada Lovelace. I do not want to be the token female programmer who got hired for diversity reasons.

Woman Programmers vs Women Who Code

I may or may not have complained about this already (probably have), but I am annoyed by the recent women’s programming outreach programs. I like the idea in theory, but all of them are along the lines of, “Here! We can teach you Ruby in three weeks and you are now a programmer! Yay!”

You can’t master programming in three weeks. Sorry, but no. I don’t like things where you type in one line of code then lots of magical voodoo happens. I love C for heaven’s sake! I want to learn some Assembler and kernel programming. I want to learn more Linux and shell scripting and regular expressions. At some point in the future I want to learn the math that is being done by my computer for DSP so that I can understand the language of sound.

I wish that these programs would focus on longer-term goals. I wish that they would tell women, “Hey, this stuff is hard. Take 2-3 years and really focus on understanding difficult concepts.” Support them when they think they aren’t good enough because they don’t understand something the first time. No one does. I usually have to expose myself to something about three times before I begin to process it. I can seriously feel my brain rewiring when I am learning a new skill. It takes time. Throwing someone into a week-long workshop to train them to be a code monkey doesn’t count.

My First Real App

That being said, I am laying out my plans for my app. I know that it is one thing to say I want to be a hard-core programming geek, it is another to actually be one.

I want to make a synthesizer. I want to program custom audio units and put together a huge, complex graph of audio effects. I am not there yet!

I am trying to come up with a project that will take about two months to complete that is impressive enough to get me my first job. I need to make the scope small enough that I can get it done in a reasonable amount of time but also impressive enough to capture someone’s attention.

My plan is to make an app that is a sound recorder. When the user pushes the record button a modal view pops up that has a user interface that shows audio level metering and the amount of time being recorded. If you look at Logic, when you begin recording there is a green bar that shows the amount of time being recorded. I want it to look like that. This user interface is the most difficult part of my project and it will be done last.

After the user records their voice and dismisses the modal view they will be able to play their voice back with some effects. I have two sliders, one that controls pitch and one that controls speed. I also have three buttons that will be mapped to various audio unit effects. I am thinking about having a distortion unit, a reverb unit, and I need to determine the last one. I am going to look through the audio unit properties header file for something that looks like it will fit into the rest of the project.

I started getting all confused and turned around. Where do I start? How do I store my data? How do I make my user interface? There is a level meter parameter in Audio Queues, how do I map that to an animation? Do I need to learn Core Animation?

I spoke to my teacher Eric Knapp. He was imminently practical. He told me to start at the beginning. Make an app that records a sound. The next step is to play it back. Then go from there. When he puts it that way…

Systems, apps, and games need to start simple and then get more complex. You need to make sure that the simple things work first and then you add complexity. You can’t immediately set out to create a complex system or else it will fail.

Finally, after I get everything coded I want to try to design the user interface. I have a degree in video production and graphic design. I have not used these skills in a very long time because I honestly don’t want to be a designer as a living. I am a fairly sensitive person and when you are doing something creative you will deal with rejection a lot. I don’t love design enough to persevere through the vast amounts of rejection my work will probably receive. I know that design is a matter of taste and that if someone doesn’t like my work it doesn’t necessarily indicate that I am bad at what I do.

I do know enough about design that I can hopefully make my project look like I didn’t ship it with developer art.

I will keep updating my progress on this application. My biggest enemy is lack of focus. I keep hearing from a lot of different places that whatever I happen to be working on at any given point is wrong. I start worrying about hedging my bets and learning a few “safety skills” in case this whole iOS thing does not work out.

I can’t do that anymore. I have to put all of my effort behind one thing and have faith that it will work out. Doing a few things badly is worse than doing one thing really well.

Moving forward. Not looking back.

Because it Also Needs to Be Said

Yesterday I got immersed in a conversation on App.net about this incident. A female designer working for a Ruby shop in Ohio was sexually assaulted while drunk at a conference by her boss.

This is causing a lot of discussion about whether or not we have a community of “brogrammers” who feel this behavior is appropriate. I have spoken to several female developers who have had it with the community and are planning to leave because of the experiences they have had.

I want to add my two cents in here.

I have no doubt that this woman was assaulted. I have been assaulted many times (I prefer not to get into the details at this point) and the way she describes her feelings and why she behaved the way she did is consistent with every story I have heard from a real assault victim.

Now, I want to point out that a lot of people did the right thing in this situation. A co-worker noticed that things had gotten out of control and came over to diffuse the situation. Justine reported the behavior. The HR department determined that what happened was inappropriate and they let go of the person who did so.

THIS DOES NOT USUALLY HAPPEN!!

Most assaults that happen are not done by people in public. Had this assault happened in a more private place where others didn’t observe it, I would like to think that the business still would have done the right thing, but the odds are it would have been easier to ignore.

I have been to a half dozen conferences over the last year. I am actually going to another one next week in Boston. I am traveling by train by myself. I have never made a trip by myself before. After hearing these stories it does cross my mind that I am vulnerable. I enjoy going to the bar after the conference and chatting with my fellow attendees. I know that the possibility exists that someone might drug my drink and I would wake up in a room other than my own. I don’t think that is very likely, but I think about it.

I was at a conference in June where there was a lot of alcohol. The party moved to a weird old building on campus in Madison where I and people I had met a few hours ago wandered around drunk after coming in from the rain. I had an amazing time that night, but I knew there was always the chance that something could have happened to me.

I think my risk of being attacked is small enough that I do the things I was to do with my life. I accept that the possibility exists that someone might try to do something to me. I make sure to only spend time around people that do not make me uncomfortable. If someone starts to make me uncomfortable, I leave that situation.

At my last conference, Madison Ruby, I had a person attach himself to me at the end of the conference. After knowing him for all of an hour he acted like he owned me. When I tried to leave him to be around other people he came over and told me that I had “really shitty body language” because he couldn’t read why I had left him.

A friend and classmate noticed this douchebag’s behavior and asked me if I needed help. I said yes, I did. So any time this guy tried to be near me my friend would pointedly insert himself between the two of us. When the guy would be verbally possessive of me my friend would interject himself in the conversation and mess up the guy’s game.

I think what he did was awesome. It really does not take very much to support another person who is being made to feel uncomfortable and do things to make them feel safer. Everyone should do this.

The takeaway I want to interject here is that I feel being a woman who is in programming, engineering, name-male-dominated-field here, is like being a character in a horror movie. Everyone has that thought of watching the blond virgin wandering into the dark alley and you yell at the screen “Don’t go in there!! It isn’t safe!”

No one is (or should be) saying that the woman being murdered by the serial killer in the dark alley had it coming for doing something stupid. No one should say it’s okay for the killer to kill anyone for making a really dumb choice. Even if you put the onus on the serial killer for being 100% in the wrong, the blond is dead.

With Justine, she got about the best result that anyone can hope for when reporting an assault. That didn’t change the fact that she was permanently damaged from the experience.

You need to be more careful.

I wish I did not live in a world where I have to say that, but I do. Don’t close yourself off to every person at any conference, job, or whatever. But do listen to your gut and monitor your relationships to make sure things do not go too far.

Long before this reached the assault stage Justine could have left. She could have said things were too intense and she could have gone home. She tried to stick it out and show it didn’t bother her. That was a mistake.

Again, I am not saying that I think she deserved this or that she is wrong. I am simply stating that bad situations have inertia. They will continue to get bad until an outside force acts upon it to make it stop. If you nip them in the bud early then things are less likely to escalate.

You have control over your body and what happens to you. You do not need to cede your right to control your body to anyone that you do not want. You can leave. You can scream. You have choices. These choices get more and more limited the longer you wait. If something makes you uncomfortable, leave. You will not get anything out of trying to stick out a bad situation.

Stay safe. Be vigilant. Help others who look like they are in distress. Have a buddy to watch your back.

Audio Queues and Audio Units

I am working on doing a Core Audio project for two of my classes this semester. I was supposed to do an internship, but nothing panned out. I am also supposed to work on creating an app to put on the Apple App store for my Professional iOS development class.

Currently I am working my way through the book. I am trying to get all the way through before October 23. I won a ticket to CocoaConf (thanks guys!) and before the conference Chris Adamson is doing a workshop on Core Audio. I would like to get through the books once before I go to his workshop. I know part of the point of the workshop is to learn Core Audio but I would like to be prepared and get as much out of that experience as possible.

Initially I was going to do a synthesizer app. I met a person at a CocoaHeads meeting who has been programming them for the last 15-20 years. He and I met up for coffee and he showed me his code. He also told me he has been working on his synth for four years. I tend to bite of more than I can chew. I have reassessed my project to try and accomplish something a little more achievable.

I am now focusing on creating an app that records your voice and plays it back. After I get it to that point I can add a levels meter and maybe some effects.

The first half of the Core Audio book goes over some audio basics and talks about how to create a recorder using audio queues. Perfect! I can take the command line programs as a starting point and integrate them into an iPhone app that has a user interface.

However, from past experiences, I have found it is a good idea to continue learning things before prematurely ending. I am glad that I did this.

The middle of the book is about audio units. Audio units allow you to do things that queues do not. If my plan was to just create a recorder that plays back queues would have been sufficient. Since I want to add effects to my app, I will need to utilize audio units.

So my progress is that I am about halfway through the book. I have found some working space and I am able to focus on plowing through the book. I really want to focus on just doing this, but I have other classes I need to work on as well. I have not worked on my JavaScript class for a week and we have a group project in the iOS development class that I have let slide. I am not even going to get into my Java class!

I think tomorrow and this weekend should be spent on some of these other things. I know I need to focus on Core Audio, but I can’t just drop the rest of the balls I am juggling. I am learning to delegate my activities and to make sure I don’t let anything slide for too long.

I also would like to start adding some small audio projects to my GitHub account. I need to figure out what will be indicative that I know how to do this without putting anything too valuable up on there. I think the former will be harder to pull off than the latter.

Twitter App Tutorial

One of our assignments this semester is to create an App.net client for class. I have been looking for some clear-cut explanations about how to make a microblogging app utilizing an API, but it has been rather challenging. Most of the documentation out there has been about how to create a Twitter app.

I decided to spend today working with this tutorial explaining how to create a simple Twitter app.

I have to say, I am disappointed with some of these tutorials. Every time I try to run one it crashes on me with weird unknown errors. The debugger says that the code is fine but then when I try to run it the program crashes.

For this tutorial I was able to download a completed version of the code and run it on my machine. It looks like the same thing I have been doing, so I really don’t know. I am wondering if I have something set up incorrectly in the new Xcode.

One thing I will focus on soon (probably not today) is getting better at debugging things. I will add more NSLog statements and breakpoints to see exactly where my code is going off the rails.

Anyway, back to the point of this exercise. I hoped that doing this tutorial would give me ideas about how to do an App.net client. Sadly, this does not. There is a built-in framework for both Facebook and Twitter that was created by Apple with a lot of methods coded in to maximize productivity for coding clients for those two technologies.

Interestingly, there are three microblogging sites that the frameworks supports. The third one is Sina Weibo, or the Chinese equivalent of Twitter.

I did notice that the site I am going to for most of my tutorials has everything in either English or Mandarin. I guess this is fitting in with Apple’s apparent market strategy of targeting China. I should get my butt in gear and actually learn Mandarin one of these days. I just worry that knowing Chinese will be the equivalent of learning Japanese in the 80’s.

Final verdict: This tutorial would be fine for someone wanting to write a Twitter client but it doesn’t help me very much currently with my App.net client. It does give me an idea of what a social networking framework would include and it might indirectly help me when we get into ADNKit and some of the other user created frameworks out there.

I will probably come back to this one when I start delving deeper into the finer points of debugging. There is no reason that I can see why my code would have crashed and I need to delve deeper into figuring it out.

Auto Layout Tutorial

I have a list of things that have been integrated into Xcode that I have wanted to take a look at over the course of this semester. I randomly lit upon Auto Layout. It is something we kept disabling last semester and I wanted to get a feel for what it is like.

I chose this tutorial to explore auto layout. It is from iOS 6, but it isn’t like things change that much, right??

I ran into an issue with using this tutorial. This tutorial does not utilize storyboards. As far as I can see, .xib files are not really supported anymore. You don’t have the option to not include storyboards any longer.

I figured it wouldn’t really be that big of an issue. I would just follow the same directions that I would if this was a .xib and not a storyboard.

There have been other auto layout changes. It used to be that when you put an object on the view it would automatically create constraints. A lot of the tutorial was talking about how to deal with the automatically created restraints. Now that they don’t appear any longer, things are slightly more complicated.

I am not going to continue with the tutorial for the time being. I get an idea of what Auto Layout is like. I know I will need to mess around with it in the future.

It also isn’t a priority to me at my current moment. I am still in the process of coding my apps for functionality, not for aesthetics.

I feel confident that when I get to the point where this is relevant for me that it won’t be too difficult to grok.

Core Audio and Co-Working Space

Yesterday I spend my day working at Bendyworks, a Ruby/Coworking shop downtown. On Fridays they have a “Growth Day” where people can work on sharpening their tools. I have been told by people who work there that anyone can come to work on things, but I have asked one the owners if I can come in anyway.

I spent the day working through my Core Audio book. I decided about a week ago to pursue creating a Core Audio app this semester. I got behind on some of my other classes, so I spent a lot of time this week trying to catch up with where I am supposed to be (I still need to finish my Ajax project, which I hope to complete this weekend.)

I spent the day working on the chapter regarding recording. I have worked through about half the book before and I am finding the code to make more sense the second time through. I am planning to spend the next few days seeing how far I can get into the book before reassessing my application idea and solidifying its specifications.

I have found Bendyworks to be an ideally suited environment for working. It is a calm and peaceful place full of energetic, talented people. It is one of the most safe and comfortable places I have ever been.

I know that they charge a certain amount for co-working space. I can’t afford to rent co-working space at this junction of my career. I know that being able to code there would help me get through all of my projects this semester.

I am planning to reach out to the owners to see if it is possible for me to continue to code there. I would like to explore if it is possible to negotiate a reduced rate or something. I have heard that others have just showed up and basically run businesses out of their space without paying the fee, but I don’t want to do that. I would like to be upfront about what I am trying to accomplish and see if we can figure out a way I can set up and work.

So, the plan for the day is to set forth with Core Audio. I have several long-term projects that I need to work on and I am trying to balance the amount of time I spend on each aspect of the projects. I will post an update about my progress later.

My Semester Project

Background

Back in Fall of 2010 I came back to school to learn computer programming. I came in hopping to achieve a skill in something like Java so that I could get a decent job doing computer programming for a health insurance company.

I waffled my way through the first year and a half of the program. I treated it very much like my Journalism degree where you could blow off the assigned reading and ace the midterm without studying to much. This was a very bad idea. After four semesters I had unofficially dropped out of the program and wasn’t really sure what I was going to do with my life.

I decided a year ago to dedicate myself to programming. I wanted to master it. I wanted to be one of those programmers like Andy Hertzfeld who was one of the top people in the field who helped create the Macintosh operating system.

I gave myself a year and a half to get there. I had three semesters left to finish school. I buckled down and turned learning programming into a full time job.

This is the last semester. This is the semester where I need to begin the process of leaving school and entering the workforce.

Advanced iOS

One of my classes is Advanced iOS Development. One of the requirements we have is to create an app with the idea that we will be able to submit it to the App Store.

I really wanted to work on a Core Audio app. One of my goals is to master Core Audio. I haven’t had a chance to learn this as quickly as I wanted to, so I figured, “Great! Now I have to learn it because it is my semester project!”

I have since figured out that this is a really bad idea. I am super busy this semester and trying to learn something difficult on top of that would result in bad things happening.

What I am planning to do is to refactor my WWDC app submission. I applied for a scholarship with an app I wrote in two weeks. The app is a Portable Wine Journal.

I have the original version of this at Github.

The app “works”, but it doesn’t work the way I would like it to work. It needs a lot of refactoring.

I have a massive list of things that need to be added, upgraded, or fixed:

  • Change to Universal from iPad only
  • Add Apple Docs
  • Change how the data is stored to Core Data
  • Change the point at which data is stored, now if you navigate away from the page the data won’t save
  • Create a picker for grape type rather than make the user type each one in, allow the user to add grape or fruit types
  • Create a picker for region type, also allow the user to add ones they commonly use
  • Figure out how to locate the winery on a map and store the information
  • Figure out how to set the text box up to search specifically for wineries and allow people to see them in a list when they start typing
  • Put a slider in for dryness level rather than typing a label
  • Put a switch in so user can choose to label the wine by name or grape type (wines usually don’t have both)
  • Allow the user to select the wine in the table to modify the form
  • Allow for editing and deletion
  • Format date better
  • Figure out a better way of tracking wine ratings
  • Make the view grouped and figure out how to get the background to show up
  • Do some more general design things to customize the app and polish it

I will be using this blog to track all of the changes I make to this app. I will figure out how to show the changed I make in my GitHub account so that you can go through and see all of the changes as they progress.

I am also going to document other projects, classes, and processes in this blog that I am currently working on. I have let the ball drop on this blog for a few months and now it’s time to get back to work. Geronimo!