Tom Hastings Programming Resume
Introduction:
Are you looking for someone with varied programming related skills and a passion for problem solving. Perhaps a highly self motivated and creative person to join your team? I am looking for a challenge, to be involved in building something, learning new technology and sharing the knowledge I have gained from my own projects.
Downloadable PDF version of resume
Check out my Website and App portfolio here
Outline of my current web-based contract with University College London
Contact: tom@devsoft.co.za
Devsoft.co.za – my software development business
PROGRAMMING – languages and frameworks:
- Python
For the past year I have been working almost exclusively with Flask, designing web interfaces for complex scientific workflows, and creating visualisations of large datasets. I started with Python after becoming interested in Machine Learning a few years ago, and Python is the language to use for this. My “Monkey Detector” app using Pytorch was a fun learning project. I also use Python for Kodi plug-ins on my home network. - JavaScript
Anyone developing for the web needs to know JavaScript. I am very familiar with the Flask back end with Jinja templating, Bootstrap, JQuery, as well as the excellent Tabulator library for tables. Currently (2022) my free time is spent on side projects using this stack. - Linux
I have been using Ubuntu as my main computing system for over 10 years, both in the cloud (DigitalOcean) and on my Laptop. As a touch typist I am extremely comfortable on the command line. Deploying web apps and services to an Ubuntu based server is second nature to me, using Apache or more recently, Nginx. - Android (Java)
I have seven Android apps published to the Google Play Store, five of which are written in Java. I have developed many more for personal use only, including the most recent, CoronaVirusSA, an open source app which graphs reliable stats on the COVID-19 outbreak in South Africa. - Processing
I have extensive knowledge of this Java-based programming language. The great thing about Processing is the way you can deploy to Desktop, Mobile, and Cloud with only a few modifications to the same code base. - Bash
Over the years I have built up a library of useful scripts to solve problems such as bulk editing pictures or video, watching a directory for changes, auto backups, compiling, and much more – on the desktop or Ubuntu based virtual server. - Git
Version control is a game changer for programming. I maintain a public repo at Github, a private one with BitBucket, and every software project I start has it’s own commit history by version two. - Arduino
SmartPoi is a project I worked on for over 6 years. The process taught me many useful things about networking, embedded programming and IOT especially, since it is a connected “thing” project, using an Android app to control LED equipment in real time. The equipment I designed, programmed and built is used professionally in performance at Big Top Entertainment. Since I started with Arduino more than 10 years ago I have completed a huge number of projects, using peripherals like steppers, SD cards, relays, accelerometers and other sensors; and communications including WiFi, Bluetooth, IR, RF and Serial. Currently my favourite MCU is the ESP8266 – but I am busy upgrading to ESP32. - Kotlin
Anyone making apps for Android knows about Kotlin. While I only picked this up recently, I published a Kotlin based app (using Machine Learning) to the Google Play Store and more recently published another based on the same code. My knowledge improves every time I add a feature to these apps. Here is the write-up on how and why I made the original Monkey Detector app. - Others:
Systems administration – I have been using Ubuntu Server since 2014, most recently hosted on Digital Ocean. LAMP stack, LetsEncrypt, ssh, systemd.
C – after using Arduino for so long, I have started using c for some things, particularly looking at networking, since it is so much faster.
MySql – I read a couple of books on this subject, and even began work on a replacement for our spreadsheet based booking system using databases, but the client (my wife and business partner) ultimately opted to stick with the old, familiar system. I can JOIN a few tables together as a result of the exercise, however. I have also used SQlite and MySql with Python apps.
Mosquitto – I host my own MQTT service with Python code to manage users
Docker – I have built and deployed a few Docker containers for various web services.
Google Cloud platform – This is a large resource I have looked at and tested various parts of for personal and work projects – the mapping, image recognition, push notifications and speech to text in particular, as well as using app engine and real time database.
AutoHotkey – when I was using Windows I used this scripting language to automate many GUI processes
Microsoft VBScript – I made a front end for our business Excel Spreadsheets (to easily search for customers, add orders, automate mail merges and so on) My wife is still using this system after 9 years.
PHP – not really but I did publish a forked and adapted WordPress plug-in recently. - Visual Programming Tools:
Scratch – I taught myself this so I could show my son
App Inventor from MIT – after learning Scratch I tried this out, and made a few apps with it. A great tool for learning.
Digital skills:
- Wordpress
I have built and host several websites, including this one. Here is one for party venues in Durban, and this one is to showcase my entertainment company. I used DIVI theme for this one. - Google Adwords and Analytics
I am very familiar with this tool for tracking customer engagement online, and reaching new audiences. - Excel
I am familiar with Spreadsheets, a useful tool. A few years ago I developed a front end for our spreadsheet based booking system (using VBScript), which my wife is still using today. - Scribus
Desktop Publishing is a valuable tool for creation of content. I have used Scribus to make pamphlets and posters, and more recently a PDF manual for the SmartPoi product. - Kdenlive
Video editing is part of my job at Big Top Entertainment. There are some old and some new examples of my work on the Big Top YouTube channel. The best part about Kdenlive is that it’s based on the easily scriptable “melt” back-end. - Krita
Picture editing is something I have to do often, whether for a new app icon, or promotional photo. When it comes to bulk editing, nothing can beat command line tools like ImageMagick. - FreeCad
A friend has a 3D printer and I have designed a few models for it. Here is one version of SmartPoi visualised. - Fritzing
Circuit design is an advanced topic, however Fritzing makes it easy to do. From breadboard to circuit, the SmartPoi circuit was designed using this tool. - Music production
A long time ago I was a working musician and part of my job was sound. I did a lot of editing with software such as Sonar Music Creator, Reason and Ableton Live. I am very familiar with music production as a result – more recently I implemented FFT sound reactivity for my SmartPoi Android app.
Personal Skills:
- Team Player. As a remote developer, communication is key, I don’t hesitate to ask questions and try to always communicate clearly with other developers. At my entertainment business, Big Top Entertainment, every day is a new challenge. From 5* Hotels to Cruise Ships and Shopping Malls, we have to be ready to perform. In my nearly twenty years in the entertainment industry I have learned to manage customer expectations, sell myself and my company’s products; how to manage a team, and be managed as part of a team. Most of all I can say that I am a team player.
- Self Management. As an entrepreneur who works from home I have learned valuable time management skills over the years. I use Trello, a kanban style to-do list tool to keep on top of my progress in projects. Every spare moment is an opportunity to complete a task.
- Persistence. If you don’t succeed, and Stack Overflow doesn’t have the answers, come back to it later. I love tackling problems from multiple angles at once, and recognizing when I may have a knowledge gap which may need to be filled before proceeding.
- Reliability. My reputation stands for its-self. Reliability means not only being on time, but being early. This is not just something I believe, it’s something I live by.
- Friendliness and courtesy. I meet new people every week as part of my entertainment job. I am fascinated by different cultures and enjoy interacting with fellow team members, and working together towards a common goal.
showcase:
For over two years now (2020/21/22) I have been involved in a couple of challenging projects, Onto-spread-ed – making it easier to input ontology data using online tables – and Onto-text-tag, visualising tagged text (sourced from articles on the biomedical literature site, PubMed) using the spacy python library. Both of these projects utilize JavaScript, JQuery, Jinja and Bootstrap on the front end, with a Flask back-end hosted on Google Cloud.
Outline of my current web-based contract with University College London
Another recent project (2021/2022), similar to the above, involved building a web interface to access the PascalX gene scoring program – with a long running service (up to 24 hours) and sending results via email after processing the data. I used RQ scheduler and Redis to queue the incoming jobs. I also had to pay strict attention to GDPR requirements as it was for the Computation Biology Group at the University of Lausanne (Switzerland)
Recently (October 2021) I used my newly acquired Flask skills to launch LED WebSite Indicator, a free subscriber service which blinks an LED whenever you receive a visitor to your website. This project includes a custom WordPress plug-in, MQTT service, and web based subscription work-flow, as well as embedded code to check in to the service and blink the LED. I also published a python library to make this service easy to use from Flask/Django based sites.
A few years ago I created some learning projects, using Flask and JavaScript, based on some older Processing based projects: magicpoi.circusscientist.com and k8.circusscientist.com
As mentioned previously I have seven apps published to the Google Play Store. In addition I have made the Teddy_Bear_Detector, and CoronavirusSA apps available to download and evaluate. Source code is also available on my github.
Here is a site I made to showcase my Web Development and Android app Development services. (and to help me try out REACT)
This website, circusscientist.com is a kind of showcase in its-self, so please browse around and have a look at some of the projects.
My Github is here: https://tomjuggler.github.com – most of my code is hosted privately with bitbucket, but I do share where I can.
Also you can check out the fun POV poi demo (turning a square into a circle, kind of magical) – just click on the image to change it.
The K8 juggling ball colour change demo is also kind of fun (instructions are here)
Some sketches built with Processing.js: