Linus Torvalds once wrote in a book that he created Linux just for fun, but it ended up sparking a revolution. Git, his second major creation, also an accidental revolution. It’s now a standard tool for software engineers, but its origin story wasn’t so much fun this time, at least for Linus.
“Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.”
Many (and probably actually most) people are overconfident when predicting what other people think is obvious and often incorrectly assume that other people will think the same thoughts and find the same things obvious.
The companies building “DevOps” teams are going in the right direction, but they need to be moving away from infrastructure configuration management and towards platform engineering and enabling developer self-service.
The knowledge silos are good. The silos are a feature, not a bug.
Expertise is a good thing.
This surprising amount of detail is is not limited to “human” or “complicated” domains, it is a near universal property of everything from space travel to sewing, to your internal experience of your own mind.
Products seem to be made for users, but I think this might be an illusion; they are more like a medium for self-expression.
For many project team members, starting with the punch line can be disconcerting, but we have found that once they become accustomed to it, they truly enjoy the clarity of the message and the time saved in getting the point across.
A true story.
Henry Farrell and Cosma Shaliz argue that large language models have much older cousins in markets and bureaucracies
(Spoiler: trusting your contributors works)
This article discusses using CSS to make spinning 3D diagrams.
So Docker is an open-source software product, one that is basically free (as in beer and as in freedom) although hindered by a history of messy licensing situations. Docker is also a company, and companies are expected to produce revenue. And that's where other facets of the greater identity we call "Docker" come to light: Docker Desktop and Docker Hub.
In some situations, you come to realize that a whole bunch of bad things happen due to non-technical causes, and they are some of the hardest things that you might ever need to remove from an organization.
Why and how we continuously invested the team bandwidth to pay back tech debt and what were the results?
If you are considering a career in software engineering, be prepared to face these truths head-on and embrace the opportunity to grow.
This post will use the above question to explore DNS, dig, A records, CNAME records, and ALIAS/ANAME records from a beginner’s perspective.
Back in of 2020, my school used a few online learning platforms that allowed professors/teachers to assign homework to students. I, as a lazy developer, wanted to spend more time playing games and writing code, especially when everyone was spending their time at home because of lockdown. I started writing this post in January of 2022, but I put off publicizing it for a while. It has been long enough since this all happened, so please sit back and enjoy.
I love to have Linux as my main OS.
Yet, occasionally, my system malfunctions to a point it requires a significant effort to fix it.
Many open source projects are terribly under-resourced and under-funded. Some open source developers even have to sacrifice their financial security to work on their passion.
Some open source projects dream about going from a passionate hobby to a small but sustainable company. This post will look at the different ways these projects can be funded to enable small groups to sustain themselves by working on projects they care about full time.
That technological change can force localised unemployment is unsurprising. But similarly prescient is that those same forces that made so many jobless are snapping at something more fundamental: our ability to create content.
Winter is coming and Collapse OS aims to soften the blow. It is a Forth operating system and a collection of tools and documentation with a single purpose: preserve the ability to program microcontrollers through civilizational collapse.
Physical buttons are increasingly rare in modern cars. Most manufacturers are switching to touchscreens – which perform far worse in a test carried out by Vi Bilägare. The driver in the worst-performing car needs four times longer to perform simple tasks than in the best-performing car.
This was posted to USENET by its author, Ed Nather (utastro!nather), on May 21, 1983.
A recent article devoted to the macho side of programming made an bald and unvarnished statement.
At least I know what it does now.
That’s because SELinux doesn’t enforce my policies. I rely on the Fedora Linux project to develop and maintain policies for the software I rely on. However, I’m not familiar with the policies that are in place on my system. There’s no configuration file or reference tool I can check to see or modify the policies. They’re just there.
It uses good old VT100 instructions.
My written words are my most precious asset. They are also a history of my life. That’s why I only use plain text files. They are the most reliable, flexible, and long-lasting option. Here’s why.
Linux features a whole suite of tools to debug many different aspects from performance to correctness. And here I am assuming that the stutters are not inherent in the game logic, because the 32-bit version works correctly.
We don’t write things down to remember them. We write them down to forget.
It was the IT folks who brought UML to the table and took it away in a puff of smoke.
MySQL’s “utf8” isn’t UTF-8.
The “utf8” encoding only supports three bytes per character. The real UTF-8 encoding — which everybody uses, including you — needs up to four bytes per character.
MySQL developers never fixed this bug.
In 2015, I gave a talk in which I called Donald Knuth the Patron Saint of Yak Shaves. The reason is that Donald Knuth achieved the most perfect and long-running yak shave: TeX.
I figured this is worth repeating.
GTFOBins is a curated list of Unix binaries that can be used to bypass local security restrictions in misconfigured systems.
MySQL is a pretty poor database, and you should strongly consider using Postgres instead.
We have failed to build an operating system for people who are not like us.
Lot has been said about how the web evolved to become a kind of monstrous entity. The mail protocol has followed a similar evolution but it’s a bit more subtle and has often been summarised as « too much email. ».
The text-based environment in UNIX is incredibly versatile and powerful, programmers and system administrators who log into a UNIX server remotely will typically work exclusively in the console, working on a remote desktop (similar to TeamViewer in Windows) is just too inefficient.
But can a console really function as an everyday desktop? That is what this article will try to explore, and I think you will be pleasantly surprised at just how useful a text-based environment can be!
A miracle occurred this week. Everyone I have talked to about it, myself included, is shocked that it happened.
I did find that a disproportionally big amount of these bugs was reported by players using Linux to play. I started to investigate, and my findings did surprise me.
Asking about your attempted solution rather than your actual problem.
There might be a way of doing complex multi-participant tasks that is better than what's being done currently, but the incentives for each participant are not aligned.
Software Engineering is really frustrating because there’s basically never a “right” answer and so most decisions come down to “whatever the senior engineer wants.”
Software distributions are often volunteer-run and represent the interests of the users; in a sense they are a kind of union of users.
You have an incentive in modern companies to not be the problem person, but instead to ship new features today. Nobody gets promoted for maintenance or passing a security audit.
The title explains it all, you don't even have to read.
Take manual control of your Linux system’s DNS resolution and keep programs from interfering with and overwriting your resolv.conf file.
FOSS is what you make of it. You have the right to make the changes you need from the software yourself, and you are the only person that you can reliably expect to do it.
“Copyleft” or "Reciprocal"… a legal expert opinion.
The following is the 500-mile email story in the form it originally appeared, in a post to sage-members on Sun, 24 Nov 2002.
In this post, I argue that this particular Rubicon has long been crossed, and that we should take a dim view of buying yet more telecommunications infrastructure and services from potential geopolitical foes.
Instead, we should work very hard to regain some semblance of control over our current telecommunications infrastructure - something we have long lost.
Programming is hard, programming is not for everyone, and for the time being everyone might be able to do it, but most definitely most should not.
Ultimately, building software is a complex and deeply human activity. Everything is contextual and there are rarely easy answers. Most meaningful progress happens through consensus, compromise, luck, and lots of hard work.
In the end, a lot can be understood through the lens of values.
I was able to lower my heat pump's electricity needs by ~50% and half of the costs are also paid for by the mining earnings.
The definition of compiler has never assumed generating executable machine code.
Science is supposed to be self-correcting. To test whether science is indeed self-correcting, I tried reporting this misconduct via several mechanisms of scientific self-correction. The results have shown me that psychological science is largely defenseless against unreliable data.
After years of wrestling GnuPG with varying levels of enthusiasm, I came to the conclusion that it's just not worth it, and I'm giving up. At least on the concept of long term PGP keys.
If you consume any content on the Internet, you're mostly consuming content created by people who for some reason spend most of their time and energy creating content on the Internet. And those people clearly differ from the general population in important ways.
I will show you a minimal template that will make your scripts safer.
It's not a science. As tempting as it is, you can't rely purely on math to craft the perfect color palette. A systematic approach like the one described above is great to get you started, but don't be afraid to make little tweaks if you need to.
Choosing good colors for your charts is hard. This article tries to make it easier.
So let’s talk about security by obscurity. It’s a bad idea to use it as a single layer of defense. If the attacker passes it, there is nothing else to protect you. But it’s actually would be good to use it as an “additional” layer of defense. Because it has a low implementation cost and it usually works well.
Some reasons why you might not want to remove data from the database between automated tests: speed, correctness, data growth issues and parallelism advantages
Computers and phones have become the go-to note-taking method for many. But your brain benefits from an old-fashioned pen and paper.
Google is well-known for forbidding the use of software using the GNU Affero General Public License, commonly known as “AGPL”. Google is also well-known for being the subject of cargo-culting by fad startups. Unfortunately, this means that they are susceptible to what is ultimately anti-AGPL propaganda from Google, with little to no basis in fact.
The SAND Lab at University of Chicago has developed Fawkes1, an algorithm and software tool (running locally on your computer) that gives individuals the ability to limit how their own images can be used to track them.
dispelling misconceptions about static linking
Under Linux, the dd command can be used for simple sequential I/O performance measurements. This article will provide valuable information about which parameters should be used.
xargs
passes the argument once to the utility command specified. For example, xargs cat will cat every line passed to xargs. But how to use the xargs argument twice in the command on Linux?
Regular expressions are great at matching. It's easy to formulate a regex using what you want to match. Stating a regex in terms of what you don't want to match is a bit harder.
counter examples to the thesis that time to market is more important than quality
Two factor authentication from the commandline via pass
A brief introduction to Go for programmers who haven't used Go before: Why use it? The standard library. And the language itself.
This small site is oriented to developers learning golang that want to see the unexpected, at least for a newcomer, behaviors in the language.
A directory of free software solutions and web applications which can be hosted locally
The only cheat sheet you need -> curl cheat.sh/ls
Explaining and badge of No Maintenance Intended
There you are, happily playing around with an audio file you’ve spent all afternoon tweaking, and you’re thinking, “Wow, doesn’t it sound great? Lemme just move it over here.” At that point your subconscious chimes in, “Um, you meant mv, not rm, right?” Oops. I feel your pain — this happens to everyone. But there’s a straightforward method to recover your lost file, and since it works on every standard Linux system, everyone ought to know how to do it.
Go is a lovely little programming language designed by smart people you can trust and continuously improved by a large and growing open-source community.
Go is meant to be simple, but sometimes the conventions can be a little hard to grasp. I’d like to show you how I start all of my Go projects, and how to use Go’s idioms. Let’s build a backend service for a web app.
There are several ways of logging into a server over SSH. Methods include password login, key-based login and two-factor authentication.
Two-factor authentication is a much better type of protection. In the event that your computer gets compromised, the attacker would still need an access code to login.
In this tutorial, you will learn how to set up two-factor authentication on Debian 9 using Google Authenticator and SSH.
A couple years back we wrote a guide on how to create good OpenPGP/GnuPG keys and now it is time to write a guide on SSH keys for much of the same reasons: SSH key algorithms have evolved in past years and the keys generated by the default OpenSSH settings a few years ago are no longer considered state-of-the-art. This guide is intended both for those completely new to SSH and to those who have already been using it for years and who want to make sure they are following the latest best practices.
Copyright is automatic (since the Berne convention) and any work of authorship is automatically protected by it – essentially giving the copyright holder1 exclusive power over its work. In order for your downstream to have the rights to use any of your work – be that code, text, images or other media – you need to give them a license to it.
Configure which identity-file to use host-wide without further arguments
The story of the Unix C compiler, and the virtually invisible back-door security hole inserted into it by Ken Thompson - a story he told in his Turing award lecture..
The only annoyance was that Thunderbird only ever synced my main Inbox folder, not all subfolders. So I had to go through them manually to check for new email.