This repository documents my personal development as a software engineer and Python programmer. It includes:
- Projects I've proposed to hone my skills
- Topics I've identified as important to study and practice
- Courses I plan to take
- Books I intend to read
- Certifications I gain as I work through my plan
- Best practices and useful commands/information I've found along the way (e.g. commit message formats or ideal package structures)
- Questions I currently have
Together, these form a plan and a measure of my progress; as such, this repository will be added to, changed and improved over time.
Project | Location | Status |
---|---|---|
Automate my finances | finances-automation | Active |
Easy rental search | easy-rental-search | Active |
Raspberry Pi home security system | pi-security | Active |
Renewable energy dashboard | renewable-energy-dashboard | Not started |
Voice coding package | voice-coding | Not started |
Hack my Dyson air purifier | hack-dyson-purifier | Not started |
Scraped lyric generator using Markov chain | scraped-lyric-generator | On hold; requires refactor/restructure |
Scrape engineering job listings | scrape-job-listings | Not started |
Other projects:
- Set up a VPN server on a cloud-based virtual machine
- Create an inventory system keeping track of when products need to be rotated and notifying the owner when this is the case
- Scrape interest rates of various financial products over time and plot them on a live dashboard
- Traverse the network of dependencies in a python package and produce a graph illustrating their linking structure (e.g. for visual inspection for circular imports)
This is the list of topics I have identified for further study and investigation.
Topic | Details | Status |
---|---|---|
Advanced use of git (rebasing, squashing, tagging, hooks etc.) |
Here | Completed |
Virtual environments | Here | Completed |
Regex (theory and practical use) | Here | Completed |
Bash and shell control in depth | Here | Completed |
Creating CLIs in python with argparse |
Here | Completed |
Web scraping with requests and beautifulsoup4 |
Here | Active |
PostgreSQL; creating, hosting and interacting with databases | Here | Active |
Docker | Here | Active |
Clean code and architecture | Here | Active |
Compression and archiving | Here | Active |
Python multiprocessing library |
Here | Active |
Context managers | Here | Active |
Generators and yield |
Here | Active |
Interacting with and building RESTful APIs | Here | Active |
Python packaging in depth | Here | |
Testing and mocking with pytest in depth |
Here | |
Use of PyCharm in depth | Here | |
Python decorators | Here | |
Linux command line utilities | Here | |
HTTP conventions | Here | |
Memory architectures | Here | |
Digital Ocean and Terraform | Here | |
Setting up a gittea mirror |
||
Lambda functions | ||
Ansible | ||
Daemons | ||
RabbitMQ and Celery | ||
File I/O including binary files and streams (including text wrappers and the python io libary) |
||
Python classes in depth (including @classmethod and @staticmethod ) |
||
Abstract base classes | ||
Principles of Test Driven Development (TDD) | ||
Error handling in Python | ||
os and sys python libraries |
||
Python set operations | ||
matplotlib and seaborn |
||
Markdown vs reStructuredText | ||
Sphinx documentation | ||
Encoding | ||
Storage formats e.g. csv vs parquet vs pickle |
||
Google cloud platform in depth | ||
Continuous integration and deployment | ||
Mapping | ||
Hashes | ||
Machine learning libraries | ||
The basics of Go | ||
Use of vim in depth | ||
Static-typing in Python | ||
Hexagonal architecture | ||
Python GUIs and graphics | ||
Hosting webservers using e.g. Nginx | ||
pandas.groupby objects further in depth |
||
NoSQL databases; mongoDB | ||
Cybersecurity basics for engineers | ||
HypothesisWorks tests | ||
Kubernetes | ||
Spark and Hadoop | ||
ElasticSearch | ||
Airflow | ||
Scala | ||
Kafka | ||
Blockchain basics |
These are generally shorter and lower cost courses.
Course | Provider | Cost | Certified | Completed |
---|---|---|---|---|
How to use Git and GitHub | Udacity | Free | No | 2018-08-09 |
GCP Essentials Quest | Qwiklabs | Subscription | Yes | 2018-08-17 |
Learn SQL | Codecademy | Subscription | No | 2018-08-25 |
SQL: Analyzing Business Metrics | Codecademy | Subscription | No | 2018-08-25 |
SQL: Table Transformation | Codecademy | Subscription | No | 2018-08-26 |
Intro to Relational Databases | Udacity | Free | No | |
Computer Science Fundamentals | Brilliant | Subscription | No | |
Computer Science Algorithms | Brilliant | Subscription | No | |
Computer Memory | Brilliant | Subscription | No | |
Intro to Computer Science | Udacity | Free | No | |
Software Development Process | Udacity | Free | No | |
GCP - Infrastructure and DevOps | QwikLabs | PAYG | Yes | |
GCP - Big Data | QwikLabs | PAYG | Yes | |
GCP - Security, Backup & Recovery | QwikLabs | PAYG | Yes | |
GCP - Websites & App Dev | QwikLabs | PAYG | Yes | |
GCP - Machine Learning | QwikLabs | PAYG | Yes | |
Intro to Machine Learning | Udacity | Free | No | |
Artificial Neural Networks | Brilliant | Subscription | No | |
Machine Learning | Brilliant | Subscription | No | |
Practical Deep Learning For Coders (Parts 1 and 2) | fast.ai | Free | No |
These are generally deeper and higher cost courses.
Course | Provider | Cost | Certified | Started | Completed |
---|---|---|---|---|---|
Programming for Data Science | Udacity nanodegree | £349 | Yes | ||
Become a Professional Full Stack Developer | Udacity nanodegree | £799 | Yes | ||
Become a Machine Learning Engineer | Udacity nanodegree | £799 | Yes | ||
Machine Learning for Data Scientists | Udacity nanodegree | £1598 | Yes |
Book | Author | Area |
---|---|---|
'Fluent Python: Clear, Concise, and Effective Programming' | Luciano Ramalho | Python |
'Computer Science: An Overview' | J. Glenn Brookshear | Computer science |
'Code Complete 2: A Practical Handbook of Software Construction' | Steve McConnell | Software engineering |
'Pro Git (v2)' | Scott Chacon and Ben Straub | Version control (git ) |
'Python Machine Learning (Second edition) | Sebastian Raschka & Vahid Mirjalili | Python, machine learning |
'The DevOps Handbook:: How to Create World-Class Agility, Reliability, and Security in Technology Organizations' | Gene Kim, Patrick Debois, John Willis | DevOps |
'Accelerate: The Science of Lean Software and Devops: Building and Scaling High Performing Technology Organizations' | Gene Kim, Nicole Forsgren, Jez Humble | DevOps |