It’s been a crazy month since my last post. The transition from relying on a well-known language like Ruby to a brand new one in Swift was not without its moments. Couple that with getting back into GUI programming, trying my hand at using XCode, and learning some new day job technologies (SIMD assembly coding on two architectures), and I was being mentally stretched thin. That said, on all fronts, I’m cresting the learning curves.
Project Management
One of the big pieces in getting Paul and I back on track was finding and using a project management tool that we could both use. The BitBucket code repository site we use for our development purposes had support for linking to a project management site called Trello. Trello, now owned by Atlassian, is a way to manage project tasks in a Kanban style using task cards which are put into a variety of states, like: New, In Progress, Done, &c. As free software, it was well worth the price, except that we frequently found ourselves writing down numerous tasks that sat in the New section waiting for some time to open up. As priorities shifted, it was impossible to manage the mountain of work that the two of us needed to do.
Frankly, it was daunting and a bit of a hit to our morale. Maintaining such a huge set of tasks made it seem like we were biting off way more than we could chew in order to get this game system off the ground.
We needed a better way to work and manage this project. As both Paul and I use Agile-based methodologies in our respective day jobs, we wanted to find a low-cost tool to help us use these methodologies. Instead of a flat file of work to manage, we wanted to use the hierarchical methods of Agile: Stories, Epics, &c.
Enter Taiga. Taiga is both an open source project management tool and a cloud-based services site. While it is possible to install your own version of Taiga onto your own personal server, if you have the proper web hosting plan, which we don’t (yet), you can, for free, host one private and as many public projects on the Taiga cloud as you want. And that’s what we did: Brick Mill Games’ development plan is a private project on the Taiga server.
The effect of this change is already bearing fruit. While we still have quite a few tasks to migrate to the new system, our first Sprint is in progress and the focus of working in a dedicated sprint is already bearing fruit.
Going Nib-less: Swift sans XCode
As bloatware applications go, XCode is up there. It is well-nigh impossible to learn how to write a simple application for the macOS / iDevice world by using XCode by itself. Apple’s on-line documentation is marginally helpful and the Internet is full of tutorials that border on the simple. While I can see how XCode can be useful, if you’re willing to spend months learning and adjusting to its quirks, it can be quite a handy tool. And if you’re trying to write iDevice applications, there is no alternative. But TClient (working name for TOCS Client) is not targeting the iDevice world. It’s (going to be) a (cross-platform) desktop app.
Luckily, I’m not the only one who hates using XCode. Over the years, numerous developers have shunned the bloatware and hidden UI scaffolding magic (nibs and xibs) that occurs when using XCode and have written the GUI code directly.
And after spending hours of time in research and frustration trying to initialize and activate the program correctly, we now have the framework for a working macOS application built using Swift.
I might talk a bit later about the pros and cons of coding in Swift are, and/or the joys of running nib-less, but so far I like it.