Data Structures and Algorithms is about solving problems
efficiently. A bad programmer solves their problems inefficiently
and a really bad programmer doesn't even know why their solution is
inefficient. So, the question is, How do you rank an algorithm's
The simple answer to that question is the Big O Notation. How
does that work? Let me explain!
This is the first post in a series about writing REST servers in
Go. My plan with this series is to implement a simple REST server
using several different approaches, which should make it easy to
compare and contrast these approaches and their relative merits.
Developers who just start using a language often ask "what framework
should I use to do X" as one of their first questions. While this
makes total sense for web applications and servers in many
languages, in Go the answer to this question is nuanced. There are
strong opinions both for and against using frameworks. My goal in
these posts is to examine the issue objectively from several angles.
Docker has stormed into software
development in recent years. While the concepts behind it are
powerful and useful, similar tools have been used in systems for
jails in one of
those tools which build upon even older chroot(2) To put it
shortly, with these tools, you can make a safe environment separated
from the rest of the system.
Jails in FreeBSD is by no means a new tool (introduced in 4.X), but
for a reason or another, I haven’t used them that often, which is a
shame since they are so powerful. So I wanted to explore this
concept in a concise and summarized manner.
One of the systems often used to get more information about digital
attackers are called honeypots. These mechanisms detect attempts at
unauthorised use of computer systems. You could think of these as a
digital version of bait cars used by the police to catch
thieves. For this particular project I wrote a small HoneyTrap
listener (an open-source
project by DTACT) that can interact with
systems scanning for devices on the s7comm protocol.
Late in the afternoon, after my brother had helped me with providing a
wired internet connection in my home office, I went outside with Adam
and Esme to have some fun in the snow. Alice didn't want to come, she
had been outside earlier with Esme and Adam, but Adam couldn't get
enough of the snow; he had been asking "When is it going to snow" ever
since he arrived in the Netherlands. Well, today his dream came true.
After a snowball fight in and near a small playground close to our
house we walked to another, larger playground. Esme and Adam worked
together creating a small snowman.
It's easy to take the terminal for granted. After all, modern
terminal emulators like gnome-terminal, konsole, and the others
included with Linux desktop environments are feature-rich
applications that satisfy most of our needs. But sometimes we need
more. We need to have multiple shell sessions running in a single
terminal. We need to display more than one application in a single
terminal. We need to move a running terminal session from one
computer to another. In short, we need a terminal multiplexer.
Terminal multiplexers are programs that can perform these amazing
feats. In this adventure, we will look at three examples: GNU
screen, tmux, and byobu.
Kenneth Reitz is a well-known software engineer, international
keynote speaker, open-source advocate, who also focuses on
photography and music production. He is well known for his many
open-source projects, specifically Requests "simple, yet elegant
HTTP library" and Pipenv Python Development Workflow for Humans. We
are excited to have interviewed Kenneth! In this interview he talks
about the top issues Python developers face while scaling
applications, shares his thoughts on async / await paradigm in
Python, speaks about his project PyTheory, and the "natural
affinity" for software development.
When I started working with my Mac Mini M1, I felt it was faster,
but I couldn’t really compare with a proper benchmark. I work a lot
with video so I created an Apple (M1 and older) benchmark that is
focused on CPU-heavy video programs: ffmpeg and primitive.
One of the most bizarre aspects of quantum physics is that the
fundamental entities that make up the Universe, what we know as the
indivisible quanta of reality, behave as both a wave and a
particle. We can do certain experiments, like firing photons at a
sheet of metal, where they act like particles, interacting with the
electrons and kicking them off only if they individually have enough
energy. Other experiments, like firing photons at small thin objects
— whether slits, hairs, holes, spheres, or even DVDs — give
patterned results that show exclusively wave-like behavior. What we
observe appears to depend on which observations we make, which is
frustrating, to say the least. Is there some way to tell,
fundamentally, what the nature of a quanta is, and whether it’s
wave-like or particle-like at its core?
When you format a disk and install Big Sur on it, making it a
startup or boot volume, it has a standard structure, something that
has changed greatly over the last few years. This article summarises
all you need to know about the layout of APFS boot disks and volumes
in Big Sur, whether running on an Intel or Apple Silicon
Mac. Detailed information for Catalina and earlier is
Emacs is amazing. It’s a very different sort of thing than a code
text editor like Vim or an IDE like VSCode. It’s a different way of
thinking of how to interact with a computer, where you build up
techniques on top of simple tricks that let you get amazing things
done. Of course, part of the appeal/challenge is that you need to
figure out how to make it work yourself. Since there’s not much in
the way of gentle tutorials, lets look at what you can do with tramp
to get a sense of what is possible.
The Mac has always been very different from its close relative, iOS,
especially when it comes to what a user is or is not allowed to run
on their system. Even with the introduction of Apple Silicon, Apple
has made it very
that the Mac is still the Mac, and is still hackable, even when
running on the new architecture.
What this means for us developers is that, when targeting the Mac
platform, we have choices: we can distribute our apps independently,
outside the Mac App Store, through the Mac App Store exclusively, or
through both at the same time.
This article is my brain dump on the subject. It is meant to be a
guide on the things that you’ll need to know about when distributing
a Mac app outside the App Store, rather than a how-to tutorial. My
hope is that having everything listed here will help demystify the
process for beginners, and the descriptions of my own process will
be useful as starting points.
I have been working from home more lately, where I have SSH sessions
open to the servers that I’m working on. Often when I return to my
computer, or switch to a SSH session that has been sitting idle for
a while, the SSH connection is either dead or frozen.
If you've ever wondered what all the fuss is about with libraries
like puppeteer, playwright, and selenium then this book is for
you. If you're a longtime veteran of browser automation, but are
curious about the "how's" and "why's," then this book is for you. If
you've got some web automation experience under your belt, but are
looking to sharpen your skills about web automation, then this book
is for as well. Essentially, this book is for everyone. While it
is for everyone, it's better enjoyed if you've done some
let me give you some of my background.
About 18 months ago I started a
which developed directly against containerd. This presented a
problem which I'd not really encountered before -
Kubernetes on my Mac were no longer
enough, I needed a Linux environment.
To begin with I just used an old 2016 model Dell XPS which gave me
everyting I needed, but when others started to contribute, they were
using Macs and so we had a problem. Multipass was the answer to our
woes and we were pleasantly surprised by it and wondered why more
people weren't using it every day.
Roy has never left the quiet mountain town he grew up in, unlike his
little brother Carl who couldn't wait to get out and escape his
troubled past. Just like everyone else in town, Roy believed Carl
was gone for good. But Carl has big plans for his hometown. And when
he returns with a mysterious new wife and a business opportunity
that seems too good to be true, simmering tensions begin to surface
and unexplained deaths in the town's past come under new
scrutiny. Soon powerful players set their sights on taking the
brothers down by exposing their role in the town's sordid history.
But Roy and Carl are survivors, and no strangers to violence. Roy
has always protected his younger brother. As the body count rises,
though, Roy's loyalty to family is tested. And then Roy finds
himself inextricably drawn to Carl's wife, Shannon, an attraction
that will have devastating consequences. Roy's world is coming apart
and soon there will be no turning back. He'll be forced to choose
between his own flesh and blood and a future he had never dared to
Haskell is the first programming language we reach for when we build
production software systems. This likely seems unusual to anyone who
only has a passing familiarity with the language. Haskell has a
reputation for being an advanced language with a steep learning
curve. It is also often thought of as a research language with
limited practical utility.
Although not as popular as imperative programming languages,
functional programming has taught developers to write semantic code
for decades. When working with imperative and object-oriented
languages, developers are often obliged to think of language
abstractions such as abstract classes and loops. In contrast,
programmers feel empowered to think of the problem at hand when
using functional languages, and there are many reasons for that.