Billiam: Data Ninja 🐱‍👤

Logo

Mathematician masquerading as a programmer.

View My LinkedIn Profile

View My Stack Overflow Profile

View My GitHub Profile

Personal Projects

🚀 Personal Projects

What’s on this page?


⏱️ Database Query Profiler

https://github.com/Bilbottom/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

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

📝 Timesheet automation with pop-up boxes

https://github.com/Bilbottom/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.

pop-up-box


✨ Features

⚠️ Warnings


dbt-labs Life Admin using dbt

https://github.com/Bilbottom/billiam-database

In addition to my ‘automated’ timesheet (the project above), I also keep track of every transaction I make at an item level (since 2018-01-18).

This project is both a dbt proof-of-concept, plus a means for me to analyse my spending and work.

Current lineage diagram:

lineage-diagrams

The dbt documentation is hosted at:


PyCharm Custom PyCharm Database Extensions

https://github.com/Bilbottom/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:


Microsoft Excel Custom Excel Add-In

https://github.com/Bilbottom/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:


📘 VBA Guide

https://github.com/Bilbottom/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:


🌍 SQL Schema Models

https://github.com/Bilbottom/sql-schema-models

Since I work with data all day every day, this is a start at some generalised data models.

For example, most databases (at least, analytical ones) benefit from having some calendar tables, also sometimes referred to as a “date dimension” from when they were built into the Kimball star schema architecture.

This is also a chance for me to just practise data modelling and data generation, so don’t take these models too seriously.


💰 Loan Calculations

https://github.com/Bilbottom/loan-calcs

I worked in Finance for 4 years and spent a lot of time working with loans. There are loads of helpful calculations to go with them, so this is a place to both document them and to also expose them through Python classes.

Mainly another opportunity for me to play around with OOP (mainly inheritance in this case) and to have fun with some maths.


🃏 Blackjack Emulator

https://github.com/Bilbottom/blackjack

Blackjack can be a fun casino game to play, especially when you win. This is an attempt to build Blackjack with Python just to get familiar with OOP concepts.


🔁 Mathematics Textbook on Algebraic Permutations

https://github.com/Bilbottom/permutations

Not really in development any more (and not even finished)

There’s a branch of Maths called Linear Algebra, and one of the concepts that you can study is permutations:

They’re a pretty simple concept, but learning about them becomes a pain because there’s a lot of different — and in some places, contradictory — notation used to describe them and what they can do.

The purpose of this project was to show all the different notations, where they differ, and how to solve problems using each of them.


🧑‍🎓 Master’s Dissertation Graphs

https://github.com/Bilbottom/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 that ax + 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 😉


cubic-graph-61