This blog started as my movie marathon — watching a movie a day for a whole year — and has continued as a place for me to write reviews about movies, TV, and various other items.
This is still a work in progress as I migrate from my old platform at Tumblr. For now, you can still access the whole backlog of posts there at http://reelmatt.tumblr.com
I graduated from Emerson College in 2015 with a degree in video post production and have worked since then creating online video content for clinical translational scientists at Harvard Catalyst. Many of my early short films can be found on my Vimeo page and some of the educational courses I have worked on can be found through the Harvard Catalyst ‘Train’ page including a promo video for Comparative Effectiveness Research.
Along the way, I developed a passion for programming, writing small tools to help simplify repetitive tasks in my workflow. I started classes at the Harvard Extension School to further my knowledge and expertise and applied for the Masters degree program, which I completed in 2020.
Below is a brief summary of some of the courses and projects I worked on during my Masters degree. Some links are to private GitHub repositories; if you would like access to them, shoot me an email.
Languages used: Python, Javascript/Typescript
Frameworks used: Django, React
Packages used: pandas, NetworkX
PyWorkflow was a group capstone project I worked on to finish my Masters degree. As the project’s README mentions, the quick summary of the project is:
PyWorkflow is a visual programming application for building data science pipelines and workflows
My responsibilities included most of the backend design and implementation. Some highlights include:
execute()
method.
All other work, including storage and passing of Node execution data, is handled by
PyWorkflow.The goal of these tools is to help simplify common tasks for myself and colleagues at my day job. The main tools that are part of this repository are:
I started writing these tools early on in my Masters degree and have evolved them as I have learned new skills, techniques, and languages. Some started as simple shell scripts, then deployed on a Digital Ocean server, and now feature a semi-CI/CD pipeline to deploy on Heroku.
As my main job is to film, edit, and produce our online courses, some of the code and documentation has gotten a bit stale and out-of-date. My recent work towards these tools has been to shift from a performing actions through a web-app to serving a REST API that can be used with Airtable’s new Scripting and Custom Blocks. These blocks would enable myself and others to perform actions from within Airtable itself and through a few button clicks.
This class was a great introduction to writing web applications and version control. Laravel was a great framework to introduce me to the model-view-controller pattern later seen in Flask and Django. The tip calculator project was also my first experience with a single-page application.
Languages used: HTML, CSS, PHP
Frameworks used: Laravel
Database experience: MySQL
Languages used: C
Perhaps the greatest skill I learned in this course was the benefit for writing small, modular code that adheres to the UNIX ethos of “do one thing well.” The assignments for this course covered a lot of ground and are not as easily grouped into bullets as other classes. A few highlights are:
tt2ht3.c
— program to convert plain-text tables into an HTML-formatted tablewlfiler6.c
— word counter using extensive C-pointers and memory managementfl.c
— mail-merge program to substitute data values into a format fileLanguages used: C
This class was the “sequel” to the Intro to C course and was one of my favorite classes at the Extension School. Many of the assignments were to recreate parts of existing command-line tools, and in the process of doing so, I learned a lot about the underlying UNIX system architecture. For the later assignments, culminating with the web server, I learned about internet protocols.
alastlog.c
— displays a list of last loginsmore03.c
— perform a subset of features of the built-in more
pfind.c
— recursively search directories for a file, much like the built-in find
sttyl.c
— a stty
-lite command to set a limited number of options for a terminal
devicesmsh.c
— implement a sub-set of features for a shell, including builtins, control
flow, and execution of other programs.pong.c
— a single-player game of pong; uses signalswsng.c
— implement a limited feature set for a web server, including reply
headers, HEAD support, configuration files, directory listing, zombie processes, and more.Languages used: HTML, CSS, Javascript (Node.js)
Frameworks used: Express, Angular
Database experience: MongoDB
This course expanded upon my web application skills from Dynamic Web Applications. Instead of PHP/Laravel, this course focused on Node.js/Express and also added Angular to create a more dynamic frontend experience.
There were seven assignments in this course that mostly built off of each other. One of the first assignments was to create a simple file-server using Node.js. Then, assignments 3-7 all focused on a film logging application that used the OMDB API. Some key milestones in the development process were:
Languages used: HTML, CSS, Python, Javascript
Frameworks used: Sass, Flask, Django
Database experience: SQL, SQLite
About me page, uses Sass for advanced styling.
Services used: Amazon AWS, Google Cloud Platform
Tools used: Jenkins, Ansible, Terraform, Docker
I learned some basics about cloud devops with Amazon AWS and the Google Cloud Platform. The assignments for this class included learning the following techniques:
Languages used: Java
This was one of my final classes before the capstone project. The focus was primarily on software design—creating UML diagrams and class dictionaries to guide the implementation. I then took these concepts and implemented the designs for the first four assignments to create a Store 24X7 service, an autonomous store design akin to Amazon Go. During design and implementation, there was a requirement to incorporate several Java design patterns like the Command, Observer, and Singleton.