Adventures with a client who won’t pay

Over at Secret Lab, we’ve been dealing with a client who won’t pay. Since October last year, we’ve been working on a gorgeous iPad application for a big name client who has been nothing but full of praise for our (quite frankly, amazingly good) work. They have literally sent emails thanking us and telling us how great the work has been.

Per our standard terms, we don’t turn over source code and ownership of source code until the final payment. They accepted this, in writing, up front. It’s pretty standard stuff.

The client has been hard to pin down, and has declared how busy they are are travelling the world (join the club, we travel all the time and respond instantly) and generally being very important, by way of explanation to their lack of responsiveness (not our problem, but whatever). They have also disappeared or been unreachable for large periods after the app shipped to the App Store and went live.

There was some squabbling by the client over this (I imagine they probably didn’t read what they agree to, pretty standard stuff — we suspected they hadn’t read the terms when we started getting emails complaining that we were over budget. We were not over budget by a single cent), and when they refused to pay until they received the source code we renegotiated (after offering escrow, and a few other options), and arrived upon: they’d pay 50% of the remaining owing, we’d send the code, they’d immediately send the other 50% payment.

They paid the first 50% (late, I might add) and we immediately (literally, immediately) sent the code along. They have yet to pay the other 50%.

Now, months after the app shipped (literally months after the client shipped the app to the App Store and is collecting the IAP revenue), and weeks after they were meant to pay the second 50%, they have declared that it is ‘terrible’ and ‘horribly broken’, and are refusing to pay until they fix it. (I say they fix it, because while we’ve offered — even though we’re definitely not obligated to — they haven’t given us a bug report.)

It’s at this point I should add: after shipping the first release to the App Store, the client activated an optional final milestone in our agreement for us to perform some additional work on any bugs discovered since launch. All were minor, and largely cosmetic (the client supplied the list), and we shipped that build off to them. They have yet to set it live, and if there was a ‘terrible’, ‘horribly broken’ issue with the first version that shipped we’d have expected them to include that on the list of things to fix for that milestone (and if they were so unhappy with us why did they activate that milestone?)

Despite the client disappearing for a number of weeks in between the app shipping and them turning up and declaring it broken we, of course, offered to take a look into the issue they were seeing.

No bug report was forthcoming and the client went back to ignoring us. So we got our lawyer involved, and the client responded with a video showing the app not working to our lawyer. They didn’t supply a bug report, or credentials that result in the broken experience the video showed. Nothing useful, just a video. (We can’t reproduce the issue, but aren’t accusing them of lying; software is software. Software has bugs. While they had ample opportunity to report such a bug, and while we’re no longer really obligated to look into it, we would, because we like our clients. We just need an actual bug report, not a video, and not emails ranting about how everything is broken without providing context or requested information).

We’re owed nearly $50,000 AUD, and are very very out of pocket. The client throws around such comments as “it’s not that much money”, and “money is not the problem” but doesn’t take us up on our very generous offer to take a look into their issues regardless (and, indeed, only sent a video when our lawyer got involved. The video isn’t helpful to actually investigate the problem.)

We’re now in the position of having to take what seemed like a dream client to court for an amount of money that, while not very much in the scheme of things, makes a big difference to a small business that’s very selective with who it takes as a client.

Suffice to say, it hurts us, big time, and makes the difference between being able to go to a conference where we might find more work, and having to stay home. Or, you know, fund the popular open source project we work on.

I guess that we’re lucky that we’ve never had to really deal with this before in our nearly 12 years of existence.

Recommendations welcome. My email is paris@paris.id.au ❤️

Software Architecture NYC 2019

The O’Reilly Software Architecture Conference 2019 (SACon) just wrapped up in New York City, and I was privileged enough to attend as a speaker with my friend and colleague, Tim, and partner and colleague, Mars. Together, we presented a session called Entity-Component-Systems and you: they’re not just for games anymore, and Tim and I did a book signing for our recent title Learning Swift (3rd edition), as well as a Meet the Experts session.I was initially quite sceptical of the SACon, because the idea of an event based on ‘software architecture’ conjured up images of very dry sessions on traditional, serious enterprise architecture, presented by uninspired, uninspiring people. As it turns out software architects, and those who attend software architecture conferences, are incredibly passionate, interesting people, who are the very opposite of the straight-laced faceless people I imagined.

