Found 237 bookmarks
Newest
Should You Use Upper Bound Version Constraints?
Should You Use Upper Bound Version Constraints?

I don't agree with much of this, but I recognise it's a valid position. To quote from the TL;DR at the end:

"Capping dependencies has long term negative effects, especially for libraries, and should never be taken lightly. A library is not installed in isolation; it has to live with other libraries in a shared environment. Only add a cap if a dependency is known to be incompatible or there is a high (>75%) chance of it being incompatible in its next release. Do not cap by default - capping dependencies makes your software incompatible with other libraries that also have strict lower limits on dependencies, and limits future fixes. Anyone can fix a missing cap, but users cannot fix an over restrictive cap causing solver errors. It also encourages hiding issues until they become harder to fix, it does not scale to larger systems, it limits your ability to access security and bugfix updates, and some tools (Poetry) force these bad decisions on your downstream users if you make them. Never cap Python, it is fundamentally broken at the moment. Also, even packing capping has negative consequences that can produce unexpected solves."

·iscinumpy.dev·
Should You Use Upper Bound Version Constraints?
Musings on Python Type Hints
Musings on Python Type Hints
As a huge fan of type hinting in Python, I feel this is a good article introducing the sorts of things you should think about, and the benefits you should derive from using type hints.
·samgeo.codes·
Musings on Python Type Hints
Penumbra - colour scheme
Penumbra - colour scheme
Penumbra is a mathematically balanced colour scheme constructed in a perceptually uniform colour space with base colours inspired by the shades of colour occurring in nature due to the light of the sun and the sky. It cleanly separates the perceptual properties of colours while optimally utilizing the available colour space of typical displays.
·github.com·
Penumbra - colour scheme
The Documentation Triangle (or, why code isn't self documenting)
The Documentation Triangle (or, why code isn't self documenting)
"My code speaks for itself" is the usual gate-keeper kind of nonsense trotted out by people who just can't be arsed to document their stuff but want to sound like they do it because they are so 1337. This blog post, in not very many words, gives a nice explanation as to why that's rather silly.
·sourceless.org·
The Documentation Triangle (or, why code isn't self documenting)
Ante
Ante
A low-level functional language, for exploring refinement types, lifetime inference, and algebraic effects.
·antelang.org·
Ante
Why logging out via a GET URL is a bad idea
Why logging out via a GET URL is a bad idea
Fun tweet from a while ago now that highlights the fun to be had by having side-effects hanging off a GET rather than a POST; from a time when it more or less still wasn't quite the issue it ended up being.
·twitter.com·
Why logging out via a GET URL is a bad idea
Joker
Joker
Joker is a small interpreted dialect of Clojure written in Go. It is also a Clojure(Script) linter. One of the main aims is that it will allow for scripting with Clojure.
·joker-lang.org·
Joker
Evolution of Emacs Lisp | Proceedings of the ACM on Programming Languages
Evolution of Emacs Lisp | Proceedings of the ACM on Programming Languages

While Emacs proponents largely agree that it is the world’s greatest text editor, it is almost as much a Lisp machine disguised as an editor. Indeed, one of its chief appeals is that it is programmable via its own programming language. Emacs Lisp is a Lisp in the classic tradition. In this article, we present the history of this language over its more than 30 years of evolution. Its core has remained remarkably stable since its inception in 1985, in large part to preserve compatibility with the many third-party packages providing a multitude of extensions. Still, Emacs Lisp has evolved and continues to do so.

Important aspects of Emacs Lisp have been shaped by concrete requirements of the editor it supports as well as implementation constraints. These requirements led to the choice of a Lisp dialect as Emacs’s language in the first place, specifically its simplicity and dynamic nature: Loading additional Emacs packages or changing the ones in place occurs frequently, and having to restart the editor in order to re-compile or re-link the code would be unacceptable. Fulfilling this requirement in a more static language would have been difficult at best.

One of Lisp’s chief characteristics is its malleability through its uniform syntax and the use of macros. This has allowed the language to evolve much more rapidly and substantively than the evolution of its core would suggest, by letting Emacs packages provide new surface syntax alongside new functions. In particular, Emacs Lisp can be customized to look much like Common Lisp, and additional packages provide multiple-dispatch object systems, legible regular expressions, programmable pattern-matching constructs, generalized variables, and more. Still, the core has also evolved, albeit slowly. Most notably, it acquired support for lexical scoping.

The timeline of Emacs Lisp development is closely tied to the projects and people who have shaped it over the years: We document Emacs Lisp history through its predecessors, Mocklisp and MacLisp, its early development up to the “Emacs schism” and the fork of Lucid Emacs, the development of XEmacs, and the subsequent rennaissance of Emacs development.

·dl.acm.org·
Evolution of Emacs Lisp | Proceedings of the ACM on Programming Languages
Problems | Project Lovelace
Problems | Project Lovelace
A pretty neat list of programming problems, that are intented to be solved in a number of languages and the solutions tested. Good for people getting to grips with a new language, or with programming in general.
·projectlovelace.net·
Problems | Project Lovelace
Deleting Git Branches with Magit
Deleting Git Branches with Magit
As this article says, I've always tended to drop down to the CLI to delete a branch, and ensure it's cleaned from the remote, etc. Somehow I'd never picked up on the fact that Magit just handles this. And of course, it does, Magit does so much!
·emacsredux.com·
Deleting Git Branches with Magit
How I cut GTA Online loading times by 70%
How I cut GTA Online loading times by 70%

That thing where you obviously release something that works, just doesn't work well enough, and you never go back and improve it 'cos it works and, well... it's working yeah?

That.

·nee.lv·
How I cut GTA Online loading times by 70%
Genomics Boot Camp
Genomics Boot Camp
The Genomics Boot Camp is a resource that helps you to start your journey in practical analysis of genomic data, with a focus on SNP data. The chapters follow the same structure all the time: provide background information and practical insight to the topic, and when appropriate exercises to reinforce the obtained knowledge. The Genomics Boot Camp as a whole was designed to cater to various learning preferences with written text, video demonstrations, and the possibility of hands-on exercises. There is a certain overlap between the book and the YouTube channel contents, but each has unique pieces of information as well. So for the full experience, I suggest checking out both.
·genomicsbootcamp.github.io·
Genomics Boot Camp
A half-hour to learn Rust - fasterthanli.me
A half-hour to learn Rust - fasterthanli.me

"In order to increase fluency in a programming language, one has to read a lot of it. But how can you read a lot of it if you don't know what it means?

In this article, instead of focusing on one or two concepts, I'll try to go through as many Rust snippets as I can, and explain what the keywords and symbols they contain mean."

·fasterthanli.me·
A half-hour to learn Rust - fasterthanli.me