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…
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…
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…
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…
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…
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…
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…
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.
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.
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.
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…
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…
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…
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…