SACon was a melting-pot of interesting ideas, framed around the discussion of software architecture as a profession. O’Reilly’s conferences are always polished, well, run and all that good stuff (disclaimer: as might be obvious, O’Reilly is my publisher), but the attendees and speakers are what makes any conference shine. This conference definitely shone.

All the sessions that I attended were excellent, but the highlights of the conference for me were definitely the following talks:

The ‘hallway track’ was also exceptional, and we had some fantastic conversations with attendees on topics ranging from the rise of the Rust programming language to the use of ECS in non-video games to the merits of the Swift programming language to designing video game engines, and beyond.

Tim and I really enjoyed our book signing, and found ourselves face-to-face with one of the biggest queues we’ve ever had for a book signing, and had some excellent conversations with developers, architects, and team leads who were excited to learn Swift from our book, or share it with their teams back home.

Our ECS talk went well! We had a packed room (which was also one of the most palatial conference halls we’ve ever spoken in!) and got 5-star reviews with great feedback.

If you’re interested, you’ll find the slides from our talk on ECS are available via the conference website. You can also find a video embedded below, or on YouTube, or O’Reilly’s Learning Platform. (if you have an O’Reilly Learning Platform subscription, we strongly recommend watching it there!)

There’s some follow-up resource we want to share with attendees of our talk. We hope you find them useful!

I’m excited to return to a future SACon! The good news is there’s lots of them to choose from! San Jose is coming, as is Berlin!

Newsletter

I’m making an effort to try new ways of communicating, and also to encourage myself to write more. As part of this, I’ve started a little newsletter.

So, if you’re interested, feel free to sign up over at TinyLetter… 🙃

I won’t be sending many emails, and I won’t be sharing or selling people’s contact information, but if you’d like to keep up to date with my travels, dogs, books, work, and things that I find interesting, this might be of value to you!

OSCON 2018 Recap

Photo by O'Reilly Media: https://www.flickr.com/photos/oreillyconf/43498186701/

A few weeks ago I attended, and spoke at, my 10th OSCON conference. I regularly say that OSCON is my favourite big conference, and every time I attend I’m reminded why I love it, and how much I love it: OSCON is a fun, relaxed, and very approachable place where companies and people involved in open source as contributors, consumers, and users, interface, work with, and have fun with each other. It’s unique in perspective, content, and value. And it’s super engaging everywhere from the lunch hall to the hallway to the sessions and in between. You should go, if you get the opportunity (O’Reilly runs a wonderful diversity and inclusion program, which make me able to help you make it along!)

This year was OSCONs 20-year celebration event! 🎉 If you have a Safari subscription, you can check out the videos from the event here. There’s also a collection of keynotes and interviews from the event on the O’Reilly Media YouTube channel.

On the Monday, Tim, Jon, and I presented a 3 hour session on Open source game development with Godot. Godot is an amazingly polished, and entirely open source, game development engine; Godot is a project of the Software Freedom Conservancy, and is aggressively competitive against the big commercial engines, like Unity and Unreal. I largely led this tutorial, supported by Tim and Jon. We got great feedback from our attendees, and had a full house. I’ll post the material from the workshop in the coming week.

On Tuesday, Tim, Jon, and I presented a 3 hour session on Machine overlord and you: Building AI on iOS with open source tools. We covered everything from CoreML, to Vision, to Apple’s Turi Create Python libraries. Our attendees loved it, and gave us great feedback; it was a fun precursor to our new book, Practical AI with Swift (more on that soon!) You can find the material from this OSCON session right here.

On Tuesday night, I stepped way, way out of my comfort zone and presented a 5 minute Ignite talk on The realities of weightloss. This talk was based on a seed of an idea that Mars had, which I’d taken and run with in a slightly different direction (with her permission). It seemed to resonate with the audience, and I got a lot of thanks, and hugs, from people afterwards. ❤️

