Learning

Topics Ive been learning about, along with some useful links to my readings.

Python Programming

Fluent Python

Book

This book provides a deep dive into the Python language, second only to reading the Python docs.

Covered the intricasies of unicode and bytes, to concurrency in Python, to metaprogramming. The book covers it all.

  • Reading this book helped me better understand the fine details of Python. The knowledge I gained from this book helped me improve all aspects of my code.

Object-Orientated Python

Book

An introduction to Object Orientated Programming with Python through Game Development using Pygame.

Covered the main concepts of OOP: encapsulation, polymorphism, and inheritance.

I practiced applying these concepts through building several games from Flappy Bird, to Wordle, to 2D Platformers. I continue to apply OOP concepts to most of my projects.

Data Structures and Algorithms in Python

Book

An introduction to Data Structures and Algorithms with Python.

This book covered many data structures, starting with the basics of Algorithm Analysis, Stacks, Linked Lists, and Trees, to more advanced concepts of Search Trees, Hash Tables, Memory Management, Graph Algorithms, and much, much more.

Reading this book helped me improve the efficiency of my code.

Mastering Python Design Patterns

Book

Diving into various design patterns and their implementation in Python

This book covered lots of design patterns from simply Builder Patters, to Chain of Responsibility, Facade, and Observer Patterns, and many more.

Reading this book helped me better understand how to effectively structure my code and projects.

Mathematics

Statistics

  • Statistics, by McClave and Dietrich
    Book
    • An introductory statistics book.
  • Practical Statistics for Data Scientists
    Book
    • This book covers 50+ essential concepts using R and Python.
  • Statistics Done Wrong
    Book
    • Covered many of the mistakes and misconceptions that scientists make in their statistical analyses.
  • Statistical Rethinking
    Book
    In-Progress
    • A Bayesian Course with Examples in R and Stan.

Linear Algebra

  • Math for Programmers (first half covers Lin. Alg.)
    Book
    • Exploring Linear Algebra concepts and applications using Python.

Calculus

  • Calculus I and II Courses at StFX University
  • Math for Programmers (second half covers Calculus)
    Book
    • Exploring Calculus concepts and applications using Python.

Other Data Topics

Natural Language Processing

  • Natural Language Processing with Python
    Book
    • Covered text processing, tagging words, text classification, feature-based grammar, and much more.
  • NLTK and Spacy Documentation
    • I've spent a lot of time reading through the documentation of these libraries to better understand the fine details of them to aid me in using them in my projects.

Complexity

  • Think Complexity
    Book
    • Covered graph theory and how to apply it using Python and NetworkX, Cellular Automatons and Conway's Game of Life, Physical Modeling, Flocks and Boids, Evolutionary Algorithms and more.
  • NetworkX
    • Using the NetworkX Python Package to generate, visualize, and analyze network graphs.
  • Conway's Game of Life
    • Built a clone of Conway's Game of Life in Python using PyGame.

Machine Learning

  • The Hundred-Page Machine Learning Book
    Book
    • Provides an overview of the fundamental machine learning algorithms, how they work, the practice of applying them, along with covering neural networks and deep learning. Though it is a short book, it is a dense one, and it never shies away from the math.
  • Hands on Machine Learning with Scikit-Learn, Keras, and TensorFlow
    Book
    In-Progress
    • Covers the main machine learning algorithms (regression, classification, SVM, decision trees...), unsupervised learning, neural networks (RNNs, CNNs...), reinforcement learning, deployment and more

Computer Vision

  • Learning OpenCV 4 Computer Vision with Python3
    Book
    In-Progress
  • Tutorials from PythonProgramming.net
    • The tutorial on Computer Vision using OpenCV taught me the skills needed to make the ASCII Image Converter Project

Code Ninjas

C# and Unity3D

  • The second-half of the Curriculum at Code Ninjas uses Unity and C#
    • I became highly knowledgeable about Unity and C# to help explain the coding concepts to the students and help them debug their code.
  • Working with Black Belt Ninjas (students)
    • Black Belt Ninjas are expected to come up with a game idea and build it in Unity with the guidance of a Sensei (staff). I worked one-on-one with two Black Belt Ninjas primarily but occosoinally with all of them to guide them through turning their ideas into code. I had to familiarize myself with the capabilities of Unity and C# by reading lots of documentation.

JavaScript

  • The majority of the Curriculum at Code Ninjas uses JavaScript
    • My deep and thorough knowledge of the curriculum and the JavaScript used allowed me to be highly efficient at helping answer questions from both the students and the staff.
    • I helped explain and teach the students about JavaScript syntax and various patterns used in Game Development for tasks such as: scores, projectiles, spawning, collisions and more.
  • Reading through the Game Development Platform's Source Code
    • I spent several hours reading through the Code Ninjas platform's source code to gain a deeper understanding of its structure and to more effectively debug certain problems it had.

