iTunes Connect Update for iOS8 bites

I just got caught with some nasty timing with a massive series of updates for a client. Eighty five of the ninety-six apps for which I was uploading new versions got stuck whilst Apple updated iTunes Connect. These apps all use advertising.

Apart from having to upload them again, there are a couple of quirks and changes in the process which are poorly documented so I thought I’d help others out with a copy of my notes. In particular, there’s a disturbing and wrong email you will get if you upload an app with advertising.

Continue reading

SADD – Startup Attention Deficit Disorder

Perth (Western Australia) is getting silly-busy if you’re a technical entrepeneur.

On the startup scene, we have competing for my attention:

  • Founder Institute  with their Startup Founder 101 meetup. (update yes I made it in and was one of 8 graduates in August)
  • Morning Startup – been once, have fortnightly and usually interesting Wed am sessions that rate highly on my would love to go if have time list.
  • Silicon Beach Perth – been a few times, weekly Friday evening sundowners, great chance to mix on an evening highly unpopular with my wife.
  • eGroup WA represents the digital economy in the West, bringing together entrepreneurs, creators, investors, technologists… and people I respect are members so I just joined (update, and have found it worth it) Continue reading

iTunes 11 nasty lesson about checking TimeMachine exclusions

I had an unpleasant little reminder this afternoon that I should review my TimeMachine exclusions more often.

A long time ago, when I had a smaller backup disk, I’d excluded ~/Music from backup, thinking of it as a cache folder. I was puzzled when I went to play some podcasts on my iPhone, whilst doing some kitchen renovation, that my choices were very limited. I was even more puzzled and dismayed to find the same limited choices on my Mac! Hundreds of tracks are missing.

A bit of digging found the discussion thread on how iTunes 11.1 update wiped podcasts. It took me a half hour of frustrating failed feedback in Time Machine to get the sinking feeling that I should go check my exclusions list. Yup – no hope of getting back Scotty et al.

Continue reading

Employment and Life Changes

As I alluded to about three years ago, I went quiet on this blog when I was employed at Gemcom. I’m now actively looking for a new job and free to be more public.

I was laid-off as part of a  worldwide reduction in the Gemcom (renamed Dassault Systemes GEOVIA) workforce, unable to comment on the percentage size. I’ll miss working on the Surpac team.

As we had our wonderful New Zealand holiday scheduled in October, looking for work in the interim was chancy so I spent my time writing my book, Getting Started with LevelDB as I just mentioned in the previous post.

In the interim, I’m working on a range of iOS apps. I’m scratching a few itches in the process and rounding out my resume but expect to be going back into technical c++ programming. If the job search process drags on for a few months I may have enough convincing stuff on the app store to get a job in iOS programming. The book impresses people but doesn’t count enough to get me hired without the magic litmus test of real apps on the store. Continue reading

My book on LevelDB is out

Cover of Getting Started with LevelDB

My book Getting Started with LevelDB has now been released from Packt Publishing. Despite the generic nature of the title, it’s focused on using LevelDB with iOS and OS/X so about half the code in the book is Objective-C. The sub-title you can vaguely make out above reads “Store and retrieve key-value based data quickly on iOS and OS X using LevelDB”. 

If you’re a C++ programmer on Unix of any kind, I think there’s enough value in the book for it to be worth getting – all the basics of using the C++ interface are discussed and the theory discussions are generic. I’m hoping to do some followup work to make it more useful to the pure C++ crowd especially on Windows.

I’ve created a forum for discussing the book content and associated open source frameworks.

The writing process for a first-time technical book was, as I’d been warned, many times harder than I’d expected.

Continue reading

UI Design and Consultation – Komodo 6 Projects Debacle

I’ve used ActiveState Komodo as my IDE for Python and Ruby for a while, starting when I found Eclipse and PyDev irritating especially for debugging.

They recently decided to significantly redesign the Projects feature within Komodo, as part of version 6, and it serves as a great negative example of what happens when you don’t consult your users or put out prototypes but just inflict a design on people. For many users, including myself, the new approach loses functionality and makes the program significantly more painful to use, as you can see in the discussion forum.

Continue reading

Using xUnit.Net console runner with VS2008

A blog post by Bembeng Arifin describes how to use xUnit.Net’s console test runner but I wanted to clarify one important point and simplify his recommendations.

I am using xUnit.net with C++/CLI invoking native DLLs and so I need to have the working directory set to where these reside. The settings I use are (note the fixed directory for Command, obviously changing to that of your local install).

Command: C:\thirdparty\xUnit_net\1_6_0\xunit.console.exe
Arguments: $(TargetPath)
Initial Directory: $(BinDir)
Use Output Window: checked

Shown in context in the dialog:

Tool definition window in Visual Studio 2008 showing above settings to use xUnit.net test runner

In case anyone’s curious about the appearance of the above dialog, it was captured on a Mac using Remote Desktop into my Windows 7 box so the rendering lacks a bit of Aero gloss.

We have a standard environment variable pointing to the location of thirdparty code which I wanted to use but the tool definition dialog refused to accept a path for the Command like $(thirdparty)\xUnit_net\blah.exe.

It also refuses to accept just an executable name, even when it’s on the PATH and can be run in a command window with just that executable name.

Bembeng’s post showed using the longer way to compose the Arguments of $(BinDir)$(TargetName)$(TargetExt) but I prefer simply $(TargetPath) which is easier to type and read.

If anyone’s curious, I eventually picked xUnit.net over NUnit and mbUnit/Gallio because it allows for similar parameterised testing but has a GUI test runner that copes with C++/CLI and I like their style and rationale.

XML is not a Programming Language, Ohloh!

One of the open source projects I created is rbKarel, the REALbasic version of Karel the Robot, which uses its RBScript built-in scripting environment to provide the Karel interpreter.

This was indexed at Ohloh and shows why it is such a dumb idea to claim XML is a programming language. Ohloh now asserts with some appearance of authority that the source code has few comments and makes other discouraging claims. Mild slander on what is now the top hit for rbKarel in Google 🙁

Continue reading

Digital Pens and Pads for Vector Scribbling

As part of my ongoing fascination with alternate input devices and especially as a tactile/visual thinker, I’ve been researching digital pens. I’m also intrigued as a designer by the core problems of this kind of device and the range of solutions. Ultimately, I want something I can sketch smart UML and UI diagrams with and have them convert to running software 😉

As a side-inspiration, Sarah Zettel’s excellent novel The Fool’s War includes pen-based UI in the spaceships where a special pen is used to access information and sign the log as an authentication device. Continue reading

Going Quiet and Employed

I’ve been a bit quiet on the blog recently due to being busy doing things I can’t talk about. My port of Mac software to WPF can’t be discussed until the company concerned announces their Windows version. It has been an interesting exercise in legacy code and some of the fringe cases you encounter when writing an emulator for Quickdraw!

I’ve also effectively retired from consulting, taking up a full-time job at Gemcom Software. I’m very limited about what I can talk about there, thankfully there’s an internal blog on which I can vent my need to think out loud. Based on the public job postings, I can say I’m working with WPF, C#, C++ and back in Python land (so much for all the time spent learning Ruby!).

My involvement in the REALbasic community is going to shrink considerably as I’m focussed on other languages and frameworks. I’ll still put some odd time into projects like rbKarel (although it’s mature and works) and further porting of OOFILE to RBRW but that’s about it. It will be interesting to see how hard it is to delve back into RB if I’m living in Visual Studio and C++ and C#.