My Ideal Creative Technology Stack

My Ideal Creative Technology Stack

Posted in Thoughts

My Ideal Creative Technology Stack

Favourite technologies

Technology is key for bringing exciting ideas to life. I’m really lucky that I get to play with different technologies in my job, I see them as a bunch toys of that can be plugged into each other to make cool stuff. The types of toys that are in your toy box, could be described as a Technology Stack.

A Technology Stack is a list of technology services that can be used to build a system/application.

In this post I’m going to talk about the technologies in the Technology Stack that I either currently play with – or that I want to start playing with this year (aka my weapons of choice for a project)!

I won’t be going into any great detail, it will be more of a summary of the technology category and technologies that excite me within that category, rather than an in-depth analysis of the technologies themselves.

The technologies in my current ideal stack, from Design through to Cloud Infrastructure

Design

The beginning of a Technology Stack begins with Design softwares. The results of the design process are often anything from images, generated 2d/3d assets + animations, wire frames, user flow diagrams, user interfaces and schematics that need sending off for supplier manufacture. The below softwares are really useful in this process.

Photoshop

When you need to create custom assets, Photoshop is really great for the design of logos or edited photos. With the use of masks and filters, you can pretty much create any kind of artwork or animation.

Sketch

Sketch is great for the User Experience Design and User Interface Design process, I’ve used it a lot for creating User Flow Diagrams and Wireframes.

Blender

Blender is a 3D design tool that allows you to create 3D models and 3D animations. What makes it special is that it is open source, meaning that it’s free – which is pretty great given how much functionality it contains!

Kicad

For the design of electric circuitry, Kicad is perfect for creating Printed Circuit Board (PCB) designs that can be manufactured by a supplier. This is great functionlaity given that it is an open source software!

Prototype

Once a design has been created, prototyping can often help in figuring out how something should behave prior to going into production. Anything from reading analog or digital values sensors from a sensor, to powering an actuator, connecting electronics to the internet or creating a digital app / website.

Arduino

When prototyping electronics, the Arduino Uno is often my weapon of choice for quickly getting something set up. As long as you have a basic understanding of electronics and programming, you can hook up most sensors in no time.

Raspberry Pi

When connecting electronics to the internet for IOT based projects, I find the Raspberry Pi is the most practical tool for this. Its size, cost and processing power is enough for most photography or small scale sensor connectivity.

Framer X

When prototyping digital interfaces, Framer X is a promising tool for turning designs into interactive web prototypes. Whilst I’m still quite new to this tool and am learning more about it each time I use it, it combines with other popular technologies such as…

React

React JS, which is a development framework based on ES6 Javascript. Whilst this is considered a development language in itself, when used with tools such as Create React App (or Framer X), it becomes a powerful tool for quick prototyping.

Development

The exciting part of any Technology Stack. When development is ready to begin, I value technologies that are used by a big community (so they are easy to find fixes when things go wrong), can be used flexibly and are reliable. For these reasons, my preference is normally web based technologies – written with javascript.

Typescript

Typescript is an open source programming language created and maintained by Microsoft – it is a stricter subset of Javascript that implements static typing. When combining this with React and Next.js, my hope is that using this will improve code readability and increase integration with web developers in a team.

Aframe

Aframe is a 3D web framework that is used to develop WebVR and WebAR applications. It was originally developed by Mozilla and has been a leader in the WebXR space since its release in 2015 – this is a key technology that I think will be big in the next few years.

Solidity

Solidity is a framework that is used for developing blockchain distributed applications on Ethereum. It is similar to writing javascript and it is relatively straightforward to write – its complexity comes in getting your head around blockchain!

Tensorflow

Tensorflow.js is an open source deep learning library that was developed by Google and made for web developers to create their own artificial intelligtence algorithms. There is huge potential in this technology, I’ve already created a post about my first experiment with it on this blog.

Testing

Bugs are an inevitability when writing code, there are many different types of tests that one can do to find bugs. Using code in different ways to check code is becoming more of a standard to do this. In a Technology Stack, this is often overlooked.

Jest

Jest is a javascript testing framework that is maintained by Facebook, used to test your code and ensure that functions are operating as programmed.

Code Build

Code Build is a service by AWS that allows you to build and test your app in the cloud prior to it being deployed to a server. It is my ‘go to’ build tool as it easily integrates with other AWS services.

Expo

Expo is an open source tool for developing native applications for IOS and Android. This framework makes testing your app on native devices much easier during development with many of their in built features (including live update on the native device).

Truffle

