I’m feeling absolutely terrible because I snapped at someone on the Cocoa-dev list today. I was super bitchy and unhelpful to someone who asked a simple question. It was completely inappropriate and uncharacteristic of me. I hate it when I see people getting impatient with others who are simply reaching out to the community for guidance so I’m kind of mad at myself now.
The reason that this is bothering me so much is that I love to help people learn, especially beginners. I’ve always been this way. When I was in school, I always got jobs in the computer labs because I enjoyed helping people figure out how to use the software (getting keys to the equipment room was nice, too). When I moved to New York City years ago, with no real clue about what I was doing with my life, I got a job at the Soho Apple Store giving lessons in the theater. At the time, we gave free lessons in Final Cut Pro, After Effects, Photoshop, Shake, etc. It was great because the store let us design our own lessons for the Pro Apps. We didn’t have to give the standard Keynote presentation you see in Apple Store theaters today. We really taught people there and we had an audience that wanted to learn and engage with us. I admired the service the store was providing the community and I had a blast.
The guilt I’m feeling right now is also magnified by the growing visibility of this blog. I really had no idea that anyone, other than the few people I know personally who develop Mac software, would be interested in reading any of this. I started it so that I would be forced to articulate my thoughts and ideas in writing. It was like a school assignment for myself - an exercise to stretch my brain. But the internet is fast, especially with services like Twitter, and the numbers have been rising every day. This is good and bad. Good because I find myself in a position to help people again, just like the good old days at the Apple Store, bad because I have to take some measure of responsibility for what I say here and places like the Cocoa-dev list, and this isn’t what I was after when I started out a month ago.
But, that’s what I have so I’d like to introduce myself for real and explain my intentions a little bit. I know that the couple of sentences on my ‘About’ page aren’t very forthcoming.
My name is Cathy Shive and I’m a Cocoa developer. I work for a New York City company called Box Services, LLC. Their business is digital photography with a focus on the fashion industry. I’m part of a small software team that develops their in-house tools. I love the projects that I work on at Box and I admire my teammates. They’re incredibly talented and I learn from them every day, more than I ever let on ; )
My background is in arts and design. I’m a self-taught programmer. Basically, I was a power user until I got soooo into software that I had to learn how to make it myself. My interests have always been in interface design. My first apps were video apps centered around some kind of novel interface idea. I learned how to program on a Mac using the QuickTime API, OpenGL and C++. Once I started using Cocoa and Objective-C on a regular basis, I quickly learned to appreciate the importance of a good API and my “interface” interests grew into developing frameworks and, what I hope will be, good APIs. I’m also completely obsessed with software architecture and ‘design patterns’. I can’t quite put in words why, but it fascinates me to no end.
As I mentioned earlier, I started this blog as a way to develop my ability to articulate the thoughts and ideas that I have about my work. When I started, I didn’t have a clear plan set for what the content would be exactly or who my target audience would be, but I knew that it would involve UI design and programming UIs with Cocoa and that it should be interesting to both designers and developers. I thought that each could learn a little about the working processes of the other. I truly believe that these two fields are going to merge in a big way in the coming years. The Mac platform is a perfect place for this kind of union because it has a very rich history in both fields. We stand on the shoulders of giants like Alan Kay, Susan Kare, and Jean-Marie Hullot. I can’t think of a place I’d rather be.
My first post was a criticism of a feature in the Cocoa framework. I’m going to continue to do this because I see a specific weakness in Cocoa that I believe needs to be addressed. It’s probably obvious by now, but I’ll go ahead and name it clearly. Cocoa should be on the cutting-edge when it comes to support for interface development, but as it is, there are very important features that are barely usable – the layout and styling features. These are the most basic tools that an interface designer and developer needs to do their job. In the case of styling, there is no strategy at all and in the case of layout, there is one very broken mechanism. Imagine if something like the key-value observing mechanism sometimes forgot notify observers of changes in the values they’ve registered to observe. That’s how bad it is to an interface developer when they resize their views and they get totally messed up and stick to some seemingly arbitrary place in their superview. The work-arounds are messy, laborious and hard to maintain when the project is semi-big. I’m going to try to keep further criticism on this topic and the topic of styling constructive but I imagine there will be emotional rants every once in a while.
I want to keep exploring the Cocoa framework with tutorials. The tutorials I post on this site are as much for my own learning as they are for others, so please take it all with a grain of salt since I will be exploring some unconventional ways of doing things. In fact, maybe I’ll stop using the word ‘tutorial’. I’ll think of something else. The reason that I use this format is that there’s no better way to learn than to have to explain something to someone else. I really appreciate getting people’s feedback on these posts. I work on certain assumptions I’ve formed through my own experience and I’m glad when someone can show me a different way to look at something. I’m self-taught, so I have a very cathy-oriented way of approaching things.
I also plan on writing more design-specific posts. I want to talk about graphic design as well as interaction design and also about the products and concepts, old and new, that inspire me to do the work that I do. Since I spend so much time coding, it’s hard to get into the frame of mind necessary to write about these things, but it is important for me to keep them on the forefront of my thinking as much as possible.
So that’s me and those are my intentions. Thanks for reading and for your comments. I apologize again to Luca, who I snapped at in public today. I’m totally embarrassed about that.