So I Developed My First Mac App…
I know, I know, it has been a while since my last post, but I promise I wasn’t just sitting around at a beach or something. I’ve just been swamped. Anyway, so it’s been over a month since we released Cram for Mac and it has been a great and new experience for me. I’ll talk about some of the points during development that stood out the most.
User Interface
Having developed an iPhone application(Cram for iPhone) before made the dive into Mac development a little smoother, however I still had a few challenges here and there, the first being the user-interface of the application. With the almost limitless number of ways to present your application to a user on a Mac combined with having to understand the smartest and most efficient ways of handling the application’s functionality makes for a pretty tough and thorough first step.
My goal for Cram was to have an interface that easily displayed the user’s tests, the categories they are in, and the functions that can be performed on the tests. Like many applications that have similar type data, an interface with a side-panel of categories, a main section containing the data within the selected category, and a toolbar along the top served to be the best choice for Cram.
One word of advice that I would probably give to anyone out there starting out, is to try A LOT of applications from other developers, the good ones and the bad ones. Understand how they present data and the application’s functionality. Read their reviews and find out what people like and don’t like about them. Find out about methods that are common among many applications. I feel that doing this allowed me to understand what is common among popular and successful software and also helped me include the best aspects of these apps and combine some of these ideas with my own. Some of my favorite apps out there among others are Timeline 3D by Bee Docs, The Hit List by Potion Factory, and Things by Cultured Code. Also another good tip is to pay great attention to the latest and greatest software from Apple. Many times the direction that Apple takes within their applications usually drives the direction of many apps in the third party world usually because it’s something cool but a more important reason is that your users are more than likely going to try an Apple product before they try yours, so when the time comes that they do try your software the user experience will likely be more positive because that particular functionality in your application is something they feel comfortable operating.
Icon
As many know, the icon for a Mac application is kind of big thing in a lot of people’s minds. It definitely was for me too. I’m not the type of person who will not use an application because the icon sucks, but I do appreciate a great icon that appears to have effort and time behind it. After contacting a few designers about having an icon designed for us, we realized that we are cheap and would rather design the icon in-house first before going the outsourcing route. I cannot say if I recommend this to everyone, but since we had a concept in our heads already, we felt that it would not hurt giving it a shot and I think the end result that Ashli was able to whip-up turned out excellent:
Coding Time
You’ll probably spend most of your time (until Marketing gets into full gear) in your life on your project doing development. Having spent most of my life coding in Java, I spent the first couple of weeks getting my brain fully adjusted to Cocoa and Objective C, which quickly turned into a language that is complete joy for me to code in. Getting over the uncomfortable feeling of a new language, framework, platform etc is a big hurdle for a lot of developers. When I approach this I’m usually in a mental state of not knowing if I know enough to jump into a project or if I should look at more examples that seem to make enough sense in my head. Time and time again, I have proven to myself that working on the actual project is the best way to learn. You’ll run into enough roadblocks during development that prompt you to research best practices, fixes, and workarounds to issues that sooner or later will build confidence in you to complete your new endeavour.
Development of Cram took me about a month, but that includes many 12-14 hour days so in reality it took almost two months to complete based on the traditional 40-hour work week. Even though many indie developers don’t like to mention it, sleep is probably the best tool you have when coding. There have been many nights when I was up until around 5 am and had little to show for the last 2-3 hours of work because my eyes, brain, and fingers fail to work together when they are sleep deprived. Sometimes I even feel just plain weird, if I’m not coding something every hour of the day. If you don’t take anything from this blog post… please understand the value of sleep! After a good night’s rest, I always feel able to willing to tackle any issue and complete any task…and usually did.
Marketing
This is by far the most important topic when it comes to releasing and updating any product. Since it’s such a vast topic, I’ll save it for a part two of my blog post. I’ll get into what seems to work for us so far, what did not work, and what we plan to do in the future.
Also if there is anything else you wanted to know or had questions on and want to see in the next post…just drop a line in the comments
If you enjoyed this post, make sure you subscribe to my RSS feed!






