The one thing that has changed most significantly in OS X 10.10 is probably the design of the typical titlebar. Over the last few years, titlebars of Mac apps have grown to a humongous size. As an example, take the titlebar of PG Commander 1.5.3: it sports the standard traffic light controls, a more or less useless window title, and a bunch of loosely spaced giant toolbar icons with labels. This…
Almost two years ago, in January 2013, I made an iPhone app. It took me about two weeks from start to finish. I ported my Access database reading library from OS X to iOS. Then I added some drawing code that I made for an app I never released, and assembled a simple app for viewing Access databases on the iPhone. I named the product “ Access View ” and uploaded it to the App Store. It was…
The first thing you see when you open PG Commander is the favorites window. This window sets the tone when a potential customer first tries my app. I think it's extremely important to make a good first impression, so I put a lot of effort into the design of this window. Here's what the current version looks like on Yosemite: Some of the user interface elements automatically acquired the new…
Since publishing PG Commander 1.0 a bit more than a year ago, I've pushed out five big updates and lots of bugfixes. I've added functions like SSH Tunneling, Filters, Query History and more . When Apple announced OS X 10.10 Yosemite in June, I thought that I'd quickly adapt PG Commander to take advantage of the new design. I thought I'd be done by the end of the summer. But as I started to work on…
Today I received an email that there's a cracked version of PG Commander on the web. The email came from a company offering to remove cracked apps from the web in “a fast, effective and affordable fashion”. Intrigued, I checked the search terms they told me about. Indeed, I quickly found a link to a a cracked version of PG Commander. After clicking through half a dozen popups I managed to download…
MDB Viewer I started selling my first app in February 2011, a few weeks after the Mac App Store opened. The App Store made it possible for me, a university student and self-taught programmer, to launch an app in my spare time. Lot's of people complained about the restrictions of the Mac App Store, or about the review process. But me, I couldn't believe how easy it was to become a real software…
Collection classes like NSArray , NSDictionary , NSSet or NSMapTable work with a single type: id . It's extremely convenient to be able to store different objects in the same collection. But sometimes it's also a bit dangerous. I constantly write code like the following when dealing with data from external sources: NSNumber * num = [ dict objectForKey : @"age" ]; if ( ! [ num isKindOfClass :[…
NSNotificationCenter has a very convenient method for registering a block as an observer. However, getting that code right is very tricky. Let's say we open a window and want some code to run when the window closes. An obvious way would be to use some code like the following: [[ NSNotificationCenter defaultCenter ] addObserverForName : NSWindowWillCloseNotification object : aWindow queue : nil…
Autolayout is one of the best new features recently introduced in Cocoa. However, setting up layout constraints in Interface Builder can be an infuriating experience. Fortunately, Apple also introduced something they call the "Visual Format Language" (VFL) for creating autolayout constraints in code. The VFL allows you to describe layout constraints using a syntax similar to ASCII-Art. For…
Cocoa offers a lot of high level APIs for all kinds of network operations, so chances are you never need to perform a DNS lookup yourself — until you start to do any custom network programming. The easiest way to do name lookups is using the getaddrinfo API. It's not a Cocoa API, but it's completely cross-platform, and it works on all flavors of UNIX. After reading lots of man pages, you might…
If you're reading this blog post on eggerapps.at, you might have noticed there's a small lock icon in your browser's location bar now. That's because my website is now served exclusively via HTTPS. Why HTTPS is important When using HTTPS instead of HTTP, all data is transferred via an SSL connection. SSL has two advantages. First of all, it encrypts all data in transit, so that it is impossible…
I've been anxiously waiting for this day. After months of development and weeks of beta testing, it's time to release my new PostgreSQL database client . Download the trial and purchase it from eggerapps.at/pgcommander Here's a glimpse of what it looks like: What can you do with it? Browse Tables and Views in a native user interface Fiddle with complex queries in the SQL Terminal with query…
After 8 months of working on my new app PG Commander in solitude, I felt it was time to share it with the world. I wanted to start a public beta to collect feedback. But how do you tell the world about your app? Hacker News I spend a lot of time reading stories and comments on Hacker News . It seemed to me like the obvious place for the announcement. It's a perfect fit: There are often discussions…
The modern Postgres client now supports keyboards. When I made my newest app public almost two weeks ago, I couldn't believe all the positive feedback I got. Within a week, 700 of you downloaded my app. I received the nicest emails. One user just wrote: “How can I give you money?!” (Obviously I found that in my spam folder). I read all the encouraging words and thoughtful feedback. And all the…
PG Commander is a Mac client for PostgreSQL databases. I made it for everyone who wants to access a PostgreSQL server: developers, database administrators and content editors. In this blog post I talk about why I made it, and what makes it different. Motivation As I started working with PostgreSQL, I missed one thing: a nice graphical client. For MySQL databases, there is a great app named Sequel…