MLH Fellowship Log

2020-08-23

I spent my summer 2020 as a remote fellow for the MLH Fellowship program, and wanted to document the abundance of skills I learnt.

mlh fellowship banner

Current project: Circuit Python

The epotime of this fellowship is to collaborate to contribute to open source projects, such as Circuit Python. As I indicated interest in hardware development, I was assigned to Circuit Python. Our first project is to improve features on an app named ‘glider’ that acts as a Python code editor for mobile devices. The first week was dedicated to setting up my app development environment (Android studio, react native, node JS, etc), while the second week was spent waiting for hardware to arrive…

Journal

June 5th - Submitted hackathon project, and was voted best project in my pod
June 9th - Finally placed the order for a monitor and keyboard - next step, save up for new PC !
June 10th - Diving deep into the code base for CircuitPython, and struggling to write/ test code without proper hardware
June 22nd - Got my glider app running on an android device after weeks of waiting for hardware and debugging!
July 2nd - Start research & development into adding colour wheel feature to glider

Skills

Python - getting more familiar with syntax
GitHub - Pull Requests, Issues, Branching, Merging
MongoDB - local database, PyMongo, Flask frontend
React Native - development/ deployment, new libraries, creating projects from scratch

Workshops

Cory's show and tell, Python unit testing
Date: June 10th, 2020
Notes
  • unit test vs integration test
  • asswertEqual same as Java
  • virtual environment for python
  • monkey patching using 'mock' library
  • dependency inheritance
  • principle of competition over inheritance
  • eg, application for using mock = mock database for local testing
To Do
  • [unit test vs integration test](https://programwithus.com/learn-to-code/Pip-and-virtualenv-on-Windows/)
Amir's show and tell, Docker
Date: June 17th, 2020
Notes
  • Docker is a tool that makes it easier to code software by using containers - similar to VM
  • 'sudo' in Linux is "super user do"
  • 'cp' is copy
  • container is an instance of an image
  • 'docker run' on an image to bring up a contianer
  • Use Cases (to get to know Docker and its industry applications): https://www.docker.com/use-cases Getting started with Docker (pretty comprehensive guide on a lot of Docker stuff): https://docker-curriculum.com/ Creating Docker Images (both from an exisitng container and from scratch): https://www.mirantis.com/blog/how-do-i-create-a-new-docker-image-for-my-application/
Mini Hackathon - Conway's game of life
Date: June 24th, 2020
Notes
  • This was an interesting show and tell of the week. My podmates and I got to collaborate and develop a solution for [Conway's game of life](http://pi.math.cornell.edu/~lipa/mec/lesson6.html) in Python.
  • The goal of this hackathon was let us become more familiar with git commands - such as branching, issues, pr, etc - since the majority of our pod spent the majority of the first two weeks awaiting hardware.
  • Python is not my main coding language (I have made 2? projects in python), so I was proud to have written a solution that even runs within an hour... after stealing some code from podmates of course (we were allowed to!)
Kaela's show and tell, Bluetooth Low Energy
Date: July 1st, 2020
Notes
  • focuses on smaller, more novel devices
  • consume less resources
Darren's show and tell, Embedded Linux and Electronics
Date: July 8th, 2020
Notes
  • Embedded Ssytem: specific and dedicated applications; processing power, memory, storage are limited; part of a larger system with sensors; reliability is crucial
  • embedded linux === linux
  • basic commands: echo = repeats argument to console; touch = creates file; cat = read content of file; redirect (>) = reroutes output to destsination;
  • shell commands: chmod = change mod; execute (./) = runs an executable file; read ($) = show contents of variable; arithmetic ( $(()) ) = to do operations on variables; loops; if; variables have no type but spacing matters
  • shell command file (.sh): "stores multiple commands that you can run at once"
  • GPIO: "General Purpose Input/ Output; output can apply voltage or no voltage, input can detect voltage or no voltage"
  • sysfs: a pseudo file system that can access GPIO
My show and tell, Beginner Game Dev
Date: August 5th, 2020
Notes
  • Shared a simple tutorial on how to work with Godot to create 2D games using skills I learnt from making our hackathon project - [Fellow Crossing](https://github.com/stellaw1/fellow-crossing)
Prabhanshu's show and tell, Samwise
Date: August 12th, 2020
Notes
  • Samwise is a server that purges URL Tracking using Nodejs and DNS rewriting

Highlights

Orientation Hackathon: BLM Tracker
Date: June 1st~5th, 2020
For the first week of the fellowship, I worked on an exciting project revolving the BLM movement with Amir and Parthiv. I loved the end product we produced and enjoyed my time working with my fellow podmates
Halfway Hackathon: Fellow Crossing
Date: July 13~17th, 2020
Halfway through the fellowship, MLH hosted another week long hackathon. This time, I teamed up with Kanav, Ruby, and Nabanita to build a game aimed to foster connections between fellows despite the lack of in person interactions. We made an online, multiplayer game inspired by Animal Crossing. Our game ended up winning "Best Community Building Project"! Checkout the submission [here](https://devpost.com/software/fellow-crossing), play game [here](https://stellaw1.itch.io/fellow-crossing) or review the code [here](https://github.com/stellaw1/fellow-crossing).
Adafruit Glider progress
Date: August 4th, 2020
Submitted my [PR for glider](https://github.com/adafruit/glider/pull/12) and got merged!
Random
Date: June 1st, 2020
Meeting people for the first time ever on Zoom was a strange experience, and I can't imagine what any of my podmates would be like if we ever met in person. Many nuances and traits are lost through virtual videocalling as opposed to an in person meeting (Eg, small habits, height, voice, etc)
Date: June 8th, 2020
MLH really likes to ask the question, "What is your favourite project that you've worked on?" and my answer always comes back to this website - not becuase it is technically impressive or graphically beautiful, but because of the ability for me to come back here continually to document how I've been growing/ highlights/ etc
Date: June 10th, 2020
My mentor, Cory, is the coolest! He has pet chickens and considers chocolate fruit (& therefore Nutella jam)
Date: June 25th, 2020
Random, interesting, trivial bug in python: where `f = lambda: 1` outputs `1` whereas `fs = {;ambda: x for x in range(10)}` outputs all `9`s. Solved this by `fn = {lambda y=x: y for x in range(10)`
Date: August 6th, 2020
Mentor Q&A that provided a lot of insight into the tech work force and started some important debates about important happenings in our current society (ie, coronavirus, stereotypes, etc)

Reflection

  • learnt a new framework: React Native
  • became more familiar with app development, specifically android development
  • met some amazing people!!

Keen on learning,
Stella