SA Conference 2020 NYC

Ben_Hider_BH305631

We’ve just finished speaking at the O’Reilly Software Architecture Conference 2020 in New York City. It was, as always, a fabulous event, and we had a great time! In a few weeks we’ll be speaking at O’Reilly’s Strata conference in San Jose, as well!

At Software Architecture in NYC we spoke about entity component systems, in a talk entitled “Entity component systems and you: they’re not just for game developers“.

Below are some of our favourite links relating to ECS. We hope you find them useful!

You can also find a slightly earlier version of the talk (from last year’s conference) on YouTube:

Software Architecture NYC was fabulous, and we can’t wait for the next one! We really enjoyed seeing our friend r0ml give an amazing talk (as usual), and signing copies of our Unity Game Development Cookbook!

Catch us next at the O’Reilly Strata Conference in San Jose!

🧶 Yarn Spinner 1.0

The popular open source narrative game development framework, Yarn Spinner, which is maintained by Secret Lab and a fabulous community, has reached version 1.0. As part of our 1.0 release, we’ve debuted 5 exciting new features:

  1. Compiled Scripts — Yarn Spinner now compiles to a binary format.
  2. Automatic Compiling — In Unity, your Yarn scripts will automatically be compiled when they change.
  3. Line Tagging — You can automatically add unique tags to lines of dialogue, and generate a .csv file to send to translators with the click of a button.
  4. Code Extension — There’s a syntax highlighting extension, available from the marketplace, for Visual Studio Code.
  5. No more .yarn.txt — The file extension is now .yarn! It was time.

We want Yarn Spinner to be the best tool that it can be. As part of that, we’ve launched a Patreon page, and we’d love for you to help support its development!

We’ve got big plans, so please check out the website, follow us on Twitter, support the Patreon if you can, and join our Narrative Game Development Slack. And we’d really appreciate it if you shared the news!

Finally employed after all these years

Secret Lab

The year 2020 will mark the 12th year of the “Secret Lab” name existing.

It initially started as a vehicle for three University friends to do cool things and make stuff, but in 2010 we turned it into a company. So it’s the 12th year of the name, and it’s the 10th anniversary for the “real thing”: the company.

In that time, like most of Australia’s small businesses, we’ve paid other people more than we’ve paid ourselves, and we’ve paid ourselves (Jon and myself) as “Directors Fees”. This made sense, and was the easiest way to do things, but times change.

Starting this year (in fact starting in a few short weeks at the beginning of February, just before we start a whole lot of travel for conferences and events, representing the company) Jon and I will both finally be employees of the company that we founded.

This doesn’t actually change much: the company still has to pay us superannuation, but now we’ll be paying ourselves every month, instead of at the end of a financial year, and now our income will be a wage, instead of directors fees.

We made this change to make it structurally easier to pay ourselves, and to make things a little clearer as we plan to travel to represent the company so much this year. If anyone has any tips on running a small business, 10 years in, I’m all ears!

Either way: from February 2020, I have a new job! It’s very similar to the old one, but I’ll be doing more than just managing the company, as now I’ll be working!

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!