Hi, I’m Cathy

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.

Tags: ,

16 Responses to “Hi, I’m Cathy”

  1. Jeff Says:

    I am very excited. I am that brand new programmer you are talking about. I took a C++ course last semester, I’m starting a Java class tomorrow, I just received my copy of Programming in Objective-C, I’m getting Aaron Hillegass’ Cocoa Programming book, and I am enjoying following along “tutorials” on this weblog and many others. I feel like I am starting in the middle, like there is a parade going by, I don’t really know where they started, they look like they are having a great time, I don’t know exactly where they are headed, but I really want to be in the parade, so I am jumping right in, learning the steps as they come. The first time I see something it’s up to me to figure out what’s going on, or I can ask the guy next to me, but there is not a teacher in the front anymore, explaining and drilling. My biology degrees are only helping in philosophical ways. I’m excited!

  2. Andy Lee Says:

    There’s almost nothing I hate more than regretting something I’ve said or written.

    That said, I didn’t think you were out of line at all in your email to Luca, and I was kind of surprised by your apology. I suspect you were *feeling* bitchier at the time than your words let on, and then you felt guilty about those feelings.

    Keep sharing the Cocoa love with us. It’s important.

  3. Jean-Michel Says:

    I’m not sure how I got to your blog, but I added it right away to my feeds. Not sure how this will sound (I mean it in a nice way) but it’s nice and refreshing to read a girl writing about geeky stuff.

  4. Scott Says:

    Cathy, you’re being far to hard on yourself about the list posting.

    It wasn’t that big of a deal.

    I can’t wait for more of your posts to the list and here though. Great technical content, combined with good writing.

  5. Scott Stevenson Says:

    Your background sounds similar to mine, and I’m glad you’re writing about your thoughts on this.

    I’ve been thinking about your posts on NSView lot, and I think maybe the reason the view layout system doesn’t come up as a major obstacle is many apps use custom composite views now, where as almost all apps in the past used combinations of stock views and controls. That doesn’t mean there isn’t room for improvement, and I think Core Animation and other new frameworks are a glimpse at that.

    You know who does a good job of combining UI design and Cocoa programming? Sofa. You’ve probably heard of them. They wrote Checkout.

  6. Cathy Says:

    yeah, i know that guy who writes their UI code pretty well. needless to say, we get to chatting about this topic pretty often. : )

  7. Cathy Says:

    Andy and Scott A:

    You’re both probably right about the post. Guess I’m pretty senstive…haha.

    Jean-Michel:

    There’s no bad way that I could take that. Thanks : )

    Jeff:

    I know, it is exciting! Welcome to the parade!!

  8. Paul Robinson Says:

    Actually your response was very gentle, even more so when compared to some of the more scorching replies that sometimes send new posters running for cover!

    Probably you are one of these extra, extra nice people who rarely even feel snippy, much less express it.

    This is a great blog and you have a great writing style. Please keep the posts coming.

  9. John C. Randolph Says:

    “I’m feeling absolutely terrible because I snapped at someone on the Cocoa-dev list today.”

    Heh.

    I’ve bounced on a few heads in my time for messages that I thought were unduly hostile to newbies, and yours wouldn’t even have registered as unfriendly.

    Speaking as a former Cocoa-dev moderator, I’d say listen to Scott Anguish. ;-)

    -jcr

  10. Cathy Says:

    jcr - I think Andy Lee hit it right on the head. I was probably feeling much more bitchy than I let on in my words and felt guilt about that.

    Either way, the list is going to be avalanched with beginner’s questions with all the new interest in Cocoa and its important to me to be helpful. The list is how I learned - I think it’s the best Cocoa recourse out there. :)

  11. Lee Says:

    You are usually well spoken and are not quick to say something that you regret and I think this is another case of that. You didn’t say anything negative.

    Oh, and I too love your blog! It’s like sitting in the same office with you again! ;-)

  12. Cathy Says:

    Lee, yeah I miss that!! I was just telling Dirk yesterday about the ‘one hand on the mouse and one hand on the keyboard’ maneuver you taught me ;)

  13. Lee Says:

    hehe! it works as long as you don’t bob your head or snore!

  14. John Says:

    “…and I think maybe the reason the view layout system doesn’t come up as a major obstacle is many apps use custom composite views now, where as almost all apps in the past used combinations of stock views and controls.”

    In other words: existing developers have written their own implementation of almost all view classes, because the stock ones were not good enough functionally or artistically. Good for them. But, what about the barrier of entry? What about new developers. 1. learn cocoa 2. rewrite all UI components. 7. after a long while, get back to your idea.

    I would vote for Apple to include ProKit in standard sdk. They could still style their own apps differently to distinguish themselves, but the functionality would be there for other developers.

  15. Scott Stevenson Says:

    @John: I think you may have missed my point. The momentum of custom views is not about the stock controls not being “good enough,” but that many apps want to have their own identity. For example, I don’t think it makes sense for Apple to generalize the type of views used by Delicious Library or Front Row.

    In some cases, generalization does make sense, which is why IKImageBrowserView showed up to serve iPhoto-like needs. But IKImageBrowserView is also an excellent example of why customization isn’t completely simple. The view is not just a bunch of static bitmaps — there are animations, behaviors, and so on. All of this could be customized via API in theory, but somebody would have to figure out a way it could be useful across a wide range of cases.

    Understand I’m not arguing against Cathy’s idea. I think it makes a lot of sense. But for it to be implemented there would have to be some feedback filed, preferably with specific examples.

  16. Tim Buchheim Says:

    I love your blog, Cathy.

    It’s good to have someone pointing out the flaws in AppKit. We all know that they’re there, but over time they get so ingrained in one’s way of doing things that people end up defending poor choices that NeXT or Apple made years ago rather than thinking about what can be done to fix things.

    So it’s quite refreshing to see thoughtful analysis of what’s wrong in Cocoa and useful ideas on how to go about fixing them.

Leave a Reply