Mathematician masquerading as a programmer.
View My LinkedIn Profile
View My Stack Overflow Profile
🚀 Personal Projects
What’s on this page?
Showcase of some of my favourite personal projects:
https://github.com/billwallis/dbt-py
dbt is great, but its use (correction: abuse) of Jinja is not 😭
The repo shims dbt to allow custom Python to be available as Jinja callbacks.
This makes it possible to rewrite Jinja macros as Python code, giving us:
https://github.com/billwallis/sql-learning-materials
A site where I document lots of SQL stuff:
This has a set of actually difficult SQL challenges largely based on real problems I’ve encountered in my career:
…as well as some written tutorials with corresponding YouTube videos:
https://github.com/billwallis/db-query-profiler
One of the awesome things about SQL is that there are so many different ways to get the same output. One of the hardest things about SQL is knowing which way is the most performant way 😝
Enter: the Database Query Profiler.
This is a Python package that will run a set of queries against your database a number of times and return the average execution times. It’s intended to be used during development to help you understand the actual performance of your queries.
This is NOT a replacement for analysing the query plan. This should just support the analysis done with it.
✨ Features
tqdm)A typical output will look something like this:
Start time: 2023-05-07 12:38:06.879738
----------------------------------------
100%|██████████| 5/5 [00:01<00:00, 3.29it/s]
query-1.sql: 0.10063192s (33.4%)
query-2.sql: 0.20044784s (66.6%)
----------------------------------------
End time: 2023-05-07 12:38:08.757555
https://github.com/billwallis/daily-tracker
Not sure where all your time goes? I wasn’t either, so this application generates a pop-up box every 15 minutes (configurable) for me to enter what I’m working on.
[!WARNING]
This is a work in progress. I’m currently using it to track my time, but it’s not yet ready for public consumption.
✨ Features
https://github.com/billwallis/bills-hooks
I love pre-commit, and I’ve been building out some of my own hooks.
Current available hooks:
check-filename-pattern: Check that filename match a specified regular expressioncheck-no-commit-comment: Check for NO_COMMIT commentstidy-gitkeep: Remove redundant .gitkeep filesThere is also the undocumented hook check-dbt-project-version which keeps the version specified in dbt_project.yml in sync with the Python project version.
https://github.com/billwallis/advent-of-code-sql
Solutions to the Advent of Code problem sets, written in SQL!
My DSA isn’t great so I don’t have any complete years yet, but it’s a fun way to flex DuckDB.
https://github.com/billwallis/sql-problems
There are countless websites for practising SQL. I’ve attempted the hardest free problems across a bunch of them, documenting my solutions and my opinions on the platforms.
https://github.com/billwallis/pycharm-extensions
PyCharm is awesome, and it’s even more awesome when you write your own database extensions 😉
The repo adds four aggregator extensions and three extractor extensions:
https://github.com/billwallis/vba-projects/tree/main/personal-toolkit
Excel will never go away… So let’s enrich it with some quality-of-life features wrapped up into a handy custom ribbon tab (in addition to the millions of features that Excel already has).
The features are built using VBA, and the custom ribbon tab is added using the Office RibbonX Editor available at:
https://github.com/billwallis/vba-guide
This will probably not be updated any more
Can you tell that I like VBA? Well, I want you to like it too: this is a reference material for getting started with VBA. The guide is written in LaTeX, but you can find the latest compiled version at:
It was originally written for some former colleagues and has been slightly adapted for a more general audience, but probably not enough. If you want to see some VBA videos, I strongly recommend the WiseOwl YouTube tutorials:
https://github.com/billwallis/ma5p1-dissertation-code
Originally an R project, this has been reduced and reworked as a Python project
As part of my dissertation, I was exploring “point-line duality” – and it was easiest to do this by drawing up the points and the lines using a computer.
One of the images has also been used as the thumbnail for the song Perdidos en la Multitud by the Argentinian musician Aroldo De Souza:
The description to go with this image is:
In Mathematics, there is a concept of point-line duality: that is, for a point on a graph there is a corresponding line called its dual. The dual of the point
(a, b)is the set of points{(x, y)}such thatax + by = 0, and we call the set of points a line.An interesting consequence of this duality is that if a collection of points all line on a straight line, then their dual lines will all intersect in the same place. The image is the duals of some points on the cubic curve
y = x^3. The points on the cubic curve have been selected so that there are many sets of 3 points that all lie on the same line (such as(-1, -1),(0, 0), and(1, 1)) which means that their duals (the lines) have many intersections of exactly three lines.
If you look carefully, you’ll also see that the image has been set as the tab icon for this page 😉