The article describes Prig, my AWK-like tool that uses Go as the
scripting language. I compare Prig with AWK, then dive into how Prig
works, and finally look briefly at Prig’s Sort and SortMap builtins
(which use Go’s new generics if Go 1.18 is available).
SQLite 3.38.0
introduced improvements to JSON query syntax using -> and ->>
operators that are similar to PostgreSQL JSON
functions. In
this post we will look into how this simplifies the query syntax.
Recently I encountered some dubious error handling code. Not only
was it failing, it was failing
WRONG1. This
frustrates me because doing failing correctly in Haskell is quite
easy, so why was it implemented wrongly? I believe no-one has
addressed failing with an opinion. Plenty people describe the
variouswaysyoucanfail. But
none give opinions on why certain ways are better then
others. Therefore I shall share my failing expertise, and describe
the correct way to fail in Haskell.
The idea of using a honeypot to learn about potential attackers came
to me while chatting with a friend that had exposed his SSH port to
log into while away from home. He had mentioned that Chinese IPs had
been attempting to gain access. These attacks reminded me of when
broadband internet was introduced and there was quite a few firewall
software apps protecting internet users. In these apps, when
specific incoming traffic took place a popup dialog would alert you
to a possible attack. Today's internet is a lot more advanced with
several new attack vectors and running an SSH honeypot would be a
great opportunity to get up to speed about the attacks and attackers
affecting the internet.
At a high level this is how our static site generator will work.
Static site generator will watch content directory that will have
a list of markdown files with content
It will read all the markdown files and create html file
corresponding to them in the public directory. Names of html files
will be same as markdown file names.
Next, it will generate index.html that will list all the content
specific HTML files
Finally, it will watch for any changes in the content
directory. If content changes then it will generate the content
HTML and reload the changes.
For SQL beginners, there’s a bit of an esoteric syntax named
PARTITION BY, which appears all over the place in SQL. It always
has a similar meaning, though in quite different contexts. The
meaning is similar to that of GROUP BY, namely to group/partition
data sets by some grouping/partitioning criteria.
Creating backups is a basic necessity for anyone who stores
data. With the help of a dedicated server, the Linux operating system
and the rsync software, you can securely and efficiently retrieve data
from any computer via an SSH connection and store it in a backup. It
doesn’t matter if there is another Linux server, a Mac or a Windows
computer on the other side. But as soon as you have more than a few
text files, you have to control the process precisely. This script
contains some important elements, which are essential when dealing
with large amounts of data and slow internet lines.
Decorators are wrappers around Python functions (or classes) that
change how these classes work. A decorator abstracts its own
functioning as far away as possible. The Decorator notation is
designed to be as minimally invasive as possible. A developer can
develop his code within his domain as he is used to and only use the
decorator to extend the functionality. Because this sounds very
abstract, let’s look at some examples.
FreeBSD provides a built-in NFS server and client which understand
the NFSv3 and NFSv4 protocols. If you’re new to NFS, this section of
the FreeBSD Handbook provides a good overview of NFS and its
components.
In this post, we’ll implement and optimize a text search system
based on Postgres
Trigrams.
We’ll start with some fundamental concepts, then define a test
environment based on a dataset of 8.9 million Amazon reviews, then
cover three possible optimizations.
Our search will start very slow, about 360 seconds. With some
thoughtful optimization we’ll end up at just over 100 milliseconds –
a ~3600x speedup! These optimizations won’t apply perfectly to every
text search use-case, but they should at the very least spark some
ideas.
When we help NGINX users who are having problems, we often see the
same configuration mistakes we’ve seen over and over in other users’
configurations – sometimes even in configurations written by fellow
NGINX engineers! In this blog we look at 10 of the most common
errors, explaining what’s wrong and how to fix it.
Podman v4.0.0, a brand-new major release, is now available. Podman
4.0 is one of our most significant releases ever, featuring over 60
new features. Headlining this release is a complete rewrite of the
network stack for improved functionality and performance, but there
are numerous other changes, including improvements to Podman’s Mac
and Windows support, improvements to pods, over 50 bug fixes, and
much, much more!
Back in June 2020, I wrote a snippet to fuzzy search
hackingwithswift.com,
using Emacs's ivy completion
framework. With a similar online API, we could also search Apple's
docs. Turns out, there is and we can we can use it to search
developer.apple.com from our
beloved editor.
Your apps become more robust as you gain programming
experience. Improvements to coding techniques play a large part but
you’ll also learn to consider the edge cases. If something can go
wrong, it will go wrong: typically when the first user accesses
your new system.
A woman awakes in the morning to find that someone has picked her
apartment’s supposedly impregnable door lock and rearranged personal
items, even sitting beside her while she slept. The intrusion, the
police learn, is a message to the entire city of carnage to
come. Lincoln Rhyme and Amelia Sachs are brought in to investigate
and soon learn that the sociopathic intruder, who calls himself "the
Locksmith,” can break through any lock or security system ever
devised. With more victims on the horizon, Rhyme, Sachs and their
stable of associates must follow the evidence to the man’s lair… and
discover his true mission.
Their hunt is interrupted when an internal investigation in the
police force uncovers what seems to be a crucial mistake in one of
Rhyme's previous cases. He’s fired as a consultant for the NYPD and
must risk jail if he investigates the Locksmith case in secret.
In the evening I started in The Midnight
Lock
Lincoln Rhyme book 15 by Jeffery Deaver.
I want to learn more about writing microservices in Java using Spring
Boot. As my knowledge of Java is severely outdated I decided to buy
the Complete reference by Herbert Schildt. And for the microservices
part, after reading several reviews, I decided on Spring Boot Up &
Running by Mark Heckler.
Nix is a package manager that lets you have a more deterministic view of your software dependencies and build processes. One if its biggest weaknesses out of the box is that there are very few conventions on how projects using Nix should work together. It's like having a build system but also having to configure systems to run software yourself. This could mean copying a NixOS module out of the project's git repo, writing your own or more. In contrast to this, Nix flakes define a set of conventions for how software can be build, run, integrated and deployed without having to rely on external tools such as Niv or Lorri to help you do basic tasks in a timely manner.
I built this guide because I could never quite wrap my head around
Makefiles. They seemed awash with hidden rules and esoteric
symbols, and asking simple questions didn’t yield simple answers. To
solve this, I sat down for several weekends and read everything I
could about Makefiles. I've condensed the most critical knowledge
into this guide. Each topic has a brief description and a self
contained example that you can run yourself.