After Perl 6's renaming to Raku, acknowledging that it really is
another language, Perl can now use number 7 without fear. It already
has claimed the newly freed territory with the announcement that
Perl 5.32 with more modern and sensible defaults is to be Perl 7.
often use these different constructs for working with arrays. This
is a reference, for myself and for others, written to augment the
Dbus and Polkit are two technologies that emanate an aura of
confusion. While their names are omnipresent in discussions, and the
internet has its share of criticism and rants about them, not many
have an actual grasp of what they actually do. In this article I’ll
give an overview of these technologies.
Object-oriented programming (OOP) is a method of structuring a
program by bundling related properties and behaviors into individual
objects. In this tutorial, you’ll learn the basics of
object-oriented programming in Python..
In the evening I modified the Makefile I use to generate this blog. I
added the --date-format argument once to tumblelog.pl and once to
tumblelog.py. Default the date-format is set to '%d %b %Y'—day
of the month, abbreviated month name, and year—but using the
aforementioned argument I changed this to '%a %d %b %Y'. This value
adds the abbreviated weekday name to the front of the date, see
The static microblog generator I wrote is available at
GitHub. Feedback is welcome.
The Crimson Campaign: Good
In the afternoon I finished The Crimson
book 2 in the Powder Mage trilogy by Brian McClellan. While I liked
the previous book in the trilogy, Promise of
Blood, more I consider
this still a good book; not bad for the middle book in a trilogy.
If you like the Powder Mage trilogy, you might like:
Field Marshal Tamas has finally returned to Adopest, only to find
the capital in the hands of a foreign power. With his son Taniel
presumed dead, Tamas must gather his beleaguered forces and
formulate a plan to defeat the Kez - no easy task when you're
outnumbered and can't tell friend from foe.
The army is divided . . .
With their enemy bearing down on them, the Adran command is in
disarray. Someone, it seems, is selling secrets to the
Kez. Inspector Adamat is determined to flush out the traitor, but as
the conspiracy unravels, he will learn a horrifying truth.
And all hope rests with one man . . .
Taniel Two-Shot, the powder mage who shot a god in the eye, is on
the run. He possesses the sole means of defeating the Kez, but to do
so he must evade treachery at every turn. If he fails, Adro will
In the afternoon I started in The Autumn
the final book in the Powder Mage Trilogy by Brian McClellan.
Recently molted Aphonopelma seemanni eating
In the afternoon I gave 2 pre-killed mealworms, Tenebrio molitor, to
the female Aphonopelma seemanni I keep. The large tarantula started
the 27th of June,
2020 and still has a
very colorfull fresh look so I decided to take a few photos of her.
I pre-kill mealworms by crushing their heads to prevent them from
burrowing into the substrate. The tarantula doesn't seem to mind that
she doesn't have to hunt for her food; it's just delivered at the doorstep
of her burrow.
Beginner’s Guide To Abstraction
Abstraction is hard to define but the process typically goes like
you identify different chunks of code that you think are all
basically doing the same thing
you create a method or a class with a narrow interface which can
be substituted in for all the chunks of code you found
you go and swap out the chunks of code with a call to your
Recently I’ve switched back from macOS to GNU/Linux, as my primary
development environment, and I found out that my old
on remapping Enter to Control was no longer the optimal way to
achieve this. It took me a bit of digging, but eventually I found
(a plugin for the interception
framework), which does
exactly what I needed and it does it splendidly.
In this post we'll design a break glass procedure for reaching SSH
hosts in an emergency, using security keys that you can store
offline. This is just one approach, but you can adapt it to your
circumstances. We will store an offline SSH Certificate Authority on
a hardware security key, and have our hosts trust that CA. This will
work on pretty much any OpenSSH setup, including our single sign-on
Let’s get into dark mode in the context of websites. We’ll delve
into different options and approaches to implementing a dark mode
design and the technical considerations they entail. We’ll also
touch upon some design tips along the way.
A pipe is actually a very simple construct. We start two programs
and connect STDOUT of the first with STDIN of the second. From the
stand point of the programs they are writing to filehandles that
where opened without a filename. Raku allows us to do so by using
The sound of a purring cat is one of the most comforting sounds
available and can help soothe and calm you down when you're feeling
stressed. Naturally, it's not just the sound that is important, but
it's also the presence of the warm cuddly cat. Purrli tries to
recreate both the sound and the presence of your very own virtual
cat through a custom sound engine modelled after real purrs.
With a purr that delicately changes over time, Purrli aims at making
the experience as real and lively as possible. Just like a real cat,
Purrli will call for your attention. Just be careful when adjusting
the last slider, if you don't want to be nagged in the middle of
The history API maintains complete the navigation state. Whenever
a new page is navigated history.pushState is called and page is
added to the state. That means this event is called whenever the URL
Correlation and Covariance are two commonly used statistical
concepts majorly used to measure the linear relation between two
variables in data. When used to compare samples from different
populations, covariance is used to identify how two variables vary
together whereas correlation is used to determine how change in one
variable is affecting the change in another variable. Even though
there are certain similarities between these two mathematical terms,
these two are different from each other.
There are a lot of CSS properties that some don’t know about, or
they know about them, but forget to use them when they’re
specific result, or some can save your time by writing less CSS. As
a front-end developer, I came across such things every now and then,
and I asked myself, why not list all those less-used and interesting
CSS properties in an article?
Every startup in Silicon Valley is using Go to build their
infrastructure. Docker, Kubernetes, etcd, Terraform, Vault, Consul,
Traefik and lots of other cutting-edge projects are written in
Go. So what's going on? Why is everyone interested in this boring
PEP 622 proposes adding
a pattern matching construct to Python. Pattern matching allows the
programmer to destructure data with a syntax that mirrors the
construction syntax. The proposal brings Python in-line with many
other modern programming languages, like Haskell, OCaml, and
Rust. However, two features included in the proposal (or-patterns
and guards) interact in a perhaps surprising way—see this
paper for an
explanation of this interaction as it relates to OCaml, another
language with both or-patterns and guards.
An interesting concept that I’ve come across is port knocking. Note
that this is just an additional layer of security. Port knocking is
sending packets to a pre-defined sequence of ports, so that
recipient knows it is coming from a trusted client and open the port
for you. It is the same concept of making a secret doorbell ring
pattern with your close friends so that you know who is ringing the
A git tag is a marker for a specific point in time for your
repository. Well, although I say a "specific point in time", they
are really just a reference to a commit. These tags are stored as
files inside of the refs folder within the .git folder that is a
part of every git repository.
Animations have become an essential part of web design, and
developers now use these to beautify content on websites. Before the
release of CSS3, front-end developers had to perform animations with
introduction of CSS animations, developers can now perform
animations with ease.
In this article, I'm going to introduce you to CSS Transitions, walk
you through the process of creating simple CSS animations, explain
the Transition shorthand properties, and it's value.
Here’s a fancy new experimental feature in Chrome! Now, we can get
an overview of the CSS used on a site, from how many colors there
are to the number of unused declarations… even down to the total
number of defined media queries.
Git Switch and Restore: an Improved User Experience
If you’re like me and you’ve worked with Git for some time, you
might have a couple of commands committed to your memory—from git commit for recording your changes, to git log for sensing “where”
I have found git checkout to be a command that I reach for pretty
frequently, as it performs more than one operation. But a single
command doing more than one thing might produce a suboptimal user
experience for someone learning Git.
In the early evening I finished Promise of
book 1 in the Powder Mage trilogy by Brian McClellan. I liked this
book a lot; it's very good. In some ways it reminded me of the
Series by Brandon
Sanderson, especially the later books. If you have read this series
you might like Promise of Blood a lot, and vice versa.
The Crimson Campaign
Tamas' invasion of Kez ends in disaster when a Kez counteroffensive
leaves him cut off behind enemy lines with only a fraction of his
army, no supplies, and no hope of reinforcements. Drastically
outnumbered and pursued by the enemy's best, he must lead his men on
a reckless march through northern Kez to safety, and back over the
mountains so that he can defend his country from an angry god,
In the evening I started in The Crimson
book 2 in the Powder Mage trilogy by Brian McClellan.
Using Bash traps in your scripts
It's easy to detect when a shell script starts, but it's not always
easy to know when it stops. A script might end normally, just as its
author intends it to end, but it could also fail due to an
unexpected fatal error. Sometimes it's beneficial to preserve the
remnants of whatever was in progress when a script failed, and other
times it's inconvenient. Either way, detecting the end of a script
and reacting to it in some pre-calculated manner is why the
Python's reduce(): From Functional to Pythonic Style
is a function that implements a mathematical technique called
or reduction. reduce() is useful when you need to apply a
function to an iterable and reduce it to a single cumulative
value. Python’s reduce() is popular among developers with a
functional programming background, but Python has more to offer.
In this tutorial, you’ll cover how reduce() works and how to use
it effectively. You’ll also cover some alternative Python tools that
can be more
readable, and efficient than reduce().
A quick start “from scratch” on 3 basic machine learning models —
Linear regression, Logistic regression, K-means clustering, and
Gradient Descent, the optimisation algorithm acting as a driving
force behind them.
The purpose of this article is for coders to understand the inner
workings of basic machine learning algorithms. To make the best use
of the article, it is recommended to follow the code on your own
development environment to understand the process.
In the afternoon I carefully removed the exuviae of the Aphonopelma
seemanni I keep from its burrow. It had started molting
yesterday in the
I carefully moistened the molt with some water and manipulated it to
open it up enough to see the spermathecae (female) or not (male). As
this is a large molt I was able to see the spermathecae with the naked
eye; it's a girl!
I bought this tarantula 7th of March
and this was the first time it molted in my care.
Eight tips to relieve those Postgres headaches
Welcome to this practical, non-exhaustive guide to some of the
common issues you’ll encounter while using Postgres. We’ll go beyond
the basic advice of adding indices to your queries using sequential
scans. There are also a few extra tips for those using the AWS RDS
The concepts of correlation and causation are sometimes confusing to
amateur researchers. In practice, I often saw researchers
considering a correlation as causation and making mistakes in
conclusions. Mathematically, correlation is the necessary but
insufficient condition for causation. In other words, if two things
have causation relationship, these two things must have correlation
relationship as well. However, if two things have correlation
relationship, these two things do not necessarily have causation
In this blog post, I would use an example to talk about the concepts
of correlation and causation, how to verify causation using
experiments, and the caveats in using experiments to verify
In the evening, when checking upon the Aphonopelma seemanni I keep I
noticed that it was upside down in its burrow. This means the
tarantula is going through ecdysis; the shedding of its old exoskeleton.
The tarantula has been restless for about a week or so, getting out of
its burrow entirely, and moving around a bit. Maybe it was looking for
a better spot to moult? Or maybe because the room temperature exceeded
30°C (86°F) now and then?
In the above photo you can see the silk the tarantula has spun to
close off the entry to its burrow.
If all goes well I expect to be able to collect an exuviae, the cast
off exoskeleton, tomorrow, which can be used to determine the sex of
the tarantula which I don't know at this time of writing. I hope
female as females live much longer compared to males.
How does SQLite work? Part 1: pages!
I wanted to hack on SQLite, because I’ve
used it before, it requires no configuration or separate server
process, I’d been told that its source code is well-written and
approachable, and all the data is stored in one file. Perfect!
JSON is important, damn near everything that we do as programmers or
operators involves JSON at some point. JSON decoding is expensive,
if your product talks JSON then performance of marshalling data in
and out of JSON is important. This is a talk about designing an
efficient replacement for encoding/json.Decoder.
Sometimes it's necessary to split existing data into several classes
in order to predict new, unseen data. This problem is called
and one of the algorithms which can be used to learn those classes
from data is called Logistic Regression.
Pytorch is a pretty intuitive tensor library which can be used for
creating neural networks. There are many features in the framework,
and core ideas that should be understood before one can use the
The original tutorial by
provides a very good introduction that guides the users along
different concepts, explaining the different abstraction used in the
framework. It was a pretty involved read, and assumes some knowledge
on neural networks before everything on the page makes sense. So
here, we will be filling in some of these gaps.
In Python, metaclass is one of the few tools that enables you to
inject metaprogramming capabilities into your code. The term
metaprogramming refers to the potential for a program to manipulate
itself in a self referential manner. However, messing with
metaclasses is often considered an arcane art that’s beyond the
grasp of the proletariats.
Before I went to the bed I checked on the Brachypelma smithi I keep
and found it already out of its molt but still upside down. The
molting process had started
yesterday in the
About 10 hours later I took another photo of this specimen. It was now
right side up and moved when I opened the plastic container I keep it in.
In the afternoon I decided to determine the sex of this specimen. I
made the molt slightly wet and let it rest for a while; a moist exuviae
is much easier to manipulate. In order to take a good photo of the
spermathecae, if present, I put the exuviae on a piece of paper and
shone a light underneath the paper.
I used the macro lens I bought the 17th of June
2020, but with the LED
ring light off, to take the above photo which is a 1:1 crop with some
post processing in Pixelmator Version 3.9
Classic. The above photo clearly shows
the spermathecae, which means that this specimen is female.
Announcing Perl 7
Perl 7.0 is going to be v5.32 but with different, saner, more modern
defaults. You won’t have to enable most of the things you are
already doing because they are enabled for you. The major version
jump sets the boundary between how we have been doing things and
what we can do in the future.
Unknown to many of us, under the hood emacs was designed as a
client/server architecture; which means, Emacs core runs as a daemon
and you attach clients to it. Normally, we run both when we type
emacs, but the execution of both the client and the server is
transparent to the user. Before you attempt to do something fancy,
this architecture is somewhat limited to localhost (1), which means
that you can’t quite “remote into” an emacs running on a different
host. In a world where we have
mosh, and other multiplexers and mobile
connectivity technologies, there may not seem like there’s much room
for running emacs as a server, but we will see some advantages to
Tolkien saw a gap in England’s pre-history. There is English
folklore. However, this tends to be local and on a rather small
scale. There are Hengist and
legendary first Anglo-Saxons to lead an expedition to our shores,
but nothing with the grandeur and drama of the sagas mentioned
above. Tolkien planned to fill in the gaps before Hengist and Horsa
with a highly-developed imaginary world that harked back to a time
of elves and fairies.
Sometimes, you can have too much of a good thing. That’s certainly
true with Git
well-known software development workflow that offers several options
but can bog down users.
We developed GitLab Flow as the solution to eliminate messy
complexity and streamline the development process. GitLab
issue tracking to the Git workflow, simplifying the process and
removing confusion. The problem with Git flow
This PEP proposes adding pattern matching statements to Python in
order to create more expressive ways of handling structured
heterogeneous data. The authors take a holistic approach, providing
both static and runtime specifications.
In the evening, around 9:30 PM, I noticed that the Brachypelma
smithi I keep since the 7th of
had turned itself upside down. This means that it's going in ecdysis;
the shedding of its old exoskeleton.
It's important to not disturb the spider during this process, which
is often mistaken for dying by people new to keeping
tarantulas. Moverover, after the process one has to wait at least 7
days before feeding the spider; its exoskeleton including the fangs
have to harden out.
The End of OS X
What is striking about macOS 11.0 is the degree to which is feels
more like a son of iOS than the sibling that Mac OS X was:
macOS 11.0 runs on ARM, just like iOS; in fact the Developer
Transition Kit that Apple is making available to developers has
the same A12Z chip as the iPad Pro.
macOS 11.0 has a user interface overhaul that not only appears to
be heavily inspired by iOS, but also seems geared for touch.
macOS 11.0 attempts to acquire developers not primarily by being
open and good, but by being easy and good enough.
Ever since optional static typing was added to Python 3.5+, the
question of using type annotations keeps creeping back everywhere I
work. Some see them as a step forward for the Future of Python™, but
to me and many others it's a step back for what coding with Python
fundamentally is. I've been in a number of debates over type
annotations at work and so decided to compile some of the recurring
points of discussion here.