I'm Beginning the Long, Arduous Journey of Learning Swift Programming

Ok, so here we go. I have decided to jump on in and teach myself how to program in Swift. What is Swift you may ask? In short, it is a programming language similar to Javascript, Pyton, C++, etc. It is one of the newer programming languages out on the market and seems to have its strongest presence in the Apple ecosystem since Apple is a main developer behind the environment. I won't bore you with all of the details around what makes the programming language interesting, but I'll talk a little bit more about why do I even want to do this. 

So I have actually done a little bit of programming on and off on my since, probably college or so? I started off years and years ago teaching myself html and CSS over at w3schools.com. I was coding up my own websites in html from scratch. They were terrible, but it was a hell of a fun thing todo (I wonder if I can find a screenshot).

Due to my GIS training through grad school, I had an opportunity to dabble a bit in Visual Basic and then in Python, as those are both the scripting languages for ESRI's ArcMap software. I never really got good at either of those two, mainly because I never had an opportunity to immerse myself in the environments, butI have always been able to grasp the general concepts of programing. I even did some SQL scripting years back when building the roadway database that we currently use where I work. To this day were are using the database in is original format. 

So, what brought me to this place of wanting to learn programming again, and do it in Swift? Well, the short answer is D&D. The more complex answer is I would like to have some sort of easy career I can retire into. 


What really started this whole thought process is something that has been brewing on my mind for the past year or so. I have for the longest time been trying to find an application, or database, or something that would satisfy my needs for keeping track of my notes, and ideas for my D&D campaign. I have tried keeping track of my notes and ideas in Evernote, Onenote, and various other specific platforms. There are a lot of tools out there and I have tried just about everything, but nothing has really gelled with how I want to work. The closest app so far has been one called Game Master 5, developed by Lion's Den. I feel it is very close to balancing the need to capture a range of information while at the same time, showing the right information to me at the right time. My only real gripe with it, is that it is wholly mobile focused, so the creative writing experience isn't great. There is technically a desktop app, but it seems more to just be a mobile application in some sort of wrapper. 

One of my biggest issues with most of the platforms I have tried is that they are just too big and unwieldy. Kanka is a great example of this. It is a super robust place to store all of your information. It is a giant database platform, but when it comes to having info in front of me for running the game, it just didn't work for me. 

My other big issues with most of the tools I have tried is that everything seems to be online these days. Almost all of the applications I come across are web based, and more likely than not subscription based. I suppose that's fine, but I sort of like the idea of having my writing notes stored in a manner that can always be available locally. Especially when we have cloud storage like Dropbox, Google Drive, Etc. When I have worked with various creative writing projects, such as Nanowrimo, I dunno, I just can't imagine having all of that text in a purely browser based environment. Ideally I would like all of the notes to be easily accessible outside of the application in a universal format such as markdown, .RTFD or something along those lines. That way they can be pulled up from a cloud drive easily. Some of you at this point may be asking me, why don't I do just that? Store all of my notes in .markdown and just keep them in my iCloud Drive? Well, I could do that, but the limitation there is that there is no elegant way to have multiple resources (i.e. pages, files, etc) open in front of me at the same time without having a mess of floating windows or constantly opening and closing files. That approach also makes it difficult if I need to refer to an NPC that is stored in the NPC file, when I have the scene written out in another file. 

Finally, and I think this is perhaps my biggest gripe, is that a lot of the applications seem like they are great as database platforms, but they don't make for great creative writing experiences. A large part of the D&D work for me is not just collecting the random name table for all of those NPC's and Inns, but actually writing out the descriptive text for the world your are presenting to your players. Again, you may be asking why I don't just use a Markdown editor, or Google Docs. I feel like a word processor is just to "monolithic". That singular writing silo is perfect when actually writing, but when running a game, you want to be able to quickly pull up the name of that tavern from that town from three sessions ago. 

There was a really neat piece of writing software that was just recently discontinued from Mariner Software called Storymill that really hit well with me on the interface. What I really liked about Storymill's writing interface is that you could break your writing down into not only chapters, but also scenes within each chapter. You could then tag characters along with other notes that would show up in those scenes and chapters. You can then view the scenes or chapters as a whole or as individual passages of writing. Seems like a perfect fit for RPG writing, right?  

So my perfect software is something that would allow me to write creatively, composing my my world in scenes or chapters and then allow me to store that information locally in a readily available file format that will sync through a cloud drive, in my case iCloud. Seems simple enough. Oh, and I don't want to have to pay $60 a year for eternity for it. 

So I see that I am running pretty long in this blog post here, so I think I will wrap this up for now and give you a bit more information in a follow up post about my second goal with learning to program, a second career, and then finally talk a little bit about how I am starting to approach this endeavor so far.