Programming Leftovers
-
Facundo Olano ☛ Code is run more than read
As I mentioned above, the way I learned the job, software was about solving problems for end users. This is summarized in one of the final tips of The Pragmatic Programmer, saying that our goal is to delight users, not just deliver code. But, since I started working as a programmer, and as software became ubiquitous, I’ve seen this assumption become increasingly hard to uphold.
There’s a lot of software being produced that just doesn’t care about its users, or that manipulates them, or that turns them into the product. And this isn’t limited to social media: as a user, I can’t even book a room, order food, or click on the Windows start button without popups trying to grab my attention; I can’t make a Google search without getting back a pile of garbage.
-
Pi My Life Up ☛ Installing the Go Compiler on Ubuntu
Go is a high-level compiled programming language that was originally designed at Google.
Syntax-wise, the language is very similar to the C language. However, it introduces many modern improvements to make it easier to use, especially with memory and concurrency.
Of course, being a compiled language means that to run your code, you must first compile it using the Go compiler. This compiler isn’t available through the Ubuntu package repository. Luckily, installing it doesn’t require that much extra effort.
-
Rust
-
Rust Weekly Updates ☛ This Week In Rust: This Week in Rust 525
Hello and welcome to another issue of This Week in Rust!
-
Earthly ☛ The Future is Rusty
Python, for instance, was a successor to ABC, a language designed explicitly for teaching purposes. Most people today start with one of those shallow learning curve languages and then struggle when they try a language with a steeper learning curve.
Why is that? Well, language design is about trade-offs. If a shallow learning curve is the number one goal then things like expressiveness, rigor, performance, and maintainability can suffer.
-
-
Python
-
James Bennett ☛ Django’s three types of model inheritance
People can, and do, debate whether inheritance in object-oriented programming languag es is a thing that ought to exist. There are even debates about what “inheritance” ought to mean, because there are multiple things it could mean (see this post by Hillel Wayne for a good brief explanation of the different potential meanings of “inheritance”).
When Django was first released, over 18 years ago, it supported inheritance in its ORM’s model-class definitions, and the project from which Django had been extracted (a news-oriented content-management system) unfortunately made use of this (for why this was unfortunate, you’ll have to keep reading to the end). Then the Django ORM was completely rewritten and, for a brief time, the rewritten version didn’t support inheritance.
But there was consistent pressure to add the feature back, and it was added back. And Django still supports model class inheritance to this day. In fact, it supports three different flavors of inheritance, only one of which you shouldn’t use. So let’s take a quick look the them. For all the details, of course, refer to the Django documentation on model inheritance.
-