Author: Austin Bingham
-
Including data in Python packages
Every time I need to include data in a Python package, I find myself going in circles checking existing projects, blog posts, and every other resource I can find to figure out the right way to do it. For something so seemingly straightforward, including data in a package always turns …
-
Including data in Python packages
Every time I need to include data in a Python package, I find myself going in circles checking existing projects, blog posts, and every other resource I can find to figure out the right way to do it. For something so seemingly straightforward, including data in a package always turns …
-
Running Jest tests in VS Code with custom environment variables
Currently the most popular Jest test runner extension for VS Code is vscode-jest by Orta. For most common setups, this extension works without any configuration needed to VS Code. In my case, though, I needed to enable Node’s support for ECMAScript modules. The Jest documentation lists a few ways to …
-
Running Jest tests in VS Code with custom environment variables
Currently the most popular Jest test runner extension for VS Code is vscode-jest by Orta. For most common setups, this extension works without any configuration needed to VS Code. In my case, though, I needed to enable Node’s support for ECMAScript modules. The Jest documentation lists a few ways to …
-
A More Full-Featured Emacs company-mode Backend
In the first article in this series we looked at how to define the simplest company-mode backend. [1] This backend drew completion candidates from a predefined list of options, and allowed you to do completion in buffers in fundamental mode. The main purpose of that article was to introduce the …
-
A More Full-Featured Emacs company-mode Backend
In the first article in this series we looked at how to define the simplest company-mode backend. [1] This backend drew completion candidates from a predefined list of options, and allowed you to do completion in buffers in fundamental mode. The main purpose of that article was to introduce the …
-
Writing the Simplest Emacs company-mode Backend
In Emacs, company-mode (short for “complete anything”) is a framework for performing completion in buffers. [1] It’s an alternative to the popular auto-complete-mode. company-mode supports extension via backends which provide the framework with lists of possible completions in various contexts. So, for example, there’s a backend th(at provides completion …
-
How to write a company-mode backends
In Emacs, company-mode (short for “complete anything”) is a framework for performing completion in buffers. It’s an alternative to the popular auto-complete-mode. company-mode supports extension via backends which provide the framework with lists of possible completions in various contexts. So, for example, there’s a backend that provides completion support for …
-
Writing the Simplest Emacs company-mode Backend
In Emacs, company-mode (short for “complete anything”) is a framework for performing completion in buffers. [1] It’s an alternative to the popular auto-complete-mode. company-mode supports extension via backends which provide the framework with lists of possible completions in various contexts. So, for example, there’s a backend th(at provides completion …
-
How to write a company-mode backends
In Emacs, company-mode (short for “complete anything”) is a framework for performing completion in buffers. It’s an alternative to the popular auto-complete-mode. company-mode supports extension via backends which provide the framework with lists of possible completions in various contexts. So, for example, there’s a backend that provides completion support for …
-
The super() Mystery Resolved
In the previous articles in this series [1] we uncovered a small mystery regarding how Python’s super() works, and we looked at some of the underlying mechanics of how super() really works. In this article we’ll see how those details work together to resolve the mystery.
The mystery revisited
As …
-
The super() Mystery Resolved
In the previous articles in this series [1] we uncovered a small mystery regarding how Python’s super() works, and we looked at some of the underlying mechanics of how super() really works. In this article we’ll see how those details work together to resolve the mystery.
The mystery revisited
As …
-
Method Resolution Order, C3, and Super Proxies
In the previous article in this series we looked at a seemingly simple class graph with some surprising behavior. The central mystery was how a class with two bases can seem to invoke two different method implementations with just a single invocation of super(). In order to understand how that …
-
Method Resolution Order, C3, and Super Proxies
In the previous article in this series we looked at a seemingly simple class graph with some surprising behavior. The central mystery was how a class with two bases can seem to invoke two different method implementations with just a single invocation of super(). In order to understand how that …
-
Python’s super(): Not as Simple as You Thought
Python’s super() is one of those aspects of the language that many developers use without really understanding what it does or how it works. [1] To many people, super() is simply how you access your base-class’s implementation of a method. And while this is true, it’s far from the full …
-
Python’s super() explained
You probably already know how to use Python’s super() to call base-class implementations of methods. But do you really know what it’s doing? The details of super() are elegant, interesting, and powerful, and while super() is probably more complex than you expect, it’s also surprisingly easy to understand. In this …
-
Python’s super(): Not as Simple as You Thought
Python’s super() is one of those aspects of the language that many developers use without really understanding what it does or how it works. [1] To many people, super() is simply how you access your base-class’s implementation of a method. And while this is true, it’s far from the full …
-
Python’s super() explained
You probably already know how to use Python’s super() to call base-class implementations of methods. But do you really know what it’s doing? The details of super() are elegant, interesting, and powerful, and while super() is probably more complex than you expect, it’s also surprisingly easy to understand. In this …
-
The Primacy of Testability: Modularity
In the first post in this series I set the stage for a discussion of how testability can serve as a proxy or enabler for other, more directly desirable qualities in a software system. In this post I’d like to look at the first such quality, modularity.
Modularity is perhaps …
-
The Primacy of Testability: Modularity
In the first post in this series I set the stage for a discussion of how testability can serve as a proxy or enabler for other, more directly desirable qualities in a software system. In this post I’d like to look at the first such quality, modularity.
Modularity is perhaps …
-
The Primacy of Testability
The job of a software architect [1] is difficult, just like almost every role in software development. They have to keep track of many subtly interacting quality attributes, often on multiple projects, any one of which may be too big or evolving too quickly to meaningfully keep in mental cache …
-
Series: The Primacy of Testability
In this series we look at how software architects – or really anyone involved in creating software – can use testability to help manage other quality attributes. From modularity to performance to the SOLID principles, testability can act as a proxy and an enabler for many of the cross-cutting, interacting concerns that …
-
Series: The Primacy of Testability
In this series we look at how software architects – or really anyone involved in creating software – can use testability to help manage other quality attributes. From modularity to performance to the SOLID principles, testability can act as a proxy and an enabler for many of the cross-cutting, interacting concerns that …
-
The Primacy of Testability
The job of a software architect [1] is difficult, just like almost every role in software development. They have to keep track of many subtly interacting quality attributes, often on multiple projects, any one of which may be too big or evolving too quickly to meaningfully keep in mental cache …
-
How to write Boost.Python type converters
Boost.Python [1] makes it possible to write C++ that “feels” like Python. The library is powerful and sometimes subtle. This is as compared with the Python C API, where the experience is very far removed from writing Python code.
Part of making C++ feel more like Python is allowing …
-
How to write Boost.Python type converters
Boost.Python [1] makes it possible to write C++ that “feels” like Python. The library is powerful and sometimes subtle. This is as compared with the Python C API, where the experience is very far removed from writing Python code.
Part of making C++ feel more like Python is allowing …