RSS Amplifier

Blog

The New Adventures of Judy2k

This is the website of Mark Smith, containing technical ramblings and other things.

judy.co.ukRSS feed ↗15 posts

Latest posts

Run Any Project with 'r'

This is an article about fish shell customisation. Fish is an alternative to bash, zsh, or powershell. It’s powerful as both an interactive shell, and a scripting language, and I’ll be demonstrating a little bit of both of these domains. This article demonstrates the creation of an r abbreviation in fish, that will automatically expand to the correct “run” command, based on the files in your…

Using Fortune to Reinforce Habits

A while ago I installed a bunch of new command-line tools, some of which replaced my existing tools, like eza instead of ls . Other tools improved the way that I work, such as LazyGit – the only interface to Git that I’ve found to be better that just using git commands. If you’re looking for some recommendations for a modern command-line, I can highly recommend Supercharge your shell by Justin…

Rust Trait Implementations and References

If you implement a trait on a type, and then take a reference to that type, does the reference also implement the trait? For a while I thought so! Let me explain why. Sometimes the things that Rust does for you can obfuscate what’s really going on under the hood, and I discovered one of those recently while having a minor battle with Rust’s type-system. To illustrate, let me start with a trait…

Use Justfiles to Work with MongoDB

I have started to write Justfiles for all my new projects. There’s a good chance you haven’t heard of Just or Justfiles. They’re very similar to Make and Makefiles. Whereas Make is designed to build artifacts from source files, and combine them in potentially complex ways, Just is “just” a task runner. Just can be installed with a bunch of different package managers , or you can just download a…

Automating Blog Deployment with GitHub Actions

Okay! Day 2 of the new blogging platform, and I’ve solved the automated deployment problem using GitHub Actions. GitHub Actions to Test Python I worked on a small Python project a little while ago and wanted to get CI running with as little effort as possible. I’d heard good things about GitHub Actions (my friend Michael Heap is even writing a book about them). That project’s CI issues were solved…

The Traditional First Post

I guess it’s traditional to write a first blog post about the new blogging platform. Tradition, right? Not cliché? My New Blogging Platform My main driver this time, moving to Zola , has been to simplify the build and deployment process. I’m halfway there. So that’s the half that’s done . The second half, automatic deployment , is a little more complex, and not implemented yet. But it should be…

Getting Started with MongoDB & Rust

MongoDB is probably the world’s most popular document database. It may not be well known, but MongoDB released their first driver for Rust back in 2013. Since then regular driver updates have been released, supporting new database features and adding improvements. This year, the driver was rewritten, adding support for Tokio & Async-Std, and is now officially supported. So maybe it’s time to give…

Pyjamas Conference Advocacy Panel

I got to be on a panel with Tania Allard ! Just as good, the panel was run by Lais Carvalho . This panel, arranged at the last minute to fill a slot in the schedule was super-fun for me, at least.

Stupid Things I've Done With Python

Sometimes I do stupid things with Python. I’m not proud of it. Okay, I am proud of it. And I’m going to teach you some of my techniques.

How to Get On This Stage (and What To Do When You Get There)

It’s my first ever DjangoCon Europe talk! I’m super proud of this talk. Applying to speak at a conference, and then preparing to actually give the talk (and dealing with rejection) can be frustrating. I’ve been on the talk selection committee for a few conferences, and I wanted to pass on the things I’ve learned about good proposals, as well as just demystifying the whole process for new speakers.

Everything You Know About MongoDB is Wrong!

This 10 minute talk attempts to list and counteract the eight most common myths about MongoDB. If you didn’t know that MongoDB was a secure, robust, ACID-compliant, transactional, relational database, then you should probably watch this talk.

It's Pythons All The Way Down!

A deep dive into how inheritance and metaclasses work in Python. I was quite nervous about this talk, partly because it was 70 minutes long(!), and partly because it’s the most advanced topic I’ve ever spoken about. In the end I was super-pleased with the results. As I was researching how types and metaclasses work in Python, I had a couple of epiphanies which I felt really helped make the subject…

Publish a Perfect Python Package

An opinionated guide to building and distributing high-quality Python packages. Note that there’s no audio for the first 30 seconds. It’s no great loss. I’ve never been super-happy with the delivery of this talk. I felt the delivery was a little rough around the edges, and I had some friends in the audience who were enthusiastically distracting me (in a nice way) which meant that I dropped some…

More Than you Ever Wanted to Know about Python Functions

What exactly are functions? Let’s talk about functions, methods, callables and closures - what they are, what you can give them, what they can give you, what you can do with them … and what’s inside. You probably think you already know everything about functions, but you probably don’t! Input & Output: How do you get things in and out of functions? I’ll cover parameters and the myriad of ways they…

Pythonic Refactoring: Protecting Your Users From Change

So you’ve released a library! Now you need to maintain it. You want to add features, restructure the code, fix bugs, and maybe improve the library’s usability. Your users just want their code to carry on working. That’s okay! This talk will cover techniques in both code and project management to allow you to keep your code moving forwards without breaking your users’ code. It is aimed at…