Truffle is a development environment, testing framework and asset pipeline for developing blockain distributed applications (DApps). It is particularly important to use this when developing a DApps, due to the immutable nature of the blockhain ecosystem.

Deployment

The process of deploying an app / website can become quite fiddly at times, but its really nice when you create an automated process that can package up and deploy an app reliably. As I’ve looked further into this field, I’ve found myself drawn close and close to AWS technologies.

Docker

Docker is an operating system virtualisation platform, that is used to containerise applications so that they can be deployed easier within different server architectures.

Kubernetes

Kubernetes is an open sourced container-orchestration system that is used for the autmated deployment, scaling and management of containerised apps. This is often used with Docker as the application container.

Code Deploy

Code Deploy is a service in AWS that is used to automate the deployment of applications and is often my ‘go to’ in continuous deployment technologies as it integrates so neatly into other AWS services.

Elastic Beanstalk

Elastic Beanstalk is an orchestration service that is developed and owned by AWS. This is also my ‘go to’ application orchestrator, it can handle the set up and maintenance of servers, storage, auto scaling, load balancers and server analytics.

Cloud Infrastructure

Once you’re in the process of hosting an application online, you want a reliable, secure and cost effective way to manage this process. Having developed apps which rely on a server to show content to users, I’m becoming more and more of a fan of the serverless approach (uploading code to a cloud provider, in a manner that allows them to manage scalability and processing efficiently to lower costs). I currently rely on AWS as a core part of my Technology Stack.

API Gateway

API Gateway is a managed service provided by AWS that allows developers to set up a scalable and secure API. This is particularly useful when working with any of the below serverless technologies.

S3

S3 stands for ‘simple storage service’ and it allows developers to store objects, files and data through a web interface. You can also use it to serve static websites in a manner which is scalable and cost effective.

Lambda

Lambda is an event-driven serverless computing platform that allows developers to write code that is run in resposne to an event. It is automatically managed and scaled by Amazon – making cost and processing as efficient as possible.

DynamoDB

DynamoDB is a managed no-sql database that offeres key-value and document data structures format. It is autoscaling in nature and is developed to work at any scale.

My favourite technologies

There are four categories of technology that I’m really excited about and think will have a big impact on us in the future. Those technologies and the frameworks/libraries you can use to create things with are:

Internet of Things

Internet of Things (IOT) is the field where electronics meets the internet – and hardware is then able to gain connectivity with other web services.

Greengrass

Greengrass is a software that can be run on IOT devices, that connects them to AWS and allows them to interact with other AWS resources.

Azure Kinect

Azure Kinect is a sensor that utilises rgb and infrared cameras, as well as AI to map an environment. It is used a lot in my field to create interactive installations based on peoples movement.

Extended Reality

Extended Reality (XR) is a term that is used to describe an app that utilises Augmented Reality (AR) or Virtual Reality (VR). I’m personally excited by anything that helps make these technologies become more accessible via social media platforms and the web.

Spark AR

Spark AR is an augmented reality platform that allows developers to create Augmented Reality experiences within Instagram and Facebook social platforms.

Sumerian

Amazon Sumerian is used to create web based 3D content and web XR applications. The ease of integration with other aws services makes this technology exciting.

Artificial Intelligence

Artificial Intelligence is a very broad term – what most people mean by this, is an algorithm that is able to come to a on conclusion, by without being explicitly programmed to do so. This is often done by using Machine or Deep Learning training techniques to analyse data.

LEX

Amazon LEX is a service for developing conversation AI applications, I’ve demonstrated this working on a previous blog post.

Sage Maker

Amazon Sage Maker is a cloud machine learning platform, that enables developers to create, train and deploy machine learning algorithms.

Blockchain

Blockchain is (in a super short summary) a distributed database that is able to process automated transactions via functions that run on the network – called Smart Contracts. It is often associated strongly with crypto curruncies (e.g bitcoin), in reality these currencies are often a bi-product of the blockchain.

Amazon Blockchain

Amazon Managed Blockchain is a fully managed service that developers can use to create and manage a fully scalable blockchain network. This utilises popular blockchain technologies such as Hyperledger Fabric and Ethereum.

Drizzle

Drizzle is a collection of libraries that make writing front end code easier for DApps. It utilises Redux and is particularly useful if you’re using ReactJS as your development framework.

James Miller

James Miller

Snr Software Designer at D-Ford HCD lab.
Lover of Affogatos, Spurs and Super Smash Bros.

#extendedreality #machinelearning #blockchain #internetofthings

Did you find this article valuable?

Support James Miller Blog by becoming a sponsor. Any amount is appreciated!