Welcome to the Deviating Eye blog. This blog will bring you news about Deviating Eye software and graphics offerings, programming and graphics news and views, and on rare occasions ruminations on life itself.
Migraine Update
It’s been four years since my last post. In that time, nothing has helped my chronic daily migraines. They’ve even worsened a bit in severity, and I’m so sensitive to light, sound, smell and touch that nearly everything triggers the migraines or increases their severity. I rarely can go outdoors, even at night, because any bright light, loud noise, or motion of the car can set it off. Even worse, I can barely concentrate on any tasks, and even programming books are difficult to read now.
I’ve recently been (unpleasantly) surprised by a disturbing new symptom. It feels as if the skin on my feet and legs has been splashed with acid — an extremely painful burning sensation. It seems to be similar to diabetic neuropathy, but I’m not diabetic. This will require a thorough neurological workup and blood tests to rule out temporary causes and find out if there is nerve damage of some sort.
By the way, for all of you who think that migraines are “just a headache”, here’s a list of some of my symptoms. Most of these occur every day, with the exception of the speech and skin pain problems, which are less frequent.
Chronic Daily Migraines Suck
Before we launched this web site, I had great hopes for creating new software for the Mac and iPad. Things have not gone as planned.
First, there was a disaster in which both my Mac source code and the backups of that source code were destroyed, along with a lot of our other possessions. Still, I was confident that I could recreate some of the software since most of it involved graphics and animation programming that I’d been doing for my whole career in education and research. I also still had my programming notes, and my wife had not lost the background graphics files she created for these programs. Unfortunately, this proved to not be the limiting factor in my progress.
For the past two decades, I’ve been battling chronic daily migraines. The migraines were at first relatively rare, but with time they increased in both frequency and intensity until they occurred every single day! They eventually worsened to the point where I could barely struggle to get through a work day due to the pain, nausea, dizziness (and falling over every so often), and difficulty concentrating and remembering vital information. Every light and sound caused my head to explode, and focusing on any task was stressful. I could not sleep more than a few hours at night, if that much, or could drop asleep suddenly. I was exhausted most of the time. There were also other sporadic strange symptoms such as being unable to speak some words — I’d have to try to think of a synonym that I could vocalize, which can be difficult with technical terms — that seemed to strike a lot when I was lecturing.
Latest Developments
It's been about three years since we launched this web site and it's looked pretty sparse outside of the blog posts. Our graphics work has marched on with new color illustrations appearing in an updated edition of one of the textbooks we've illustrated. Unfortunately, my software development has been sporadic and slow since a long-standing illness saps my productivity on many days (more on that in the next post). Even so, I've gradually revamped two Mac educational programs and completed a totally new Mac application.
At the same time, I’m slowly honing my iOS and Swift programming skills so I can port some of our educational software to the iPad and then create all-new iPad apps. Once we both feel we’re ready to design and build a truly world-class Cocoa Touch-based app, we’ll submit it to the App Store. And not a moment sooner.
Why? We're iPad enthusiasts ourselves. Every day we're using our iPads for one task or another. We can't take photos of each other without an iPad blocking the view of our faces (OK, that's exaggerating a bit. We don't take photos of each other). We love the apps we've purchased for it. We highly respect other iOS developers. So we simply can't bring ourselves to add crap to the App Store. If you wouldn't be proud of owning our apps, we won't be proud of developing them.
Our Cocoa Tools
Every Cocoa developer has their own preferred tools for writing code, looking up documentation, creating icons and preparing apps for the App Store. Here are some of our present favorites:
Xcode (of course). A few warts aside, it’s an incredible IDE. We also love Swift.
AppCode: A fine adjunct to Xcode that adds extensive refactoring and code quality checks, as well as very intelligent code intentions.
Accessorizer: Generates code for properties, initializers, accessors, archiving/dearchiving, Core Data, KVO and much, much more.
Dash: A better documentation browser than the one built into Xcode, it also includes documentation sets for Cocoa-related languages such as SQLite, OpenGL and Ruby.
PaintCode: Translates vector graphics into pure Cocoa code to reduce program size.
ClassMaker: Generates the CoreData boilerplate code for a given SQLite database.
Slender: Pares down Xcode projects by removing unnecessary assets.
Prepo: Icon preparation tool.
RubyMine: A Ruby IDE from the same folks that make AppCode.
The Invisible Customer
This post is about something frustrating that many of us experience. Invisibility. Not the science fiction type (or even via a negative index of refraction by new metamaterials). I'm talking about the seeming invisibility we can experience in stores, doctor's offices, restaurants or just about anywhere involving customer service. A few examples:
1. Passed over in a store line. We were standing in line in front of a customer service counter waiting politely for 10 minutes for the customer representative to finish serving the person in front of us. The representative then walked to another cash register to put something away. Another customer immediately walked right up to her. Instead of asking that customer to please wait in line, she started helping him and left us waiting again.
2. Blown off in a restaurant. My brother made a reservation at a restaurant a few years ago. When we arrived, we were told to wait at the bar. Over an hour passed after the reservation time while people walked in off the street and were immediately shown to tables. Nobody else seemed to need to wait at the bar. My wife was in agony the entire time due to arthritis in her hip and knee (she had to stand since she couldn't use the barstools). The hostess noticed but did nothing.
A Thank-You to Some Nice Software Development People
Throughout my career, a lot of people in the software development community have been truly nice to me. I want to use this opportunity to thank them for their help and understanding. I hope I haven't left anybody out.
1. Aaron Hillegass. Aaron teaches the Cocoa Bootcamp that I thoroughly enjoyed when I attended it years ago. He helped me get started with Cocoa, and we've been friends ever since.
2. Matt Neuburg. We've known each other for many years, at least through email exchanges, because of the programming books we each wrote. Matt's been very kind to answer questions I'm hesitant to ask on the Cocoa-dev mailing list because I think they may be too dumb (and my suspicions are probably right) or the answer should be obvious to me.
3. Real Software. I've used a dozen programming languages throughout the years ever since I started working on my Ph.D., and I've created Mac software for 20 years with a variety of programming languages (including LabVIEW, C/C++ and Objective-C). I always preferred Mac programming over Windows programming, but didn't always have the option of working solely on the Mac. The college where I was teaching was standardized on Windows, but I couldn't live without Mac versions of my programs too. Real Studio allowed me to quickly create cross-platform apps for research and teaching. I rarely needed to resort to Visual Studio.
Our Favorite Non-Cocoa Programming Books
Cocoa programming books are indispensable to Mac and iOS programmer, but other programming books are just as important. Let's look at some of our favorite books on programming basics and object-oriented programming and design.
Refactoring: Improving the Design of Existing Code by Kent Beck, John Brant, William Opdyke and Don Reberts (Addison-Wesley).
Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (Addison-Wesley).
Refactoring to Patterns by Joshua Kerievsky (Addison-Wesley).
Prefactoring by Ken Pugh (O'Reilley).
Test-Driven Development by Example by Kent Beck (Addison-Wesley).
Growing Object-Oriented Software, Guided by Tests by Steve Freeman and Nat Pryce (Addison-Wesley).
The Art of Unit Testing with Examples in .NET by Roy Osherove (Manning Publications). Although the examples are in C#, the principles are still relevant to Cocoa programmers too.
Designing Interfaces by Jenifer Tidwell (O'Reilley).
Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin (Prentice-Hall).
Our Favorite Cocoa Programming Videos
Last but not least, we're going to tell you about our favorite programming videos. Most of them come from iDeveloperTV, partly because they are the leading provider of Cocoa programming course videos, but also because they're very well-produced by Steve Scott ("Scotty") and feature top-notch Cocoa programmers. We should point out that we have no affiliation with iDeveloperTV.
Learning Objective-C with Jiva DeVoe (iDeveloperTV). 13 hours.
Beginning iOS Development with Dave Verwer (iDeveloperTV). 8 hours.
Coding in Objective-C 2.0 with Bill Dudney (The Pragmatic Bookshelf).
Becoming Productive in Xcode with Mike Clark (The Pragmatic Bookshelf). Now covers Xcode 4 too.
Core Data with Marcus Zarra (iDeveloperTV). Almost 11 hours.
Concurrent Programming on Snow Leopard with Drew McCormack (iDeveloperTV). 6⅔ hours.
NSConference 2010 and 2011 (iDeveloperTV). Many hours of presentations by heroes of the Mac and iOS programming world on a variety of topics. 4½ hours.
The World According to Gemmell (iDeveloperTV). Five videos with presentations by Matt Gemmell (iDeveloperTV).
Our Favorite Cocoa Programming Books
Every Mac or iOS programmer needs to learn programming techniques specific to these platforms. In our last post, we showed the Apple-specific blogs that we visit the most. This time, we want to share the books that we've used the most to learn Cocoa programming. Next time, we'll share our favorite videos.
Cocoa Programming for Mac OS X (3rd edition) by Aaron Hillegass and iPhone Programming: The Big Nerd Ranch Guide by Joe Conway Aaron Hillegass (Addison-Wesley). The classic texts for learning Cocoa on the Mac and iOS, respectively.
Cocoa Programming: A Quick-Start Guide for Developers by Daniel H Steinberg (The Pragmatic Bookshelf). Nice intro to Cocoa.
Programming iOS 4: Fundamentals of iPhone, iPad, and iPod Touch Development by Matt Neuburg (O'Reilley).
Cocoa Programming by Scott Anguish, Erik Buck and Donald Yacktman (Sams). Despite its age (published in 2002), it still contains gems.
Cocoa and Objective-C: Up and Running by Scott Stevenson (O'Reilley).
Cocoa Design Patterns by By Erik Buck and Don Yacktman (Addison-Wesley).
Our Favorite Cocoa Developer Blogs
Mac and iOS developers have at their disposal a wealth of blog sites written by expert and successful Apple developers. Of course, there are also several blogs written by less well-known developers that still have useful information, but they tend to be updated less often. We're going to discuss the blogs that we visit the most for up to date information. In our humble opinion, these blogs provide gems that every Mac and iOS developer should know.
NSBlog- Written by Mike Ash. This blog concentrates on expert techniques for Mac and iOS development. If you truly want to know how to proceed from a noobie to an expert programmer, this is the site to visit. Mike has a book for sale on iTunes that is a collection of all of his blog posts until late last year. We strongly recommend that you buy it.
Cocoa is My Girlfriend- Written by Marcus Zarra, an expert on Core Data.
Cocoa With Love- Written by Matt Gallagher. This blog covers a variety of topics in depth, including some vital tips, and includes sample projects so you can peruse the source code.
Does the App Store Help Users Find Your Product?
There are now 500,000 iPhone and iPad apps. Yes, read that again. 500,000 apps. That's an incredible and praiseworthy achievement for Apple, and more so for iOS developers.
But there is still a glaring problem. In iOS marketing books, there's a lot of discussion on how to make your app and your company very visible. Aside from winning a design award or being the Apple staff's favorite, there are obvious things that can be done outside of the App Store — advertise your app on your website so it can be found via Google searches, submit press releases to widely read websites and blogs, market through the web and social media, etc. But why is making an iOS app visible so important? Reread the first sentence of this blog.
The very thing that makes the App Store a success is also its biggest shortcoming. There are so many apps that it's very difficult to make yours stand out among the hordes of other apps. The App Store has broad categories such as Productivity and Entertainment, and apps can be listed under more than one category. How then can a novice user find out that your amazing, incredible, Nobel Prize-worthy app exists, and what it does, through the App Store? For a general search, the app's name or developer's name can be included in the search. Searches for a word can produce a list of hundreds of apps, but some novice users may only look at the items that appear in the search text box's attached pop-up menu. The full list of search results may be hundreds of apps. Searches for synonyms of the search term can produce a different number of apps. These related searches may find apps in common or completely different apps. Not all will be relevant — search for the word "bird," and not surprisingly many of the apps will be variants of "Angry Birds".
Deviating Eye Opens
The staff at Deviating Eye are excited to be here.
We're busy working on some software apps and updating graphics for textbooks.
Look for them soon.