Do you have any thoughts on programs or stacks for learning web development?

A friend asked me this recently and I wanted to capture my response. I’m curious to look back on it in a few years to see what will have changed.

Assuming they want to work on the web: there’s a few primary categories of programming computers you need to know about:

  • Command Line
  • Scripting language (with a backend focus)
  • Database
  • HTML, CSS, and plain ol’ JS
  • Frontend framework
  • Version Control
  • Hosting

I do think it’s important to understand a little bit of everything above. Even if, say, you end up as a front-end engineer you’ll be happy if you know about databases. Likewise back-end engineers should understand how all those services they’re writing will be used to present that information to the end user.

Command Line

If I could go back in time I would take a whole class on the command line. The reality is that you’ll be using it every day and without understanding the basics a lot of other parts of coding will just not make sense. Plus, it’s useful to understand what you _can_ do on the command line since sometimes that’s the best place to do your work.

Oh, and learn just enough Vim to open a file, make a change, and save it.

Backend Scripting

Some sort of backend scripting language. JavaScript could be an answer! Python is another strong choice. It used to be PHP and still is if depending on your company. What you use here will probably change at some point in your career so don’t get too attached. The core idea here is that you can use this language to do “backend things” like changing data in the database, or processing files, etc.


A relational database of some sort. MySQL or PostgreSQL. If you get into this it goes deep, but to start with you just need to understand how to make some databases, tables, and data.

Front End

HTML, CSS, Javascript

You should have some foundation of how to put a page together using HTML, CSS, and JavaScript. All frontend frameworks are just fancy ways of using these basic tools. My soapbox rant is that we’ve lost sight of that in the web world. You need essentially nothing to get text on a page at a domain name!

Frontend Framework

In 2023 I would recommend React. In 2024 it will probably be something else. The concepts should, mostly, transfer easily to whatever the next thing is. Get used to pining for some feature of some other framework. Get used to conversations about frameworks that start with “I’ve heard good things about…”

Version Control

Git. You don’t need to start with version control, but as soon as you can you should start implementing it into your workflow. If you work with other people you HAVE to use version control otherwise you’ll end up losing work or reinventing a worse version of Git in dropbox (ask me how I know!)


You can make all of this work on your local computer, but the magic is putting it somewhere else and seeing it work elsewhere. There’s a deep rabbit hole here. Pick a cheap host and figure out how to get it live. You do not need to dive into AWS/Azure/Cloud infrastructure right now. You will need to later on!

What about Bootcamps?

If they want to go to a bootcamp the answer to “Which boot camp is best?” is constantly shifting. I would ask very recent graduates (as in: graduated in the past year) if they would recommend it. I certainly wouldn’t go to a bootcamp that doesn’t have a money back guarantee or some sort of job placement scheme. Your goal with a bootcamp is to get enough knowledge to land your first job. Everything you do in that bootcamp should be oriented around that goal.


I’ve been making websites for years and years and there’s still so much left to learn and everything is changing constantly. Getting comfortable with learning (or just being confused) is a key part of the job. The reward is that when you get things working the feeling is amazing. There’s just a lot of times where it’s not and that’s okay!

Issues with the Microsoft Sculpt on USB-C MacBook Pros

Feel free to skip this if you do not want to hear about a very specific hardware issue I am having. I’m writing this so I have a reference document to point back to and share!


Update July 2023:

I’ve had a few years of no issues when using a direct usb-C to A cable plugged into a USB-C port either on the macbook (OR through a fancy caldigit thunderbolt dock). I’ve been using an Anker one. I’m sure other brands work just as well!

Still love the keyboard too! I have a spare sitting in the closet for when this one dies.

Update February 3rd: calling this fixed! I bought an individual Anker USB-C to USB-A dongle just to try one last thing before fully giving up and it’s been rock solid for a week straight. Here’s how it shows up in the System Report:

I have no idea why this connection would work better than using the USB-A port on Apple’s official Multiport adapter, but that’s just how bad USB-C is as a “one port to rule them all” solution. Leaving this page up as a reference for anyone else who has this issue!

Update Dec. 10: Thought the powered USB hub had done the trick, but had a drop this morning. It did last a lot longer between drops than before. Back to the drawing board.

UPDATE Dec. 9: cautiously optimistic that I’ve found a fix! Chris Dzombak mentioned trying a powered USB hub. I found an Anker hub with a wall wart power supply in the closet and have been using the keyboard/mouse for 24 hours without any drops.

The Problem

A few years back after having some bad back pain I picked up a Microsoft Sculpt keyboard and mouse. It’s been such a lifesaver in terms of limiting pain. The only downside is that it uses a proprietary USB-A receiver that is linked to the keyboard and mouse it came with. Lose the receiver and you have bricked your keyboard and mouse. To use it on a USB-C equipped mac it needs to go through hub or a dongle to connect to the computer.

Normally this isn’t an issue, however, with this setup about once or twice a day the mouse and keyboard completely stops working. To fix it I need to unplug whatever hub the receiver is on and move it to another USB-C port. It’ll then merrily work again fora few hours until it happens again.


  • In the “System Report” the receiver shows up as connected, but it just no longer accepts inputs.
  • Unplugging the receiver from the hub and plugging it back in does nothing. The whole setup needs to move to another port.
  • Any other USB 2.0 devices over USB-A that are plugged into that port via the hub also seem to freeze. My webcam, for example.
  • I have a backup setup and the same behavior happens with that one too. I’ve tried the official Apple multport adapter as well as a 3rd party option and it happens on both of them.
  • This all works on my iMac using its USB-A ports

But, the weirdest thing about this is that I leave the mouse turned off the keyboard will happily work fine with no issues.

I’ve contemplated just buying a good mouse and ditching the included mouse, but I would much rather just use this.

How can one even diagnose what’s going on?

I have no idea what to do from here. I’m open to trying literally anything if you think it might help.

Is there something I can check in to see what is happening with USB devices? Is there an app out there that can help this?

Has anyone else run into this before? If so, please email me or reach out in another way!

mA Draw?

Yesterday I began to think that maybe it’s being caused by some sort of power draw spike? Like the mouse is requesting something from the receiver and it’s spiking the mA request through the hub and MacOS just cuts it off?

Would it be worth using a powered USB-C hub? Does that exist?

What about alternative setups?

I’ve looked for a similar style keyboard/mouse to replace this with, but no one seems to make one that is tenkeyless, which for my style of upper back pain is crucial. If someone knows of one though, please let me know!