If you’re managing a complex git codebase with multiple developers,
then you may well be using a tool like GitHub or BitBucket to delve
into the history and figure out branch and merge issues.
These GUIs are great for providing a nice user interface for
managing pull requests and simple histories and the like, but when
the workflow SHTF there’s no substitute for using git log and its
relatively little-known flags to really dig into the situation.
Time Traveling In Haskell: How It Works And How To Use It
I recently got to use a very curious Haskell technique in
production: time traveling. I say this with the utmost
seriousness. This technique worked like magic for the problem I was
trying to solve, and so I thought I’d share what I learned. In
addition to the technique and its workings, I will also explain how
time traveling can be misused, yielding computations that never
At their core, neural networks are functions. They take some input,
perform a series of computations, and produce an output. Though most
networks operate in the realm of vectors and matrices, it can be a
useful exercise to see them without the extra barrier of linear
algebra. For this purposes of this explanation, we will only cover
single variable functions, but the principles we will see can be
extended into any number of dimensions.
And while everyone is wondering where perl7 is going, the other
crucial question is where perl5 is going; will it stop where it is
now (the current official plan), will there be a 5.34 (something I
have repeated argued for because it makes no sense for the
sunsetting release to have experimental features, and is lacking a
perl5 executable out the box), will perl5 development continue as it
did before? This is something that isn't talked about much and I'm
not sure yet what will happen, but I am pretty sure that decision
shouldn't be taken by the people who don't want to use it.
Exactly-Once Initialization in Asynchronous Python
A common situation in
programs is asynchronous initialization. Some resource must be
initialized exactly once before it can be used, but the
initialization itself is asynchronous — such as an
asyncpg database. Let’s
talk about a couple of solutions.
You can’t rule the development world for decades without attracting
some enemies. And object-oriented programming, which provides the
conceptual underpinning for dozens of languages old and new,
certainly has some enemies.
Maybe that’s why we’ve suffered through a never-ending series of hot
takes about OOP. They’ve described it as a productivity-destroying
a set of deceitful programming
and a mediocre
designed to help poor programmers hide their incompetence. OOP was
years ago, so take that one with a grain of salt).
What all these rants have in common is that they point out
(rightfully) some of the pitfalls in modern software design and then
conclude (wrongfully) that this indicates a terrible rot at the core
of the programming world. Yes, object-oriented programming doesn’t
look so great if you conflate it with sloppy design practices and
fuzzy architectural thinking. But are these crimes really an
unavoidable part of OOP? Or are they just one of the wrong paths we
sometimes wander as programming neophytes, armed with too much
confidence and too much curiosity?
Most people who have come in contact with computer graphics know
that aliasing commonly refers to jagged edges that occur when
rendering triangles. In this article, we look at other
manifestations of aliasing in 3D graphics, and attempt to
theoretically unify them. We won't properly look at how to solve
aliasing, only focusing on reasoning about the problem instead.
Many people hack together shell scripts quickly to do simple tasks,
but these soon take on a life of their own. Unfortunately shell
scripts are full of subtle effects which result in scripts failing
in unusual ways. It’s possible to write scripts which minimise these
problems. In this article, I explain several techniques for writing
robust bash scripts.
In the afternoon, when walking back to our house, I spotted what I
believe to be a female Volucella zonaria; the hornet mimic hoverfly.
The first of July my aunt contacted me on Messenger asking if I could
identify an insect she had taken a photo of. I couldn't. But I used an
app on my iPhone 5 (can't recall which one) which identified it as
Volucella zonaria. Hence, why I believe the above insect to be a
Volucella zonaria as well. And since males have less space between
the eyes, I assume that this is a female.
The vocal red cat
On the way back to our house I encountered a very vocal red cat. It
kept meowing at me, insisting to be petted which I did. It kept
rolling on the sidewalk meowing and purring, requesting to be petted
Different approaches to HTTP routing in Go
There are many ways to do HTTP path routing in Go – for better or
worse. There’s the standard library’s
http.ServeMux, but it
only supports basic prefix matching. There are many ways to do more
advanced routing yourself, including Axel Wagner’s interesting
then of course there are lots of third-party router libraries. In
this article I’m going to do a comparison of several custom
techniques and some off-the-shelf packages.
Just before 4pm I noticed that the Caribena versicolor I keep had
molted for the first time in my care. In the early afternoon I had
added water to the enclosures of each of the ten tarantulas I keep,
mostly slings. And I guess the increase in humidity triggered the
molting process in the little spider. Or maybe it was just ready.
After I had taken two photos with my iPhone 5 with a LED ring light
plus macro lens I
noticed a small mealworm crawling around in the enclosure. I always
crush the head of mealworms prior to feeding them to my spiders, but I
guess I didn't do it right with this one.
As the Caribena versicolor shouldn't eat for at least a week after
molting I removed the mealworm and tried to feed it to the Hapalopus
sp. Colombia "large" I keep. This spider also molted recently; I found
an exuviae with it the 21st of this month. But it was not
interested in eating the small mealworm.
In the end I fed the small mealworm to the Chromatopelma
cyaneopubescens, which detected the wriggling prey item and picked it
up to eat it.
Random Strings and Integers That Actually Aren’t
Recently the topic of generating random-looking coupon codes and
other strings came up on internal chat. My go-to for something like
that is always this
solution based on
Feistel networks, which I didn’t think was terribly obscure. But I
was surprised when nobody else seemed to recognize it, so maybe it
In the evening I noticed that the Pterinochilus murinus Red Color
Form (RFC) I keep was out in the open, eating a mealworm that I had
given to it earlier. Normally it eats inside its burrow, but now it
I carefully moved the enclosure; a plastic container, and moved the
clips away from the lid. Next, I got my iPhone 5 ready with a LED ring light
and a macro lens.
While I carefully took several photos the tarantula moved around a
bit while holding its prey.
Most of the programming languages are open enough to allow
programmers doing things multiple ways for the similar
find multiple ways of doing things for a similar outcome, and that's
confusing at times.
Some of the usages are better than the other alternatives and thus,
these are my favorites. I am going to list them here in this
article. I am sure, you will find many of these in your list too.
The open source Git project just released Git
with features and bug fixes from over 58 contributors, 13 of them
new. We last caught up with you on the latest in Git back when 2.26
a look at some of the most interesting features and changes
introduced since then.
Every self-help book ever, boiled down to 11 simple rules
Why not condense the repeated lessons of an entire genre into one
article? That's what I've attempted here, after reading dozens of
history's biggest bestsellers so you don't have to. Here is the
essence of the advice I've seen delivered again and again.