I woke up nice and early today, so even though I’m a bit sleepy, I feel super motivated to get some work done before all the day’s usual interruptions have a chance to catch up to me!
Learning (and teaching) goals for today:
- Create the first working prototype for my app that lets mentors and students sign up for pair programming time slots.
- Post a homework assignment for the UnBootcamp students with resources and clear steps to build this app on their own.
Steps For Starting on a Prototype
Copy-pasting this from yesterday’s notes! Goal for this prototype: a user can log in with GitHub, save a new piece of information to the database, retrieve that information to display it later, and edit it to save the updated information.
- Create HTML prototypes for a super minimal login page and user profile page.
- Set up a new Firebase project.
- Set up user login with GitHub.
- Set permissions for Firebase database (users can only access their own data and they must be logged in).
- Get and display user’s GitHub username and profile photo after logging in.
- Add test data to Firebase, linked to a user.
- Display test data on user’s profile, only when that user is logged in.
- Insert new data into Firebase for the authenticated user when that user clicks “Save” on profile.
- Update existing data in Firebase when user changes information and clicks “Save” on profile.
Using GitHub for Documentation and Homework Assignments
The Firebase setup guide is pretty thorough, but to make the instructions even more clear and easier to keep track of, I figured I should write my own version of a setup guide for my students. And since we’re using GitHub to collaborate on and manage our group project, why not post the homework assignments as GitHub issues?
Some inspirational projects for open-source documentation:
- Your First PR
- First Timers Only
- Fullstack LA, a great local meetup focused on open-source and pair programming
- Hoodie, a GitHub project that has some amazing documentation
I’m also going to make use of task lists in GitHub Flavored Markdown to let the students check off each box as they complete the steps! One of the biggest challenges for the students in our April UnBootcamp was making time for homework assignments during the week. Some students worked on their lunch breaks or woke up early to practice for 30 minutes before leaving for work! So I’m all for any tool that will make it easier for them to do a little bit of programming practice every day, even if only for 15 minutes here and there.
One question: should I post one issue for all students to follow along with, or create multiple duplicate issues, one assigned to each student so they can use that task lists feature? Hmmm… I know issues weren’t really meant to be used that way, but I see no reason why not! I could organize them into milestones to help with the clutter. This way, we can easily see each student’s progress throughout the week, and knowing that their progress is visible to the rest of our team might be a good motivator!
And since last Saturday we practiced creating branches in Git and making pull requests on GitHub, why not use that process for submitting homework assignments? So I’ll post the assignments as GitHub issues and ask students to submit their solutions as pull requests. So as I create this little prototype, I’ll also document the process and write step-by-step instructions in a GitHub issue to share with the students today.
I’d love to do this every day leading up to Saturday, and once we have a good number of these well-documented mini-challenges, our next UnBootcamp meeting can be much more self-guided and open-ended! That should be more fun for the students, less stressful for me as the teacher/facilitator, and also more effective since that allows for more self-paced learning, which can scale up or down based on each student’s comfort level. I have a good feeling about this approach! (I’ve thought about it before, but I had trouble putting it into practice because it’s a lot of work up front. But this week, I think I might actually be able to pull it off!)
Notes on Creating Assignments as GitHub Issues
Be sure to include some tips and reminders. Since most of the students don’t practice much outside of our meetings, they haven’t memorized all the Git commands or the workflow yet. So I’m including some reminders to help out!
Include screenshots for any important new UI elements. There’s nothing more frustrating than getting stuck just because you can’t find a button on a page! A picture is definitely worth a thousand words here. The only downside is that any time the UI is updating, I have to update my screenshots too. But it’s probably worth the extra work, and it wouldn’t be difficult to recruit some volunteers to help update them when needed.
Make all images at least 672 pixels wide. Apparently GitHub Flavored Markdown does not support resizing images, and GitHub scales up the images to fit the full width of their content container, which is currently 672 pixels wide. To prevent smaller images from looking pixelated, I’m making them all 672 pixels wide by adding some white space to the sides. How annoying, though!
Save a local backup of every draft. I think GitHub uses local storage to save drafts, but just in case, it never hurts to save a backup of my own!
Prepare for tediousness! This is taking way longer than I thought it would. No wonder most developers seem to hate documentation; it takes so much longer to write clear documentation for a feature than it does to actually implement it!
Idea for later: automate the process of creating multiple copies of an issue, one assigned to each student, so I don’t have to do the tedious work of copy-pasting and clicking stuff five times in a row every time I create a new issue or make an edit to one!
Switching Gears to Machine Learning Today
Turns out that my friend who normally runs our machine learning meetup is sick today, so I’m going to fill in for her! Time to brush up on some machine learning stuff and think of a plan for tonight. With 50 people RSVPed, I’d hate to cancel it so last minute! I’m sure we’ll still have plenty of fun though.
A couple beginner-friendly machine learning links:
- An Introduction to Machine Learning Theory and Its Applications: A Visual Tutorial with Examples
- Machine Learning Basics for a Newbie
- Getting Started with Excel: Kaggle’s Titanic Competition
Personal check-in: It’s the late afternoon now, and I realized that I was indeed working very slowly for the entire first half of the day today. Coffee kept me awake, but I was easily distracted and overthinking all the small decisions that popped up. There’s no way around it: I’m tired! And I have a long night ahead of me, between covering for my friend to run tonight’s machine learning meetup and then going rock climbing immediately afterwards. And I still want to wake up early tomorrow too! Maybe I should take a nap. Yeah, I’ll give that a try. Then I’ll have just enough time to answer some emails, eat a bit, and make my way over to Ticketmaster’s office in Hollywood for our meetup.
More Machine Learning and Miscellaneous Cool Links
- Moving from beginner to (slightly more) advanced git with aliases - A tutorial from the perspective of a beginner, nicely done!
- NotHotDog.io - A funny machine learning demo shared at tonight’s meetup, based on that episode of “Silicon Valley”!
- The perceptron algorithm - An easy-to-implement algorithm for “supervised learning of binary classifiers” with an awesome sci-fi-esque name!
- Learning Machine Learning podcast - A podcast that someone recommended.
- Scrapy - An open-source web scraping framework.