Splitting a Python codebase into dependencies for fun and profit
When the Python codebase for a project (let's call the project LasagnaFest) starts getting big, and when you feel the urge to re-use a chunk of code (let's call that chunk foodutils) in multiple...
View ArticleUsing Python's namedtuple for mock objects in tests
I have become quite a fan of Python's built-in namedtuple collection lately. As others have already written, despite having been available in Python 2.x and 3.x for a long time now, namedtuple...
View ArticleA lightweight per-transaction Python function queue for Flask
The premise: each time a certain API method is called within a Flask / SQLAlchemy app (a method that primarily involves saving something to the database), send various notifications, e.g. log to the...
View ArticleDNA: the most chaotic, most illegible, most mature, most brilliant codebase ever
As a computer programmer – i.e. as someone whose day job is to write relatively dumb, straight-forward code, that controls relatively dumb, straight-forward machines – DNA is a fascinating thing. Other...
View ArticleTwelve ASX stocks with record growth since 2000
I recently built a little web app called What If Stocks, to answer the question: based on a start and end date, and a pool of stocks and historical prices, what would have been the best stocks to...
View ArticleGood devs care about code
Theories abound regarding what makes a good dev. These theories generally revolve around one or more particular skills (both "hard" and "soft"), and levels of proficiency in said skills, that are...
View ArticlePrivate photo collections with AWSPics
I've created a new online home for my formidable collection of 25,000 personal photos. They now all live in an S3 bucket, and are viewable in a private gallery powered by the open-source AWSPics. In...
View ArticleOn Hugo
After having it on my to-do list for several years, I finally got around to trying out a static site generator (SSG). In particular, Hugo. I decided to take Hugo for a spin, by rebuilding one of my...
View ArticleOn Eleventy
Following on from my last experiment with Hugo, I decided to dabble in a different static site generator (SSG). This time, Eleventy. I've rebuilt another one of my golden oldies, Jaza's World, using...
View ArticleOn Tina
Continuing my foray into the world of Static Site Generators (SSGs), this time I decided to try out one that's quite different: TinaCMS (although Tina itself isn't actually an SSG, it's just an editing...
View ArticleThread progress monitoring in Python
My recent hobby hack-together, my photo cleanup tool FotoJazz, required me getting my hands dirty with threads for the first time (in Python or otherwise). Threads allow you to run a task in the...
View ArticleEnriching user-entered HTML markup with PHP parsing
I recently found myself faced with an interesting little web dev challenge. Here's the scenario. You've got a site that's powered by a PHP CMS (in this case, Drupal). One of the pages on this site...
View ArticleDatabase-free content tagging with files and glob
Tagging data (e.g. in a blog) is many-to-many data. Each content item can have multiple tags. And each tag can be assigned to multiple content items. Many-to-many data needs to be stored in a...
View ArticleMixing GData auth with Google Discovery API queries
For those of you who have some experience working with Google's APIs, you may be aware of the fact that they fall into two categories: the Google Data APIs, which is mainly for older services; and the...
View ArticleFirst experiences developing a single-page JS-driven web app
For the past few months, my main dev project has been a custom tool that imports metric data from a variety of sources (via APIs), and that generates reports showing that data in numerous graphical...
View ArticleGenerating a Postgres DB dump of a filtered relational set
PostgreSQL is my favourite RDBMS, and it's the fave of many others too. And rightly so: it's a good database! Nevertheless, nobody's perfect. When it comes to exporting Postgres data (as SQL INSERT...
View ArticleIntroducing: Instant-runoff voting simulator
I built a simulator showing how instant-runoff voting (called preferential voting in Australia) works step-by-step. Try it now. The simulator in action I hope that, by being an interactive, animated,...
View ArticleGDPR-compliant Google reCAPTCHA
Per the EU's GDPR and ePrivacy Directive, you must ask visitors to a website for their consent before setting any cookies, and/or before collecting any user tracking data. And because the GDPR applies...
View Article
More Pages to Explore .....