Teddy Williams

Welcome to Verdant Fox, my green-fox-themed portfolio app! My name is Theodore Fox Williams, but you can call me Teddy. First up on this page, you can find my blog. In it, I talk about programming concepts aimed at beginner and intermediate developers. Then, I put together a couple of interactive projects I created while learning new programming skills.

Below the project descriptions, you can find some of the more important (in my opinion) skills I learned while studying software development and that I use every day in my career as a software developer. And finally, I describe myself and include updates on my software development studies and career. Thanks for taking a look. Enjoy!

“You can always edit a bad page. You can’t edit a blank page.”

― Jodi Picoult

“You can always edit a bad page.
You can’t edit a blank page.”

― Jodi Picoult

My blog

I'm pretty new to blogging, but I like the idea of it, so here it goes. Here is a list of some of my most recent blog posts. I will try to create posts somewhat regularly about programming topics related to things I've learned and found interesting -- a mish-mash of tutorials and discussions of tools and concepts I've learned in my work and personal projects that I think could be valuable to someone else interested in learning about those topics. The intended audience here is generally novice to intermediate programmers. To see a list of -- and to search on -- all of my blog posts click the button below.

Go to Blog
Recent posts...

How to use git pre-commit hooks, the hard way and the easy way

September 15, 2021 / 12 min read / 318 , 1 , 0


If you've heard of git pre-commit hooks, but you aren't sure what they are or how to get started with them, you are in luck! In this guide, we'll talk about what git pre-commit hooks are and why you should consider using them. We'll then talk about how to write your own git pre-commit hooks, and then we'll talk about the pre-commit framework which can make setting up git pre-commit hooks easy.


How to git rebase main/master onto your feature branch even with merge conflicts

September 04, 2021 / 2 min read / 251 , 2 , 0

Git rebase

Does your project prefer git rebase instead of git merge? Has your branch fallen out of sync with the main branch and you are unable to automate your rebase due to conflicts? If so, you might have run into rebase hell. This happens when you try to git rebase, solve your conflicts, and push to the main branch, only to find that the main branch is now, once again, out of sync in a never-ending loop. Let's break out of rebase hell with this short guide to rebasing.


My Top 20 Favorite VS Code Extensions

August 02, 2021 / 15 min read / 306 , 2 , 0

VS Code

Microsoft released VS Code (Visual Studio Code) in 2015, and since then it has become one of the most popular text editors on the market. What has led to that popularity? It is free and lightweight, with a beautiful and intuitive user interface and it is fully customizable through extensions. Extensions can bring nearly any look or functionality you like to VS Code. But with so many extensions to choose from, which ones are right for you? I'm here to guide you with my top 20 favorite VS Code extensions.


“Whatever good things we build end up building us.”

― Jim Rohn

“Whatever good things we build
end up building us.”

― Jim Rohn


This section highlights a few personal projects I've created that I thought were fun or interesting. I've broken up the projects into a few broad categories.


Check out my finance-related web pages to get your finances in order. With the budget app, you can create and edit budgets, complete with interactive graphs to get a sense of where your money is going so you can make changes as necessary. With the loan calculator, you can calculate loan payments and interest paid throughout a loan. With the compound interest calculator, you can visualize how your investments can grow over time. With the net worth calculator, you can find out your net worth, and compare how you match up with others in your demographic.

Explore your finances with these interactive apps and calculators. Share your findings with your family and friends. Bookmark pages to come back later to see how things have changed.

Check out Finance!


Games are fun! They are fun to build and fun to play. They can be an exciting conduit to learning new programming languages or new programming techniques. Here are some of the games I've built while learning to program that have allowed me to learn interesting new concepts.

In this section, I have 2 games for display. First, we have Twisted Towers, a tower defense game built with Pygame, a python library. Build towers to fend off the horde of enemies trying to take your castle. Then, Batty's Moth Hunt is a game built with MIT's Scratch, a learning language. Play as a bat, hunting down moths in the night while running from the scary owl. Good luck! More games coming soon!

Check out Games!

Miscellaneous Apps

This section highlights some miscellaneous applications that don't fit nicely into other categories.

In this section, so far I just have one GUI application to highlight. The File Renamer GUI is built with the Kivy GUI framework. It's a pretty simple app that takes in a few inputs (a prefix, a list of file extensions, and a folder) which it uses to rename all affected files (prefix_1.ext, prefix_2.ext, ...). More to come in this section in the future.

Check out Miscellaneous Apps!

"Learning how to learn is life's most important skill."

-Tony Buzan

"Learning how to learn is life's most important skill."

-Tony Buzan

"Growth is the only evidence of life."

-John Henry Newman

"Growth is the only evidence of life."

-John Henry Newman


Theodore Fox Williams

Theodore Williams

Software Developer

Python | Front-End | Back-End

Hello! I go by Teddy and I live in sunny Denver, Colorado with my girlfriend, 2 cats, and a bunch of fish and house plants. When I'm not coding or blogging about coding, I love to travel, SCUBA dive, hike, swing dance, play soccer, read, snuggle with my cats, work on my home aquariums, and play games (board, video, lawn, you name it). I love plants and animal wildlife, especially my namesake -- foxes -- if you couldn't tell by now. 😉 But this is a coding portfolio, so what about my coding life?

I love to code! Before I was a software developer, I was a research scientist and studied diseases like cancer, HIV, and diabetes. Science is fascinating to me, but I wanted to try my hand at programming. I took a free coding course in 2017 and I was hooked. So I decided to become a software developer! I taught myself with the abundance of resources that exist online. I plan to make a blog post about that journey and link to it here. I continue to learn new things about software development every day, and I am loving every minute of it. My professional software development career began a year later in 2018. Currently, I am a software developer for Opentext in the eDiscovery and legal information management department. In this capacity I work primarily on the back-end, creating and maintaining APIs, supporting tools, and web apps for projects like our machine learning document relation engine that helps customers find documents relevant to their cases.

My primary languages of focus right now are Python and Bash for backend development and scripting, and HTML, CSS, and Javascript for front-end web development. I enjoy problem-solving and figuring out how I can use new techniques and technologies to build useful applications. I'm also really into building applications that use best coding practices, supported by proper version control practices, continuous integration, and automated testing.

I love learning and I love using what I've learned in my everyday coding practices. I spend a lot of time listening to coding podcasts, watching coding YouTube videos, and reading coding blog posts about new technologies that I can then try to fit into my own projects. And then -- I use what I've learned to write awesome code, both at work and in personal projects. I really enjoy collaborating with others. Code reviews are awesome! I love learning how others code and how they think my code can be improved. I enjoy teaching new coding concepts to those interested. At my work, we have weekly code walkthroughs where one of us (frequently myself) will share how some new bit of coding tech fits into our work. I've benefited from some great mentors in my life and as such I'm looking to mentor individuals new to programming. Please feel free to reach out to me if you'd like to talk about a project, a problem, getting started in software development, or anything else on your mind.