Tools & Languages

Over the next two years and further into the future I will be using a plethora of tools to develop apps. These tools will range from text editing tools to fully featured integrated development environments, graphic design applications to version control, all with their respective languages and idioms.

It is worth mentioning that the Masters in Creative Application course that I am undertaking has a broad scope in application development and that the term “application” does not simply refer to mobile development, but can also be applied to smart environments, art installations, embedded systems and many more. As such the tools I use should be picked depending on the nature of the app I wish to create and the types of projects I wish to engage in.

Requirements & Considerations

Areas I wish to explore:

  • Server Side Website Programming
  • Cross Platform Development
  • C++
  • QT Cross Platform Framework

Keep in mind:

  • I own a MacBook Pro, an iPhone, an iPad and an iWatch.
  • My work laptop operates on Windows 10.
  • I have experience using Xcode as an IDE.
  • I have experience developing in Objective C and Swift.
  • I have experience developing for macOS, iOS and watchOS.
  • I have experience using Visual Studio as an IDE.

Server Side Website Programming

Vapor

Vapor is an open source web framework written purely in Swift that works on macOS and Ubuntu. It’s fast, has packages already for authentication and routing, with a low memory footprint; which means cost is low when deploying to the cloud. The community is large, particularly for Swift, but also Vapor, and documentation is incredibly well written for both technologies with some brilliant Tutorials. Deployment is limited as it hasn’t been around for as long as other frameworks, but there are services such as Vapor Cloud and Guides to put in on Amazon AWS.

Laravel

Laravel is a PHP Framework, that promotes clean and beautiful code. The framework is skyrocketing in popularity with a massive community to help and support development. Laravel attempts to alleviate the pain of common tasks such as authentication, routing, sessions and caching. A large amount of work has been done to make taking on this framework as smooth as possible, which makes it an excellent choice for a first web framework to start in. It is also meant for MVC (Model View Controller) based applications, which I’m familiar with from developing for macOS, iOS and watchOS. There’s something about Laravel and their website that really speaks to the designer part of me. The website is clean and doesn’t intimidate with so much code and specs especially the LaraCasts tutorial website.

Symfony

Symfony is a high performance PHP frame for web development which reads to be well suited for large-scale or complex enterprise level projects. Whilst it has a large amount of documentation there is little design put forward to bring in the new user and I find myself looking at “a guided path through our 75+ video tutorial course” but not really knowing which one to start with…

Languages

PHP (Laravel or Symfony)

PHP is a popular general-purpose scripting language that is especially suited to web development. Laracasts again has a brilliant array of tutorials regarding PHP which I will steadily start working my way through.

Swift (Vapor)

Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns. I am very familiar with the language having taken it on since release and developing application across the range of Apples platforms.

HTML

Hyper Text Markup Language is a markup language that is used to structure a web page and its content. I am pretty familiar with the language but need to familiarise myself further and do more research into HTML5.

CSS

CSS is a language that describes the style of an HTML document.

Summary

It’s interesting to read that the developers of Vapor credit Laravel as an inspiration for them when writing a server side web framework and that aspects are shown when you start to dig into it. Using the same language for both backend and my apps would be of great advantage but it would be good to learn a new language and stretch myself.

This will be a new realm for me as I have done little in developing on the web other than creating static websites using Jekyll and Bootstrap. I am particularly interested in the REST architecture as well as operational transformation technology allowing server and client apps to communicate and stay synchronised.

Cross Platform Development

There are a considerable number of cross platform frameworks available, which use a range of different languages, here are but a few we spoke of in our webinar:

Luckily ETC develops using QT, as such it would be in my best interest to learn the framework and accompanying languages (C++). QT is a complete software development framework that runs on various software and hardware platforms such as Linux, Windows, macOS, Android or embedded systems.

I find the debates between native and cross platform applications really interesting. I have often found that most applications built using a cross platform framework do not feel native or that they often miss design elements that are integral to the design of the platform. Having developed myself on macOS, iOS and watchOS using their native frameworks Cocoa and CocoaTouch, I am interested to see whether I can create an application that feels and looks native using QT.

Visual Studio

Visual Studio, developed by Microsoft, has consistently been the more fully featured application with a substantially better debugger in comparison to other IDE’s. It is used predominately over other IDE’s by ETC, as such would be in my best interest to get comfortable with over the next few years and of course I can take advantage of that fact and get help from them when problems arise.

QT Creator

QT Creator is QT’s personal IDE and is designed to make light work of creating cross platform applications with their framework. It has a simple and intuitive interface and has better knowledge of its classes and libraries in comparison to Visual Studio and the QT Plugin. It has extensive documentation and resources to help aid development with some nice “drag-and-design UI creation”.

Languages

C++

C++ is a statically-typed, free-form, (usually) compiled, multi-paradigm, intermediate-level general-purpose middle-level programming language. I’d like to learn C++ for a variety of reasons; firstly because its the main language used in R&D by ETC. It is a low level language with high-level libraries, which means I can learn both levels of programming (I like the idea of developing some very fast and efficient code), and lastly because, as quoted from Think Like a Programmer by V. Anton Spraul, it’s “The real deal–it’s programming without training wheels. This is daunting at first, but once you start succeeding in C++, you’ll know that you’re not going to be someone who can do a little coding–you’re going to be a programmer.”

Text Editors

Sublime

A cross platform application with some very nice feature such as multiple selections (Xcode 10 only recently got this feature!). I’ve heard it spoken of in tweets, slack and blog posts very highly beforehand. It has a lovely clean user interface and looks simple to use on initial glance with some high level API & Package features and extensibility options with decent, although quite spartan, documentation. Although it can be downloaded and evaluated for free, however a license for $80 must be purchased for continued use.

Atom

A cross platform open source text editor with a large community and support behind it. I had stumbled across this application in Week One and used it to set up my Critical Reflective Journal using Jekyll and Github Pages. The user interface is incredibly clean and intuitive. Installing packages is/was very easy. As Atom is free and I have no problems with it thus far I will be continuing to use it for at least my journal if not for any web development & text editing work i do in the future.

Version Control

Git

Git is a free and open source version control system created by Linus Torvals, who also is the principal developer of the Linux Kernel. Linus Torvals’ work in computer software is incredible and is quite nicely summarised in this Ted Talk. I have experience using Git in my own projects before starting my course at Falmouth and whilst still new to its terminology and power I find it simple to learn.

GitKraken

I like to use GitKraken to help visually show the git repository I’m working on. It’s UI is beautiful, support is large and fast using Slack and it’s integration into online hosting such as GitHub is very good. I also like to take advantage of their Glo Boards to help document issues & features and their progress.

Perforce

I have experience using perforce at ETC. I find the application P4V not very intuitive and have a strong fear I’m going to destroy all my colleagues work when merging…

Design

Adobe XD

Adobe XD is a vector based design tool for designers to prototype ideas and concepts for websites, mobile apps and much more. It allows the designer to use drawn elements and wire them up to each other to create animations and transitions from one view to another. It allows for some incredibly prototyping possibilities.

Sketch

Sketch is a vector based drawing app. Vector based graphics are mathematically drawn as such when scaled you do not loose resolution. Vector Graphics are incredibly using in the application world and I’ve being using this application for years to draw vector based files (.svg) for both application development and documentation.