Hi there!

My name is Alan. For twenty-five years I've used what I learned from other folks to build a successful career writing code. Now, it's time for me to give back. For the next twenty-five, I'm builing this site into a free, comprehensice way to learn how to code.

There's Nothing Here...

Well, not much. I started the site Dec. 19th, 2020. The reason you're seeing it so early (and with no instructional videos yet) is that I'm coding it in public. Showing what it's like to build a project like this from scratch. It's like a Digital Garden where I'm inviting you in while I'm still tilling the soil.

The First Video

This first video isn't instructional.

There are going to be a few differetn types of videos: Fundamentals, Tutorials, How-Tos, and Live Coding. Right now, all the videos are Live Coding showing me building the site and getting everything setup. This is the first vidoe in that series.

This isn't the first instructual video. It's the first in the series where I show the behind the scenes of building the site.

I didn't really mean it to be that much of an introduction, but that's what it turned into.

(yep, the name was originally going to be "This Is How You Program". Less than a month in and the name changed.)

Follow Along

The Details

  • Everything here is 100% free.
  • There won't be any ads. Ads may have their place, but it's not in education.
  • There won't be invasive tracking. I'll collect some metrics to maintian the site but it will be as anonymous as possible.
  • The content is licensed so you can do pretty much anything you want with it except sell it.
  • There will be no requirement to sign up. You can use the site completely anonymously with no hassle. (There will eventually be user accounts that make it easier to track progress, but they won't be required.)

How Are You Making Money Off This?

The short answer: I'm not. And, I won't.

This is not a money making veture. I'm doing this because I love programming. It's been a joy and a career, and, in a very real way, I would have been lost without it.

I'm up here standing on the shounders of giants.

It's my duty and my calling to help others up.

Who's Paying For This?
Who Or What Is The Product?

There's a rule in the online and app world: if you aren't paying for a site or service, then you're the product. Business that give away their apps and services get paid behind the scenes from advertisers and marketers who are doing everything they can to get your to spend your money.

This site is an exception to that rule.

I'm paying for it myself. And, there's no product because this isn't a business. It's a labor of love.

I've had dozens of converstaions with friends and family about this. It's always a struggle getting them to see where I'm coming from. All the messages in our society are about making money off whatever you can. To be doing something like this dones't make sense in that light. But, there are models: donating and volunteering. If it helps, think about what I'm doing as giving my time and money to a cause I believe in.

This is me trying to make the world a better place.

If you want to reach out, I'm on Twitter and my personal site is alanwsmith.com. Feel free to stop by and say hi.


Here Be Dragons

Atomically (not automatically) Moving Files To A Network Drive With Python

TL;DR This is a modified version of Alex Chan’s Python method for moving files atomically across file systems and network drives. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import errno import os import shutil import uuid from pathlib import Path def safe_move_file(source_path, destination_path): try: os.rename(source_path, destination_path) except OSError as err: if err.errno == errno.EXDEV: if Path(destination_path).

Learning Gatsby - Part 1

This was my introduction to Gatsby and React. I went through the quick start and the first three sections of the tutorial. The tutorial is pretty solid. It suffers a little from throwing parts at you that aren’t directly related to the concept you’re working on. I spent the last part of the stream building this little example to help my understand the basics. import React from "react" import { Link } from "gatsby const MyThing = props => ( <div> <p>The attr is: {props.

Making Animated GIFs with Adobe Premiere and ffmpeg - Part 5

Removing the black bars from the Premiere crop automatically instead of manually in Media Encoder. Links ffmpeg crop black borders - Google Search How to find out what process is holding a file open in a Mac OS X - Quora lsof - Google Search mac tell if file is open - Google Search macos - Determining what files are considered open in Mac OSX - Super User macos - Fast way to check if file is open on OS X - Stack Overflow Remove .

Removing Big Files That Were Accidentailly Committed To A Git Repo

Pretty sure I accidentally pushed video files into my git repo since it’s 5GB. Going to try to figure out how to remove them Command to get the tree listing: git ls-tree -r --abbrev -l --full-name HEAD https://stackoverflow.com/questions/1286183/git-find-fat-commit/1557398#1557398 git ls-tree -r -t -l --full-name HEAD | sort -n -k 4 File we’re looking for is: 2021-01-27_19-35-47--building-the-site-part-13-and-more.mp4 git log --full-history -- 2021-01-27_19-35-47--building-the-site-part-13-and-more.mp4 Part 2 Kept working on it. still didn’t figure it out.

Building A Google Chrome Extension to Grab Page URLs and Titles (Part 3)

Got the thing working on different pages, now to try to get the URLs. Was able to get the URL and the Title of the current web page. Next up, Getting the values for all the open tabs in all windows and then figuring out how to display them. Meta: Part 3 starts about 1:38 Goes basically to the end of the stream Links https://stackoverflow.com/questions/3829150/google-chrome-extension-console-log-from-background-page https://stackoverflow.com/questions/1979583/how-can-i-get-the-url-of-the-current-tab-from-a-google-chrome-extension

Building A Google Chrome Extension To Grab Tab URLs and Page Titles - Part 2

Continuing where I left off last night. Figured out how to get the getting started example extension to run on any web site. The trick was to update: pageUrl: {hostEquals: "developer.google.com"}, To: pageUrl: {schemes: ['http', 'https']}, Video Times: 33min in, quick break edit. back in arounmd 50 done around 1:14 Links https://developer.chrome.com/docs/extensions/reference/events/#type-UrlFilter https://developer.chrome.com/docs/extensions/reference/declarativeContent/#type-PageStateMatcher https://developer.chrome.com/docs/extensions/reference/declarativeContent/ https://developer.chrome.com/docs/extensions/reference/permissions/ https://developer.chrome.com/docs/extensions/mv2/match_patterns/ https://stackoverflow.com/a/16096545/102401 https://developer.chrome.com/docs/extensions/mv2/permission_warnings/ https://gsuitetips.com/tips/chrome/control-which-sites-your-chrome-extensions-can-access/ https://developer.chrome.com/docs/extensions/reference/tabs/#property-Tab-url https://developer.chrome.com/docs/extensions/reference/tabs/ https://developer.chrome.com/docs/extensions/mv2/devguide/

How-To: Start Windows PowerShell In A Different Directory

Nine times out of ten when I start PowerShell I want it in the directory I use to build this site. So, I found [this StackOverflow answer]1 showing how to set it up to open in a specific folder. https://stackoverflow.com/a/56115537/102401 ↩︎


Things I like from other sites and servies and systems (in no particular order). Some of it isn’t really inspiration, more just notes on the ways other folks are doing stuff to keep in mind. The https://odyssey.apollographql.com/lift-off-part1/feature-overview-and-setup site has a nice feature where they have check boxes under tasks that need to be completed and then a tally at the bottom that tell you how many tasks you still need to do.

Building A Google Chrome Extenion To Capture URLs And Titles From Open Tabs

First steps to figuring out how to make chrome extensions. Got the basic example script up and running. Next step is to work on making one to pull the data I’m after. Start edit at : 1:38 End edit at: 2:12 ish or a little before Got the basics going for the Getting Started Example. The Example you built is in the same directory. Links I didn’t use most of these pages, but they’re a good reference

Figuring Out Which Python Process Is Which

This is where I figured out which python process was running a specific python script so I could kill it. starts about: ~1:00 ends about: ~1:22 Look at 1:13 to see if there’s any process info you need to blur. There was proabalby one run before that too. Links https://www.windows-commandline.com/powershell-kill-process/ https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/stop-process?view=powershell-7.1 https://tweaks.com/windows/39559/kill-processes-from-command-prompt/ https://stackoverflow.com/questions/3518491/how-do-i-know-what-python-scripts-are-running-in-windows https://napuzba.com/a/change-python-process-name-windows https://stackoverflow.com/questions/38420116/make-python-process-name-more-explicit https://superuser.com/questions/427642/is-it-possible-to-set-the-process-name-with-pythonw

Size check: Less than small