Writing Documentation

  • Wrote several dozen pages of documention pertaining to Training, Operational Knowledge, Curriculum Knowledge and lots of helpful explainers for the students
  • The documentation I wrote helped improve the training process, helped the Sensei's (Staff) Grade student games more effeciently and effectively, and helped standardize certain processes.

Data Analysis and Visualizations

Python for Data Analysis

Book

An overview of data analysis tools and techniques, from data loading and cleaning, to various analysis techniques, to basic visualizations.

This book is heavily focused on Pandas and Matplotlib.

Reading this book helped deepen my understanding of Pandas and taught me new techniques to use in analyzing data.

General Visualization Libraries

Learning to visualize tabular data into many types of plots.

  • Matplotlib
  • Seaborn
  • Plotly

Visualizing Network Graphs

Learning to visualize complex graph data from large data sets

  • Worked with several Python Modules for visualizing Network Graphs such as: NetworkX, PyVis, igraph, and Dash-Cytoscape
  • Using the Spotify API to scrape artist song info and generate a graph, using PyVis, to visualize an artist and who they feature on songs.

Geographical Data Visualizations

Visualizing Data with geographical components

  • Used the 2020 US Census Data to visualize the geogrpahic distribution and relationship of several features in the dataset.
  • Using Plotly, I played around with a few different types of visualizations from 2D world maps, to 3D interactive views.

Databases

Fundamentals of Data Engineering

Book
  • Covered the data engineering lifecycle in-depth, the various tools available for data engineers, how to select the right tool(s) for the job, and discussed security and privacy in data engineering.

Neo4j

  • Graph Databases
    • The book on building a Graph Database in Neo4j.
      Book
  • Conceptual Complexity Graph
    • The data for this project is stored on, and queried from, a Neo4j Database

MongoDB

  • MongoDB documentation
    • Most of my MongoDB knowledge was acquired by reading through it's documentation.
    • Several of my Web Scraping Projects store the scraped data into MongoDB collections.
  • PyMongo
    • The python library for working with MongoDB

SQL

  • Learning SQL
    Book
    • Covered the basics of SQL, from building a MySQL Database, to querying the database, to complex Joins and more.

Web Scraping/Automation

Learning how to scrape the web for useful data

I have worked on several projects where I needed data from the web, and I used tools and technologies such as Selenium and BeautifulSoup to acquire the data

  • Web Scraping with Python
    Book
    • Covered the libraries: BeautifulSoup, Selenium, Spyder, how to store scraped data, cleaning scraped data, and some more advanced topics such as working with Images, beating Captchas, parralel scraping, and the legality and ethics of web scraping.

For Code Ninjas Halifax

Scripts to Automate various time consuming tasks during my time working at Code Ninjas

There were several tasks at Code Ninjas that needed to be done on a daily basis yet took around 20 minutes each day to complete. With a few hours of work I was able to build a Python scripts that used Selenium to complete the task without Human Input. A return on Investment of about 2 weeks.

  • Every Day a Sensei was tasked with looking up each Ninja (student) scheduled for the day and write down where they were at in the Curriculum and if there were any games that needed to be fixed by them or graded by a Sensei.
    • The Script had to extract all the parent emails for people scheduled for the day, then login to the Staff Account and Search each email and find the Ninja progres in the curriculum and determine what games needed to be brought to the Sensei's attention.
  • For Grading, a Sensei would have to manually download several Unity Packages from the Grading Platform, a process that would take approximately 10 minutes, with a Selenium script that process was automated and only took 5 minutes.

Chrome Extensions

Building small Chrome Extensions to interact with websites in fun (and sometimes useful) ways.

  • Started by working through the 3 beginner tutorials on the Chrome Extension Development Page
  • Familiarized myself with the documentation. Focusing on the capabilities of Chrome Extensions.
    • Built a Chrome Extension that automatically replaces on links containing the work Roblox or Minecraft to a RickRoll, in order to prevent Ninjas (kids) from playing games while they should be learning to code.
    • Built a Chrome Extension that changes the background colors of several HTML tags to obnoxiously bright and constrasting colors, all with a quick keyboard command.
    • Guided one of the Ninjas (students) at Code Ninjas through building a Chrome Extension that replaces hundreds of words in a website with their Antonyms. Makes for a very confusing article.

App Development

Dash

A Web App framework for Dashboard and Data apps in Python

  • Started learning Dash by reading through the official Dash Tutorial.
  • Then read through the other sections of the documentation to learn about the various components that are available.

PyQt

A Python binding of the GUI toolkit Qt

  • Beginning PyQt: A Hands-on Approach to GUI Programming with PyQt6
    Book

Streamlit

A quick and easy to use web app framework.

  • Started learning Streamlit by reading through the official Streamlit Tutorial.
  • Then read through the other sections of the documentation to learn about the various components that are available