Improved SEO keyword analysis in Scrutiny v3 - released
I've finished testing and have released Scrutinty v3.
Although coming fairly soon after v2, I've decided to make this a major release rather than a point version because there has been some serious work 'under the hood' making the crawl slightly faster and more memory-efficient, some interface improvements such as sorting on all views, and some important new features such as the ability to include content in the keyword count (pictured) or to run on schedule.
Tracking down zombies in objective C applications
Aren't the worst bugs the ones that cause crashes infrequently seemingly randomly?
Even when you think you've found the problem and run the app successfully 100 times, you still can't be 100% sure you've got it! It's like trying to prove a negative.
Tracking down such a problem can be like the proverbial needle in a haystack. You can get clues from the crash report or debugger console, commenting out lines can work if the problem is fairly reproduceable but a good analysis tool can save many hours of poring over code and testing and re-testing.
In my experience a problem like this is most likely caused by object alloc / release. In such cases XCode will report 'EXC_BAD_ACCESS' which means (most likely but not always) that you're trying to access an object which has been released.
Instruments with Zombies is a little baffling at first but is well worth it. If the bad access happens, it'll show you the life cycle of the object in question, where and when it was retained and released.
First code-signed release
I've released my first code-signed app (contains my electronic signature to keep Mountain Lion's Gatekeeper happy). I don't want to release Organise via the App Store and this seems a nice compromise.
Time will tell whether people will continue to be happy to download from the web and whether Apple continue to allow this method of distribution.
Scrutiny v2 approved for App Store at last
Version two of Scrutiny, which contains some exciting new features, is now live on the App Store, lagging way behind the web download version.
I know that people have been keen to have Scrutiny v2 because I've had questions about when it would be available and why it was available for download but not the App Store.
Apple's approval process is lengthy (usually a couple of weeks) and it may involve a rejection, some work and a resubmission.
V2 was rejected twice. Following the first rejection I had to create new application icons. The icon is actually a set of images at different sizes, and now needs to contain hi-res versions too to look good on the new retina displays.
I also had to sandbox the app. This is a security measure now insisted on by Apple. I'd done some reading on this subject but the rejection forced me to get up to speed and do the necessary work and testing.
A final hurdle was that the sandboxing broke one feature. Crawling a site locally is now impossible because it goes against the sandbox principle - an app no longer has arbitrary access to files on your hard drive.
After some experimentation, the answer is to crawl the local site via OSXs built in web server. (I've added instructions to the manual, available via the app's Help menu.) It's easy to switch on and has some advantages. It solves a long-standing problem of Scrutiny not being able to find an index file if given a directory reference, and also returns proper server response codes, which can't happen when accessing the file via file://
I'm trying to be objective - Apples hoops certainly ensure the quality and security of apps purchased from their store.
Scrutiny v2 has loads of new features and is ready for beta
A major new version of the webmaster tools suite Scrutiny is ready for you to test.
Many comments on version 1 were about its interface. The new version has been given a facelift, with many improvements, including a new icon view, showing the sites that you manage in icon form (like Safari's Top Sites) as an alternative to the list view.
New features include a page analysis tool, allowing you to scrutinise a single page and see load times for each of its elements (images, css, js) and a total weight.
Also among the new features are the ability to search your links, and see the number of occurrences of a keyword or phrase in the main SEO elements (url, title, description, keywords, headings)
For a run-down of the major new features with screenshots, please use the link below.
If you would like to help me by beta-testing this new version, please email me at firstname.lastname@example.org
A paradigm shift
You may have noticed that I've been getting uppity about the authority that Apple is assuming. To develop an iOS App, a developer has to be registered and certified involving a large cash transaction and then Apple has to vet the application. There's no downloading from the wild. Mountain Lion's Gatekeeper will bring similar restrictions for developers of desktop applications (and more revenue for Apple) one step closer.
But this week a couple of things have made me see all of this in a different light.
The first is that for the first time ever I've had to take action to secure myself against a trojan - Flashback has successfully infected a large number of Macs.
The second is this article, which says that the iPhone has no known malware despite having a decent market share, while Android has lots. (The Mac's small market share has often been cited as the reason for its freedom from viruses.) The true picture may not be quite as black-and-white as that but the reason for the iPhone's relative security is nothing to do with market share but accountability, ie the very controls that I've been complaining about.
I've enjoyed worry-free computing for many years and faced with two futures, one of continued immunity from viruses and the other involving Windows-like virus woes, I'll take the former and jump through Apple's hoops.
A cautionary tale
I want to write about this partly because the irony of it made me laugh out loud and partly to help anyone else who's struggling to find out why a programme loop is taking longer than you'd expect.
I've always believed that if a process takes any time to finish, then it's good manners to give the user a progress bar so that they know what's happening and have an expectation of how long it'll take.
Users had asked for a 'cancel' button on a particular progress bar. They found it annoying and would rather sacrifice the feature than wait for it to initialise.
Having spent a significant amount of time (hours) trying to find inefficiencies in the particular job and experimenting to find out what was slowing the job down, I finally discovered that if I removed the progress bar, the job completed in an instant!
That's right. The time being taken and requiring the use of a progress bar, was very largely being caused by the progress bar itself.
The only call to the progress bar within the programme loop in question was to update its value. Presumably it then draws itself to the screen. And now that the thing is animated, I guess it's using valuable cycles by just being there.
I've also switched the job to a background thread so that if it does have a lot to do and takes a significant amount of time, the user will be unaware.
Playing Apple's game
I have mixed feelings this week - I'm feeling very excited that my apps are to start appearing on the App Store, I'm niggled about the money and the control that I'm giving to Apple, and frustrated that I submitted my first app a week ago and am still waiting for their approval.
I've resisted supporting the App Store so far. I've even thought seriously about moving to a different platform. Mountain Lion's gatekeeper will certainly make computing safer. But to try to channel all apps through the app store while creaming 30% of the takings does show a parallel motive.
But a commitment to licence holders of Organise and Scrutiny made the decision for me. Mountain Lion will not be completely locked down, but without at least certifying the apps via a paid-for developer account, users wouldn't be able to run future versions without warnings and lowering their security settings.
As much as I resent giving some control to Apple over my app - there's a long list of reasons that they can reject an app and they have to check and approve it before it's even visible on the Store - it still feels like a very good and major step in my developing career.
Once through the approval process, it'll be great to see Integrity available (for free) via the store and hopefully enjoyed by a bigger audience.
IP camera fun
I'm really pleased with a wireless IP webcam that I've scored off eBay this week, and it's enabled me to kick off a project that I've been planning for years.
My house has a fantastic view over some of The National Forest. Click the jump for more about the forest and my project.
The frustrating part was spending hours trying to achieve something which could have taken just a few minutes. I'm guessing that if I were more of a networky type, it would have been simple, but missing a few vital bits of information had me searching Google, playing with settings and scratching my head for many hours.
I've documented the knowledge here for anyone who may also be trying to connect an EyeSpy247 to an old wireless router and using a mac rather than a pc
Eyespy do claim that the camera is Mac and Linux friendly, and to be fair, their instructions to connect first with a network cable, discover the IP address and access the administrator via a browser are all sound, but at that point some serious network knowledge is required to set up the camera so that it can connect wirelessly.
I thought the days when equipment was only supported on Windows were behind us. I'm assuming that the Windows 'wizard' provided on a CD with the camera makes the job a breeze for Windows users, so why not a similar wizard built for mac users?
Thoughts welcome. Contact me
Help with hotkey code
The keys F1, F2 etc feature on almost every keyboard, and so it seems strange that they're not made easily accessible using Apple's Cocoa layer.
Ever since I conceived ClipAssist it's been clear that to get the most out of it, you would need to be able to hit a hotkey when you're using a different application.
it's not been possible without calling on the services of a little Carbon but thanks to Dustin Bachrach for providing code snippets, it's been quick and painless. http://dbachrach.com/blog/2005/11/program-global-hotkeys-in-cocoa-easily/
Further to this, I had to search quite hard to find the codes for the F keys (or any of the keys come to that). But once again, thanks are due to Peter Hosey who has dug out the appropriate documentation and made a nice easily-readable reference document (link below)
The next version of ClipAssist will have this hotkey functionality and I'm grateful to these and other bloggers who publish this useful stuff.
As usual, thoughts welcome by email.
What floats your boat?
I remember when I learned about object-orientated programming. I was trying to get to grips with Java. Languages I'd previously used had amounted to a long list of instructions (often with line numbers).
I had printed off a tutorial with an example which I read, re-read and re-read but didn't quite 'get' it. Then one day the penny dropped and there was that excitement at the concept of objects, their properties, and the methods they contain for modifying their properties. it was beautiful. It was like starting to think in three dimensions after living in a 2D world.
I've since worked with developers who were obviously still thinking in terms of functions rather than classes and objects.
I still get just as excited about the concept. Today I was searching documentation for a way for an NSURLConnection to be able to identify itself when it's received by its delegate at several stages later down the line. Some kind of identifier or user-data is required. It took a second for the penny to drop that it's easy to subclass it and add that property. And there it is - that excited feeling in the tummy that you get when something 'floats your boat'.
I love the Raspberry Pi idea and the talk of teaching kids how a computer actually works and teaching them to code. It'll float their boats more than teaching them to use Microsoft Excel.
Exporting data from Organise to Google Product Search
I'm very excited about the latest release of Organise.
Google product search has always been important to me with my online retailer's hat on, but maintaining and submitting the files has been difficult.
I've maintained my files manually - initially by maunally typing an xml file, and more recently by using a spreadsheet and saving as tab-delimited. It's not an easy way to manage the data and the biggest pitfall is forgetting to submit a new feed regularly. Clicks dry up and you realise that your data has expired with no notification.
It has only just occurred to me that by using Organise's Data Management (Reports) I could simply write a report configuration to export my existing inventory information in the required format.
OK, it's taken a little bit of work; I've had to add a couple of fields to Organise and add a tab-delimited export alongside the existing csv and html but I'm now successfully submitting my data to Google Product Search, and all of this, including the report configuration file, is now in the release version of Organise Pro for everyone else to use.
As for remembering to generate and submit an updated file in a month's time - an alarm in Organise's Time Management will take care of that.
More details about using this feature is in the manual: peacockmedia.co.uk/organise/manual/v5Pro/google-mapping.html
Review of Organise at Mac360
I'm very happy with a great review of Organise at Mac360 from Alexis Kayhill.
Organise has had a few updates recently; improvements to the checkout (EPOS) interface (pictured right), general fixes and improvements (full details in the release notes / version history)
I've also managed to release a couple of videos which will help to give interested visitors a good idea of its capabilities and also provide a quickstart guide to those who just want to download and get going.
Scrutiny special offer tomorrow (22 Dec 11)
A recent promotion as part of a bundle at http://www.macfriendly.org worked a treat. I'm hoping for similar success at MacZOT.
A licence key will be available at half the usual price for 24hrs at http://www.maczot.com.
It seems a great way to introduce the software to many new users. Thanks to Mike Biskup for his help with this.
I was of course delighted with that, but what really impressed me was the translation of the website that I saw when I viewed it using Google's translation tool - View the translation
I'm amazed. I've always regarded machine translation as 'good enough to get the gist'. There are a couple of glitches but in contrasts to my previously dim view of auto-translation, it almost reads as if it had been written in English. (I love the fact that in a translation of German -> English, a French experssion is used!)
I've been experimenting with visualisations of a website using the data generated by Integrity and Scrutiny. It's been fairly easy to put out the data as a standard dot file and let a third-party graph generator do the work.
These first attempts, while useful, do look more aesthetically pleasing as abstract images. See more on Peacockmedia's facebook page
The next release of both applications shouldn't be too far off and I have other exciting things I'd like to get in too.
Thoughts welcome. Contact me
Do I go with App Store or think different?
I have an important decision to make about the licence key for Scrutiny. Having made the difficult decision to charge for it, and put it out there as a free beta I now have to decide whether to go with the web or app store. Or both.
The app store is expensive and complicated, but could possibly reach a much bigger audience. But is it necessary - perhaps customers for this type of app are well clued-up and perfectly comfortable with finding and downloading apps from the web - and perhaps the app store is better for consumer stuff rather than techy stuff. What do you think?
Thoughts welcome. Contact me
Revisiting the Tiger
Having made the decision (below) to support ppc users and 10.5 / 10.6, I've just released a new version of Scrutiny which should run on ppc machines. Not only that, I've had less trouble than I expected and have actually been able to build an application that runs on 10.4 Tiger and all systems up to date including the new 10.7 Lion.
(ppc = Motorolla Power PC - the processor Macs used before the switch to Intel. Applications that run on both are 'universal binary', ie they contain code for both processors.)
It should now be quick and easy to build a new version of Integrity which will also run on Tiger through to Lion, ppc or Intel. Look out for news soon.
I'm getting a little bit of feedback and have been able to repair bugs that people have reported. I also now have a healthy enhancement list which is great because in October I hope to switch Scrutiny to being a paid app which will enable me to allocate a certain amount of time each week to supporting and developing it.
The beautiful snow leopard
Isn't she gorgeous? I'm now appreciating that the operating system she represents is beautiful too.
Not an early adopter, I had to buy and install Lion because users were finding that Integrity wouldn't work on the new OS.
I quickly fixed the problem, but found plenty of things about Lion that I really don't like.
I found a secondhand machine for day-to-day use and now that I'm back on Snow Leopard I love it.
Something else has made me think about users of older systems too. A user of my new product Scrutiny asked about ppc support. The answer is that I have been forced to move to XCode 4 in order to find and fix Lion problems. However, XCode 4 doesn't allow me to build a version which runs on ppc machines. Therefore I released the beta as intel / 10.5 upwards.
It seems that maybe I can use XCode 4 to build for ppc and all of these things have made me think that it would be a good thing to support older macs and versions of OSX.
Rather than try the XCode 4 conversion (I've found messing with build settings to be hair-tearingly frustrating) I may instead rebuild the products using XCode 3 and work in that.
Either way, I'm aiming to support Integrity and Scrutiny on ppc and intel, 10.4 and above if possible, or 10.5 and above if not.
Have just read a very interesting interview about Bing. Inbound links are only the third most important factor for the Bing search engine. Are you interested now too?
One quote that stands out: "Your Sitemaps need to be clean. We have a 1% allowance for dirt in a Sitemap. Examples of dirt are if we click on a URL and we see a redirect, a 404 or a 500 code. If we see more than a 1% level of dirt, we begin losing trust in the Sitemap"
That seems like a good reason to regularly check your site using a link checker such as Integrity or webmaster tool such as Scrutiny which will clearly flag those problems and can generate the sitemap for you. (Obviously the sitemap will only be clean if you fix the problems that it flags up!)
I'll keep all OSX and geeky stuff on this page. For my thoughts about working from home, please see workingfromhammock.blogspot.com