Elliptic curve cryptography is a modern public-key
technique based on mathematical elliptic curves and is well-known
for creating smaller, faster, and more efficient cryptographic
keys. For example, Bitcoin uses ECC as its
asymmetric cryptosystem because of its lightweight nature.
In this introduction to ECC, I want to focus on the high-level ideas
work. For the purposes of keeping this article easier to digest,
I’ll omit implementation details and mathematical proofs, we can
save those for another time.
Docker on MacOS will always be slower than on Linux (well, unless
Apple Silicon ends up panning out, which it looks like it might!),
but it doesn't have to be as infuriatingly slow as it is by
default. In fact, you can get it pretty close to native speed and
it's not even all that difficult. It turns out that developing with
Docker on MacOS can actually be a really enjoyable experience, not
just a compromise you make in order to have a portable development
curl is an internet transfer engine. A rather modular one too. Parts
of curl’s functionality is provided by selectable alternative
implementations that we call backends. You select what backends to
enable at build-time and in many cases the backends are enabled and
powered by different 3rd party libraries.
I recently had the need to extract some data from a MySQL database
running in production and while some methods are brutally simple and
some a little more involved, all of them come with a few caveats.
SVG, short for “scalable vector graphics” is a format for, well,
scalable vector graphics. In this article I summarize my opinion of
the format, what its problems are and suggest what could be done to
also known as K8s, is an open-source system for automating
deployment, scaling, and management of containerized applications
according to kubernetes.io but if we look at it closer under the
hood let’s see what it is actually and technically :)
I’ve been using vim pretty much exclusively as my editor for about 8
years now and I like to think I’ve amassed a few tricks along the
way. Instead of the standard entry-level advice, here are some, as
far as I can tell, lesser-known vim tips.
A Sender Policy Framework (SPF) record is a piece of text that you
can add to your Domain Name System (DNS). It tells email clients
(such as Gmail or Outlook) who can send email from your domain, and
those clients can check each email received against this record to
see if it is likely to be spam or forged.
Microservices are a way to organize complex software
systems. Instead of putting all your code into one app, you break
your app into microservices that are deployed independently and
communicate with each other. This tutorial teaches you how to get up
and running with Python microservices using gRPC, one of the most
In the afternoon Esme and the children continued with the igloo
project. Later in the afternoon I helped out as well.
In the evening we managed to close the roof which was not an easy
task. Luckily I had found a large piece of frozen snow that we could
use as a kind of support for four more bricks. After that we filled up the
holes with powdery snow.
Haskell: The Bad Parts, part 1
Haskell is, in my opinion, a far more well designed and coherent
some historical baggage. In many ways, it's a bleeding edge research
language that sometimes includes...half-baked features. Due to an
inconsistent set of rules around backwards compatibility, it will
sometimes break code every six months, and sometimes keep strange
decisions around for decades.
In the afternoon Esme and the children worked on an igloo in our
Haskell Programming from First Principles
In the afternoon I started with the first chapter of Haskell
Programming from First Principles: All You
Need is Lambda. I bought the PDF of this book years ago but back then
I got stopped after the first chapter, can't recall why. I had also
some hard time with the exercises. This time I managed to do all the
exercises correctly but the very last one, which I will try again
In the evening I installed stack, a requirement for chapter 2, via
Mac Ports using: