131 private links
Over the summer, after finally getting around to learning Vim motions, I quickly fell down the Neovim rabbithole and have been procrastinating work by tinkering away at my configurations ever since! This post will be sharing setup that I have currently landed at to turn my Neovim editor into a supercharged workhorse.
There are three questions you have when you’re hiring a programmer (or anyone, for that matter): Are they smart? Can they get stuff done? Can you work with them? Someone who’s smart but doesn’t get stuff done should be your friend, not your employee. You can talk your problems over with them while they procrastinate on their actual job. Someone who gets stuff done but isn’t smart is inefficient: non-smart people get stuff done by doing it the hard way and working with them is slow and frustrating. Someone you can’t work with, you can’t work with.
Read more...
Hello friends, this is the first of two, possibly three (if and when I have time to finish the Windows research) writeups. We will start with targeting GNU/Linux systems with an RCE.
If someone were to ask me what I think is the most important sonic attribute in sound quality, my answer wouldn’t be imaging or soundstaging, it would be volume. More than anything else, volume determines if the listening experience turns out to be a wow or a meh. I’m not just talking about the overall loudness but also how it fluctuates from moment to moment, which is called dynamics. And the practice of reducing dynamics is called compression.
It feels like everything these days needs you to create an account and log in to use them. Philips Hue announced you need to plug your home’s light automation to their cloud, even if you just use it locally. They claim it’s for security.
Read more...
[Simon Tatham, 2023-12-06]
Many years ago, my employer used to use “Can you name any sorting algorithms?” as a quickie interview question.
I’m something of a sorting-algorithms nerd, which is a quality that often comes with strong opinions. My personal prejudice (although I did my best not to let it affect the outcome of the interview) was that I was always extra pleased if our candidate listed a handful of well-known algorithm names and didn’t mention bubblesort.
Why? Because I hate it. Bubblesort is an awful sorting algorithm, and I wish people would stop teaching it.
I use a system I call homegit to manage config files and scripts in my home directory on all my machines. The idea is simple: a Git repository rooted at ~ that I push to GitHub. I’ve used this system for 6 years and like it a lot. See below to set it up for yourself!
Twenty five years ago, The Big Lebowski blew into theaters like a tumbleweed on an empty street.
Domestic audiences barely showed up, with the comedic detective tale only earning $18 million. Audiences gave it a B CinemaScore. Critics sniffed that it wasn’t as good as Joel and Ethan Coen’s last release, the Oscar-winning Fargo.
But that was just, like, their opinion, man.
“I thought it was going to be a big hit,” star Jeff Bridges tells THR, along with sharing some of his personal behind-the-scenes photos from the film’s set, many of which appeared in his 2003 book, Pictures. “I was surprised when it didn’t get much recognition. People didn’t get it, or something.”
Comprehensions are a fantastic language feature in Python. They are an elegant alternative to manually constructing and populating data structures. Comprehensions are declarative – they just say what they are, as opposed to the implicit logic of manual looping. When it comes to simple object creation, comprehension should be used whenever possible. This goes not just for lists, but also for dictionaries and sets.
However, a widely perceived drawback to comprehensions is that they are harder to debug. When something goes wrong with a manual loop, the first thing to do is to print out the iterated values as they turn up. But the values of a list comprehension can’t be accessed, so print-debugging isn’t possible. To deal with this, it’s common to unravel the comprehension into a manual loop. Manual loops are uglier and more complicated and more error-prone than comprehensions, but that’s the price that must be paid for debuggability.
Cycling is one of the most sustainable modes of transportation. Increased ridership reduces fossil fuel consumption and pollution, saves space, and improves public health and safety. However, the bicycle itself has managed to elude environmental critique. Studies that calculate the environmental impact of cycling almost always compare it to driving, with predictable results: the bicycle is more sustainable than the car. Such research may encourage people to cycle more often but doesn't encourage manufacturers to make their bicycles as sustainable as possible.
Over many centuries, man’s obsession with time has led to increasing accurate ways to measure it. As the precision of techniques and instruments has increased over the years, so the units used to define time have become ever smaller.
The minute and the second have given way to the SI units of the millisecond, the microsecond, the nanosecond, the picosecond, and the femtosecond, which is the the length of time that light takes to travel the diameter of a virus.
Large Language Models (LLM) are on fire, capturing public attention by their ability to provide seemingly impressive completions to user prompts (NYT coverage). They are a delicate combination of a radically simplistic algorithm with massive amounts of data and computing power. They are trained by playing a guess-the-next-word game with itself over and over again. Each time, the model looks at a partial sentence and guesses the following word. If it makes it correctly, it will update its parameters to reinforce its confidence; otherwise, it will learn from the error and give a better guess next time.
Projects are fraught with uncertainty, so it is no surprise that the language and tools of probability are making their way into project management practice. A good example of this is the use of Monte Carlo methods to estimate project variables. Such tools enable the project manager to present estimates in terms of probabilities (e.g. there’s a 90% chance that a project will finish on time) rather than illusory certainties. Now, it often happens that we want to find the probability of an event occurring given that another event has occurred. For example, one might want to find the probability that a project will finish on time given that a major scope change has already occurred. Such conditional probabilities, as they are referred to in statistics, can be evaluated using Bayes Theorem. This post is a discussion of Bayes Theorem using an example from project management.
There is an area of Python that many developers have problems with. This is an area that has seen many different solutions pop up over the years, with many different opinions, wars, and attempts to solve it. Many have complained about the packaging ecosystem and tools making their lives harder. Many beginners are confused about virtual environments. But does it have to be this way? Are the current solutions to packaging problems any good? And is the organization behind most of the packaging tools and standards part of the problem itself?
Join me on a journey through packaging in Python and elsewhere. We’ll start by describing the classic packaging stack (involving setuptools and friends), the scientific stack (with conda), and some of the modern/alternate tools, such as Pipenv, Poetry, Hatch, or PDM. We’ll also look at some examples of packaging and dependency-related workflows seen elsewhere (Node.js and .NET). We’ll also take a glimpse at a possible future (with a venv-less workflow with PDM), and see if the PyPA agrees with the vision and insights of eight thousand users.
“What happens when you open a web browser and enter google.com?” Many of us recall being asked this question before. I think it leaves an impression because navigating web pages is this magical process that we take for granted. We do it hundreds, if not thousands of times per day without knowing how it works. Most developers and engineers can explain parts of it, but the depth at which you can discuss this question is infinite.
Today, we’ll discuss the details of something else we take for granted: the terminal. What happens when you open a terminal emulator and enter “ls”? Like with browsers, there is too much content to fit into one blog post. We’ll give you what we think are the interesting details.
As I type these words, a mass exodus is underway from Twitter and Facebook. After decades of eye-popping growth, these social media sites are contracting at an alarming rate.
In some ways, this shouldn’t surprise us. All the social networks that preceded the current generation experienced this pattern: SixDegrees, Friendster, MySpace, and Bebo all exploded onto the scene. One day, they were sparsely populated fringe services, the next day, everyone you knew was using them and you had to sign up to stay in touch. Then, just as quickly, they imploded, turning into ghost towns, then punchlines, then forgotten ruins.