tag:blogger.com,1999:blog-33176811949762918942020-02-29T02:10:50.074-08:00Able Pear SoftwareThe official Able Pear Software blog. We like to write about mobile development, iOS, Objective-C and related topics of interest to the tech community. And we post the occasional Able Pear product announcement.Able Pearhttp://www.blogger.com/profile/10972026256260166617noreply@blogger.comBlogger323125tag:blogger.com,1999:blog-3317681194976291894.post-88433763224160960032012-10-15T07:00:00.000-07:002012-10-15T07:00:12.891-07:00Bundling Python files into a stand-alone executable
One of the problems with building a medium to large sized program in Python (or similar scripting languages) is distributing it to users. When a Python script grows beyond a couple hundred lines, most programmers prefer to split that single script file into multiple Python modules and packages. For an individual developer, modules and packages are primarily an aid in mental organization, though Don McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com9tag:blogger.com,1999:blog-3317681194976291894.post-80747058858328471512012-10-10T07:00:00.000-07:002012-10-10T07:00:03.380-07:00BSD-style license for codeWe have published a fair amount of source code on the Able Pear Software blog over the past few years, but we neglected to specify any kind of software license to go along with it. We occasionally get asked about an open source license (the UrlEncoding category for NSDictionary is particularly popular).
All the code we publish on the Able Pear Blog is free for you to use under a BSD-style Don McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-6045661246437031162012-10-08T07:00:00.000-07:002012-10-08T07:00:13.620-07:00Smart App BannersThe new version of Mobile Safari that ships with iOS 6 has a great new feature for app publishers: Smart App Banners.
When a user visits your site in Mobile Safari on iOS, you can now add a pop-up banner to promote your iOS app, which includes a direct link to the app in the App Store and optionally your iTunes affiliate information. David Smith has a great overview on his blog, and you can findDon McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-86548852112430115522012-07-30T07:01:00.000-07:002012-10-07T16:31:45.633-07:00Adding a Retina-ready icon to your Mac app in three easy stepsI've been doing more OS X development recently, and coming from the iOS world, there's a lot that's familiar but I still stumble over many things. Creating an app icon is one of them. After some poking around, I've discovered what you need to do to create a custom icon for your modern Mac app.
Step 1: Create the icon images
Modern Mac icons pack five different resolutions in one .icns file, fromDon McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com2tag:blogger.com,1999:blog-3317681194976291894.post-72383203650731779882012-07-09T07:01:00.000-07:002012-07-09T07:01:00.183-07:00Download iTunes Connect sales reports with Autoindigestion
When you start selling your first app in the app store, it's very exciting to check you sales every day in iTunes Connect. After the initial excitement wears off and your app sales settle into a steady state, it's easy to get involved in your next project and forget to log into iTunes Connect periodically to download your daily or weekly sales reports. Apple only makes the last 14 days of dailyDon McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com3tag:blogger.com,1999:blog-3317681194976291894.post-3686365062637880652012-06-20T07:00:00.000-07:002012-06-20T07:00:14.301-07:00WWDC 2012 VideosApple has posted the videos and slides from the technical sessions of this year's Worldwide Developers Conference yesterday. The videos are available for free, but you need to be a registered Apple developer to watch them. (You can register at https://developer.apple.com/.)
As in previous years, there's a lot of good stuff here for iOS and OS X developers, as well as some sessions on other partsDon McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-73810681229407928972012-03-05T10:20:00.003-08:002012-03-05T12:01:03.803-08:00Instance Variables in the Implementation FileRecent versions of iOS and the Apple LLVM 2.1 compiler use an improved version of libobjc, the core library that powers Objective-C features like classes and method calls. This "modern runtime" library enables a lot of new, cool flexibility in creating Objective-C classes. One of my favorite new features is Instance Variables in the Implementation File, which allows you to move your private Don McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-75546340724278712722012-02-24T07:01:00.009-08:002012-03-14T09:11:05.791-07:00Something wonderful: new Objective-C literal syntaxWith the announcement of OS X 10.8 Mountain Lion, Apple made the beta version of Xcode 4.4 and the Mountain Lion SDK available to developers enrolled in the Mac Developer Program (the US$99 annual membership required to submit apps to the Mac App Store). The new OS X version has created a lot of developer buzz around Gatekeeper, the upcoming requirement that all apps in the Mac App Store run in aDon McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com6tag:blogger.com,1999:blog-3317681194976291894.post-63768656483089695632012-02-16T12:39:00.000-08:002012-02-16T12:41:26.984-08:00Add "Social Networking" with the Twitter & Accounts Frameworks in iOS 5Recently, on the iOS Developer Network (iOS DevNet) on LinkedIn, I posted a discussion on integrating "social media hubs" into your iOS 5 app and provided some references. Here is the discussion:
There are several ways to integrate your app with Social Media hubs like Facebook and Twitter. Now with the new Accounts and Twitter frameworks in iOS 5 Apple makes it even easier.
Peter Friese has a Kevin Bomberryhttp://www.blogger.com/profile/07977425999974745365noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-19550691693874377112012-01-09T07:01:00.000-08:002012-01-09T07:01:01.013-08:00The year ahead for Apple: the iPad dominates (and one more thing...)With 2012 barely a week old (and possibly the last year ever), I thought it would be a good time to make some prognostications for the tech industry in the year ahead. As an iOS developer, I pay a lot of attention to Apple, so I'll concentrate on what I think is in store for the Cupertino company. Love them or hate them, they're certain to continue to make their presence felt in 2012.iPad Don McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-12443097477361464062012-01-05T07:01:00.000-08:002012-01-05T07:01:00.257-08:00Avoid agile dogma: recommendations not rulesYears ago as a developer working mostly solo, I got interested in automated testing and unit testing, which in turn lead me to extreme programming (XP) and agile software methodologies. I've had the wonderful good fortune of working for Pivotal Labs a number of times in recent years and been a part of a number of successful agile projects. I know that an agile approach to project management can Don McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-86145550114561804072011-12-08T07:01:00.000-08:002011-12-08T07:01:00.150-08:00Getting more from NSLog()In a series of recent blog posts, John Muchow of iOS Developer Tips shows how to create your own wrapper around NSLog() to add useful debugging information to your log output like file name and line number:Filename and Line Number with NSLog: Part IFilename and Line Number with NSLog: Part IIObjective-C Expressions for DebuggingSome great tips and tricks, check it out!Don McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-24886082918225228082011-12-06T07:01:00.000-08:002011-12-06T07:01:00.424-08:00Objective-C Tuesdays: more NSArray sortingWelcome to another Objective-C Tuesdays. Last week, we looked at sorting C arrays and NSArrays. Today, we will continue looking at sorting NSArrays using NSSortDescriptors.As we saw last week, the sorting methods of NSArray require you to specify a comparator in one form or another. When sorting an NSArray of simple objects like NSStrings or NSDates, the comparators are usually pretty simple to Don McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-88505389666495286412011-12-05T07:01:00.000-08:002011-12-05T07:01:01.310-08:00iPhone owners upgrading to iOS 5 rapidlyLess than two months after the release of iOS 5, nearly half of all iOS device owners have upgraded. Marco Arment, the developer of Instapaper (one of my favorite and frequently used apps), periodically releases iOS metrics he gathers from Instapaper users detailing the breakdown of iOS versions and iOS device types.The tl;dr conclusion: nearly 99% of Instapaper users have iOS 4.0 or later, and Don McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-19020278342217764482011-11-30T07:01:00.000-08:002011-11-30T09:14:59.950-08:00Great Geek Gift: Making Embedded SystemsIf you're looking for a great gift idea for that geek in you life (or for yourself :-) and you're interested in computer hardware as well as software, check out Making Embedded Systems: Design Patterns for Great Software by Elecia White. I had the good fortune to work with Elecia on a project last year and she's a top notch engineer -- and now an O'Reilly author. In her new book Making Embedded Don McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-54341454060630105082011-11-29T07:01:00.000-08:002011-12-12T19:44:34.100-08:00Objective-C Tuesdays: sorting arraysGood news everyone! Objective-C Tuesdays is back! We left off a few weeks ago talking about techniques for inserting and removing items in arrays. Today we will cover sorting C arrays as well as NSArrays and NSMutableArrays.Sorting C arrays with qsort()The C standard library includes only one built-in way to sort C arrays: the qsort() function. qsort() is an implementation of the quicksort Don McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-35822374343793149392011-10-05T19:59:00.000-07:002011-10-05T20:10:51.689-07:00Steve JobsI lived in Palo Alto for many years, and would see Steve Jobs around town from time to time. I'd see him buying flowers at Stanford Florist, shopping for organic lentils in Whole Foods, talking on his iPhone outside Evvia before meeting people for dinner or strolling with his wife past Fraiche on a sunny afternoon.And I've followed his career from the beginning, starting when I was a nerdy kid Don McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com1tag:blogger.com,1999:blog-3317681194976291894.post-39956285417631154852011-08-31T08:00:00.000-07:002011-08-31T08:10:25.904-07:00"Where can we take the customer?"And, one of the things I’ve always found is that you’ve got to start with the customer experience and work backwards for the technology. You can’t start with the technology and try to figure out where you’re going to try to sell it. And I made this mistake probably more than anybody else in this room. And I got the scar tissue to prove it. And I know that it’s the case.
...
And as we have triedDon McCaugheyhttp://www.blogger.com/profile/07415126617410591475noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-47147613629912035682011-08-03T07:00:00.000-07:002011-08-03T07:00:21.692-07:00Developing on Android vs iOSIf you're building mobile apps these days, you're probably watching the Android market closely if you're not already developing for it. With reports coming in weekly that Android activations are growing faster than ever, simple extrapolation will tell you that soon, there will be more Android devices on that planet than people. Many successful mobile devs, most of them currently focused on Don McCaugheyhttp://www.blogger.com/profile/16673164543469346037noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-23044646380086924012011-08-02T10:16:00.000-07:002011-11-29T08:16:50.901-08:00Objective-C Tuesdays: more about dynamic arraysWelcome back to Objective-C Tuesdays. Last time we were talking about dynamic arrays in C and NSMutableArray in Objective-C. We'll continue looking at both today.We looked at using malloc() or calloc() to dynamically allocate a block of memory that you can treat like an array. This is very useful when you don't know the number of items you need to store until run time or when you need the array Don McCaugheyhttp://www.blogger.com/profile/16673164543469346037noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-5398827876873389072011-07-26T07:40:00.000-07:002011-07-26T07:40:01.585-07:00Objective-C Tuesdays: Dynamic arraysAnother week, another Objective-C Tuesdays. Last week we began our series on data structures with a look at arrays in C and the NSArray class. Both C arrays and NSArray objects have serious limitations: C arrays are fixed in size and NSArrays are immutable. Today we will look at overcoming those limitations.
Dynamically allocated memory
C arrays are fixed in size when they are declared:
int Don McCaugheyhttp://www.blogger.com/profile/16673164543469346037noreply@blogger.com2tag:blogger.com,1999:blog-3317681194976291894.post-59637132034396149332011-07-20T10:13:00.000-07:002011-07-20T10:13:23.277-07:00OS X Lion Internet Recovery
I just came across this page about Lion Recovery. I had read about the recovery partition earlier this morning in the excellent Ars Technica Lion review by John Siracusa, but new Macs have a feature called "Internet Recovery" that lets you automatically download a Lion recovery disk image from Apple's servers, even if you've wiped your hard drive:
If your Mac problem is a little less common — Don McCaugheyhttp://www.blogger.com/profile/16673164543469346037noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-82467651349885366682011-07-20T09:24:00.000-07:002011-10-06T09:22:05.096-07:00Burning A Lion Boot DiscIf you're planning to install OS X Lion, but you want the safety and security of a physical install disk, or you prefer to wipe the hard drive and do a clean install, you can create your own bootable DVD installer using the Lion installer app from the Mac App Store and the Disk Utility application on your current Mac. Thomas Brand shows you how.Don McCaugheyhttp://www.blogger.com/profile/16673164543469346037noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-54804520048495698232011-07-20T07:07:00.000-07:002011-07-20T07:07:00.843-07:00Forgotten C: The comma operatorSome good advice on the comma operator and when to use it from Jerry Ryle at MindTribe:
Comma operator?! Isn’t that thing just a separator? Nope. It’s occasionally an operator.
Read more about the rarely used comma operator in C. And MindTribe is looking to hire some great embedded developers.Don McCaugheyhttp://www.blogger.com/profile/16673164543469346037noreply@blogger.com0tag:blogger.com,1999:blog-3317681194976291894.post-59914053182622654502011-07-19T07:01:00.000-07:002011-07-26T07:41:41.954-07:00Objective-C Tuesdays: arrays
See Also
Looping in Objective-C
Variables in Objective-C
Strings in Objective-C
Welcome back to Objective-C Tuesdays. Last time we wrapped up our series on strings by looking at regular expressions in Objective-C. Today we begin a new series: data structures. The first data structure that we will examine is the array.
Most languages have some concept of an array, though it is sometimes called aDon McCaugheyhttp://www.blogger.com/profile/16673164543469346037noreply@blogger.com0