Joseph Jude

Technology, Psychology, and Story Telling

Playing With Objective C & Cocoa

Posted: Tags: tech

Ever since I switched to MacOS platform, the developer in me, wanted to play with the development suites of MacOS. I delayed gratifying this desire for two years. This year, I made a promise to myself that I will develop at least one desktop application.

With that promise made, I bought Aron Hillegass' superb introductory book on Cocoa. I read & completed all the exercises, listened to many podcasts and disciplined myself to program daily.

As essential as it is, learning to use a development suite and acquiring programming skills is just one element of building an application. There are quite a lot of preliminary and peripheral activities you need to perform before bringing an application to public use, like finding an idea that you are proud to build and motivate yourself to go on, finding hosting and distribution solutions and not forgetting the promotion. Though I have experience in building both desktop and web apps, all of my apps have been in open source domain[1] and so I don't have much experience in hosting, distribution and promotion[2].

To start with, I had to find an idea for an app that I will use. Decisions about hosting, distribution and promotion can wait[3]. I dabbled with the following ideas:

  1. Over the years, I have collected so many e-books and other pdfs. I would like an app to tag, summarize and take notes. Evernote does that but they follow a propriety format. Skim allows pdf note taking but tagging and rating the files is missing. As much as I wanted to develop a tool for this, it looked complex for a novice.

  2. I'm a retail investor (only Indian stocks) and have written few python scripts to pick-up stocks of interest. I could polish all of those individual scripts and build a good looking app. A glitch in this is, unlike the US, the stock feeds and their financial details aren't freely available and hence long term viability of the app was of question. Also I'm not sure how many of the stock investors would buy an MacOS program; I'm of the opinion they would mostly be MS-Windows users.

  3. Photography is a hobby of mine. To improve photography skills, I like to view different photographs (taken by me or others) with EXIF details and histogram. Many of the programs that I tried didn't have this feature but finally I bought Adobe Lightroom which is a god-send program for photographers.

  4. I have to often work with XML files but didn't find a decent XML editor for Mac. Yes, any text editor can handle XML files but on Windows there are plenty of fine XML editors. But then again, targeting only one segment - developers, isn't a good idea either.

  5. I maintain two blogs, both in Wordpress. One of the pains of blogging in Wordpress is that posting via browser interfaces sucks. Many of the blog posts that I set out to write were still drafts on NV Alt, because of the clumsy interface of browser based publishing tools. Unlike MS-Windows, there are only few desktop apps available for Mac and of all the Mac Desktop tools I tried, Mars Edit is the best. But I decided there could be a place for a better desktop tool for publishing blog posts. So I set out to write one of my own.

Now that I finalized the app that I wanted to develop, I listed the major tasks to get an application done:

  1. Decide on app2. Design the app
  2. Write all Pseudo-functions
  3. Code
  4. Test
  5. Iterate 4 & 5 until complete

Writing an application for a real usage, in contrast to a text book exercise, is difficult. In trying a text book exercise, you can ignore or skip those parts that aren't working, with a hope that you will understand as you go along. But in developing a real app, you can't do that; you need to ensure that all the features you have selected for a version works together. So I listed all the features that I wanted out of the final app and then I categorized the features list into different versions.

Once I had clarity of the features required, I was able to go full steam into development. Since I also have a day job, I could work only over the nights and weekend. Still in a short time, I was able to get the first real app for MacOS ready for launch.

So here is Blog Easy, a desktop tool for publishing to Wordpress from Mac. Though I have tested this only on self-hosted blogs, it should work well for the hosted Wordpress blogs too.

I have tested the app extensively and using it to post to my blogs. But it is still in its infant form, so issues are expected. I request your help in improving the application. Here are some of the ways in which you can help me out:

  1. Download the application, test it, use it and post your feedback in this blog entry or in your blog.
  2. Spread the word through your social network and friends circle.
  3. List features you would like to see in the features/issues tracker.

Here are the features already included:

  1. Add as many blogs as needed
  2. Write posts either in markdown or in html format (it converts Markdown into HTML only at the time of posting; Markdown support is limited to core functions and no support for extensions like footnote. So I wrote this blog entry in Textmate and copied the HTML in Blog Easy)
  3. Save entries locally
  4. Modify saved entries
  5. Publish saved entries (you need to save locally before publishing)

Go ahead and give it a shot. I'm waiting nervously.

  1. You can find my codes in my repo

  2. I developed an early version of Fotos on Net on wxWidgets, then called wxWindows as a cross-platform (for both Windows & Linux) photo album generator tool. To my surprise Lockergnome published a review on their own and it took off greatly. It was listed in PC Magazines in Greece, Italy. Though it was a freeware, a an US professor sent me hundred dollars. Amazing it was.

  3. Coming from a programming background, I consider delivery important than marketing; but of course it is different in management consulting and startup world. In their view delivery can wait; they want to sign-up as much customers as possible before they start coding.


comments powered by Disqus