Study Log

Background

During my professional career I have moved through the ranks of IT and I try to stay in touch with hands-on work on software design and programming although for the last 25 years or so my roles have been in Program and Project Management

Recently I attended a master class on Artificial Intelligence and Machine Learning at the University of Technology Sydney (UTS), and that opened my apetite for getting into the details of that kind of implementations using Python Laguage. This also took me into the Web development techniques which I have used to build this site.

One key motivation was that, eventually, I will be requested to manage a troubled project trying to implement this stuff…

Another motivation is the fact that I am a nerd at heart… I am (or used to be) a C++ programmer, I do quite a bit of VBA coding and other hands-on implementations to assist me in the management of my projects and programs.

I decided that my studies would be in my own discretionary time (i.e. no time off from work) and at the lowest possible cost. Also, I decided that I would keep a record of my studies.

Over the last few months I have been exploring different sources of information and I have worked in a number of little personal projects more or less concurrently.

I would like to share with you my experiences and progress.

My Projects or Streams of Work

The following table shows the main streams of work undertaken for my studies. At the moment, the main focus is the Personal Blog Application which I intend to improve and enrich with the work coming from the other streams.

ID

Project / Stream

Description

Main Python tools/modules

CTX01

Automating stuff

Automating stuff such as WebPage scrapping, merging spreadsheets, etc.

· Python development environment set-up

· Beautiful soup

· Anaconda

· PIP

CTX02

Schedule Management Software

Re-development and improvement of software that I have written to assist myself and colleagues in the creation, integration and reporting on schedules in complex projects and programs

· Win32com.Client

· Pitz

· datetime, dateutil.parser

· SQLite

CTX03

Personal Blog

Application

Development of fully functional and secured web application using Flask.

The application includes authentication and password encryption

Deployed in production in December 2019 on a cloud Linux server, this included shopping/selecting the hosting services provider

Setting up NGINX, gunicorn and Supervisor as well as securing the site by moving to https.

In Jan-2020 this is my flag-ship project. The original purpose was to go through the technical issues and challenges. Past that stage, this project is now to improve content and presentation and make it a marketing/branding tool.

· Flask

· WTF

· Bootstrap

· SQLite

· Blueprint

· itsdangerous

CTX04

Data Maps

For this I am using libraries that facilitate the extraction and manipulation of data combined with the ability to present this data in charts and geographical maps, similar to Google maps.

Since I was born in Chile and I live in Australia, I have explored the building of maps with a choropleth data visualization of Chilean migration to Australia. For that I have downloaded data from the Australian Bureau of Statistics and used data analytics techniques/modules

· GeoJSON files

· Folium

· Choropleth maps

· Pandas

· Numpy

· Webbrouser

CTX05

Machine Learning

After attending a master class on this topic in the UTS, I started from the very basic concepts and built the knowledge almost from scratch. My approach was to get very familiar with the concepts and theory before attempting any coding. Since I have a good base on Linear Algebra and Calculus, I am now very familiar with algorithms for:

· Linear Regression

· Support Vector Machine

· Random Forrest Classifier

· Neural Networks. By now, I understand and I am able to apply the backpropagation algorithm for the optimisation of neural networks.

I have written a few mini routines for hand-written digits recognition, voice recognition and my plan is to partner with colleagues and/or organisations to apply these concepts in specific client’s situations.

· Pickle

· Gzip

· mnist_loader

· Jason

· Random

· matplotlib

· Theano

· Seaborn

· pylab

· SciKit Learn libraries for:

· Image processing (e.g. Pillow)

· speech_recognition

Python Development Environment

  • This is not a trivial point. Expect to have some challenges on the setup
  • At the moment I am working on Windows 10 using Visual Studio, and Mac OS Catalina using Sublime Text.
  • The reason to work in two Operating Systems is that I want to keep a foot in each camp to understand differences and challenges. I have identified and resolved a number of incompatibilities. Many hours have gone onto resolving some of these issues therefore I am now fairly familiar with the challenges.
  • I have also installed Ubuntu in my local machine but I do not want to open that front as yet.
  • I am also using Jupiter Notebooks for interactive programming and testing.
  • In addition to the latest version of Python (3.8) there are 100s of libraries available for performing some specific functions such as database management, plotting, mapping, etc.
  • The installation of these libraries is generally straightforward, but you can hit problems that can stop you for hours/days (e.g. matplotlib, MS)
  • As a result I have learned quite a bit more about these operating systems themselves
  • Recently I have gone through the process of setting up a Linux server in the cloud and deployed and secured my own application.

Libraries for Python 3.8

As I indicated above, there are tons of these things out there. Each project uses a starting set. This set grows rapidly as your project increases in sophistication… following is the ‘backbone’ list that I am using:

Module

Description

Flask

Web development Framework

WTF

Forms for web development

matplotlib

Charts and graphics

Folium

Maps creation (similar to google maps)

Pandas

Data analytics, data imports, matrices ops, etc

Numpy

Mathematical functions, matrices, random generators

SQLite

Data base management

SciKit

For machine learning

Win32com.Client

To work with MS applications such as MSProject

Pitz, datetime, dateutil.parser

To work with dates/times…

Openpyxl

For Excel

itsdangerous

Creation of Tokens for password resetting

smtplib

For sending emails

Books (in Kindle)

I have bought a couple of books to help with the learning. These include:

  • Python in 8 hours (The title can be a bit funny. I did not expect to learn that quick. If you know another language this is good language reference thou)
  • Automate Boring Stuff with Python (very good practical examples to get familiar with the language)
  • Neural Networks and Deep Learning (Heavy stuff very well written)

YouTube tutorials

I have found lots of good material (also some pretty bad ones). I find the following authors really good:

  • Corey Schaffer (US)
  • Luis Serrano (Colombia/US)
  • Michael Nielsen (Australia/US)

Many more but these guys are really good! Gurus.

Tutorials are free but we can make a donation if we have the means. (I joined patreon and have bought some of their books…)

I provide a list of recommended sites at the end of this page.

Code Repositories

  • GitHub, this is great library with code sample from very smart people that I can use as example or guide

What’s next

  • Improve the presentation of the web site
  • Start converting PM notes into blogs
  • Consolidate and Integrate the personal projects
  • See how I can advertise this knowledge as part of my Resume, LinkedIn, etc.
  • Look for a commercial opportunity

Some of the YouTube tutorials and Other Sites

Python and Data

Python by Corey Schaffer (highly recommended)

Machine Learning (mainly Serrano and Nielsen)