The next day, Wednesday, saw us doing our traditional book signing (for the latest Learning Swift) in the O’Reilly Media booth of the expo. We had a huge line of people, and signed for about 45 minutes. It was great fun! The O’Reilly staff treat us like royalty, which always makes us feel very special.

On Thursday, in the second-last slot of OSCON 2018, Tim and I teamed up with Mars to deliver an entirely-live coded talk on Learning Swift with Playgrounds. Mars wrote all the examples, designed the flow, and really got thrown in the deep end—and she totally nailed it! Tim provided an excellent narration of proceedings, as Mars live-coded her way through the demos (with Xcode crashing, as is custom!) We got many fabulous reviews, with the talk getting a 4.9/5 ⭐️ average. We were thrilled. You can find some notes here, and the fabulous Playground that Mars wrote here on GitHub.

Our friends, VM, Josh, and Paul, also delivered well-received, and awesome talks.

We really love working O’Reilly, particularly our amazing editor, Rachel Roumeliotis, who has risen the ranks of the company while we’ve been working with her (absolutely no connection to us working with her!) and is now a VP of Content Strategy.

We’re doing a bunch of great projects with O’Reilly over the coming year or two, including finishing up a new edition of our iOS Swift Game Development Cookbookas well as a new Unity Game Development Cookbook, a Head First Swift book, and a brand new title, Practical AI with Swift. More updates on all of these soon!

Our latest edition of Learning Swift is available, and getting a bunch of great reviews, and our Mobile Game Development with Unity remains a fabulous guide to building games with Unity. Check them out?

I’ll leave you with one of my favourite tweets of the event, which someone sent following our Learning Swift 3rd Edition book signing:I can’t wait for next year’s OSCON: July 15-18, again back in Portland!

/dev/world/2018

The conference that I help run, /dev/world/2018, is selling tickets!

We have amazing keynotes from the following people:

  • A Software Engineer from Savage Interactive, creators of hit iPad art app, Procreate
  • Quentin Zervaas, creator of Apple Design Award winning app, Streaks
  • Richard Moss, author of The Secret History of Mac Gaming

And we have workshops!

  • Quality assurance and testing fundamentals for small teams
  • Refactoring a horrible codebase guided by tests
  • Adding AI to your applications with TensorFlow Lite for iOS
  • Property Based Testing in Swift
  • UX for Developers

And sessions!

  • xcodebuild for fun and profit
  • Accelerated App Development Using CloudKit: Idea to Featured in a Week
  • Ada on an iPad?
  • Batteries and Locks: Modern Tech from Ancient Times
  • Build your own synthesiser
  • Building Frameworks Natively in Swift
  • Dancing with Attitude – Building experiences with CoreMotion
  • Designing for iOS: Resources You Gotta Know
  • Fun with fudge factors: prototyping vague things
  • How to go from bad practice to best practice
  • How To Make It Look Like You Know What You Are Doing
  • Let’s settle this UI/UX thing once and for all
  • Machine Learning …without the Machine
  • Making a visual novel in HyperCard
  • Mis-using Bluetooth wristbands to enhance cognitive accessibility of an app for inpatients with severe brain injuries
  • Performance Tips & Tricks with Unity on iOS
  • Push Notifications and the Limits of Innovation
  • Rewriting Alamofire: Into the Core
  • SIL for First Time Learners
  • Solving the Massive App Problem: Rearchitecting a 5 year old codebase
  • State Machines are your friend
  • Structuring Your Code with the Model-View-Presenter pattern
  • Swift, for Objective-C OGs
  • The State of MVC
  • There And Back Again with the Roundtrip App
  • Tools for testing, logging, and analytics-ing your code
  • VIPER for iOS

We’ll also have a dinner keynote, during our famous quiz, from Paul Fenwick! It’s going to be amazing! Grab a ticket?

OSCON 2018

I’m super, super, super excited to be back at OSCON, my favourite conference, in Portland. This year you can find me at the following bits of OSCON:

You should also check out the following sessions, from my friends: