131 private links
The tradition of a "Hello, World" program goes back at least to 1978. But for modern coders, what's an appropriate "Hello, World"?
When polarizing topics are discussed in meetings, passions can run high and cloud our judgment. Learn how mental models can help you see clearly from this real-life scenario.
ffsend is a fully featured CLI client for Firefox Send. This article explains how to securely share files from commandline with ffsend on Linux.
Comparison among the number of command line options for various commands for v7 Unix (1979), slackware 3.1 (1996), ubuntu 12 (2015), and ubuntu 17 (2017).
The number of command line options has dramatically increased over time; they tend to have more options and there are no cases where programs have fewer options.
The C language is still prominent in the industrial embedded world, where “IoT” often refers to platforms much more limited than a Raspberry Pi. Often having to deal with such environments, we wrote the following informal explainer about C for internal company needs, and thought it could be of interest for more readers. This is basic material, mixing C and operating systems knowledge, aimed at readers with no or limited understanding of how you go from C source code to an executable. We could expand on many points, but for now we just share this meandering overview.
The C10k problem is still a puzzle for a programmer to find a way to solve it. Generally, developers deal with extensive I/O operations via thread, epoll, or kqueue to avoid their software waiting for an expensive task. However, developing a readable and bug-free concurrent code is challenging due to data sharing and job dependency. Even though some powerful tools, such as Valgrind, help developers to detect deadlock or other asynchronous issues, solving these problems may be time-consuming when the scale of software grows large. Therefore, many programming languages such as Python, Javascript, or C++ dedicated to developing better libraries, frameworks, or syntaxes to assist programmers in managing concurrent jobs properly. Instead of focusing on how to use modern parallel APIs, this article mainly concentrates on the design philosophy behind asynchronous programming patterns.
For the longest time, I believed that if smart people worked hard and grew up in a reasonably nurturing environment, success would come eventually.
I looked at other people and thought, “Wow, that person’s going to go on to do great things.”
But as I grew older, I realized that’s not necessarily the case. A few people I know who are intelligent and have a strong work ethic have gone on to do notable things, while many others are doing fine. Unfortunately, there are some that drift along, unsure about what to do.
I then realized that there are a lot of factors when it comes to success, whether it means having a fulfilling career, having great relationships, or staying healthy. Yes, smarts are part of it, and so is work ethic. But there’s more at play than just these two factors.
- You don’t reach out to new people
- You are averse to change
- You’re not willing to take risks
- You believe you deserve success based on credentials
- You constantly go after whatever’s exciting at the moment
- You can’t commit to a decision
- You don’t believe in yourself
The climate crisis isn’t a future we must fight to avoid. It’s an already unfolding reality. It’s the intensification of extreme weather–cyclones, storms and floods, droughts and deadly heat waves. It’s burning forests in Australia, the Amazon, Indonesia, Siberia, Canada and California. It’s melting ice caps, receding glaciers and rising seas. It’s ecosystem devastation and crop failures. It’s the scarcity of resources spreading hunger and thirst. It’s lives and communities destroyed, and millions forced to flee.
Some hints: Naming Convention; Keyword First Syntax; Type Last Syntax; No Dangling Else; Everything Is An Expression, Including Blocks; etc.
Science-fiction writer, journalist and longtime Slashdot reader, Cory Doctorow, a.k.a. mouthbeef, writes:
The Electronic Frontier Foundation (EFF) just published the latest installment in my case histories of "adversarial interoperability" -- once the main force that kept tech competitive. Today, I tell the story of Gopher, the web's immediate predecessor, which burrowed under the mainframe systems' guardians and created a menu-driven interface to campus resources, then the whole internet. Gopher ruled until browser vendors swallowed Gopherspace whole, incorporating it by turning gopher:// into a way to access anything on any Gopher server. Gopher served as the booster rocket that helped the web attain a stable orbit. But the tools that Gopher used to crack open the silos, and the moves that the web pulled to crack open Gopher, are radioactively illegal today.
If you wanted do to Facebook what Gopher did to the mainframes, you would be pulverized by the relentless grinding of software patents, terms of service, anticircumvention law, bullshit theories about APIs being copyrightable. Big Tech blames "network effects" for its monopolies -- but that's a counsel of despair. If impersonal forces (and not anticompetitive bullying) are what keeps tech big then there's no point in trying to make it small. Big Tech's critics swallow this line, demanding that Big Tech be given state-like duties to police user conduct -- duties that require billions and total control to perform, guaranteeing tech monopolists perpetual dominance. But the lesson of Gopher is that adversarial interoperability is judo for network effects.
More Americans are being sent home to die, placing an overwhelming financial and caregiving burden on families.
Email is unsafe and cannot be made safe. The tools we have today to encrypt email are badly flawed. Even if those flaws were fixed, email would remain unsafe. Its problems cannot plausibly be mitigated. Avoid encrypted email.
Technologists hate this argument. Few of them specialize in cryptography or privacy, but all of them are interested in it, and many of them tinker with encrypted email tools.
Most email encryption on the Internet is performative, done as a status signal or show of solidarity.
Use the cheat utility to keep Linux cheat sheets handy on the command line. Personalize your cheat sheets by editing and creating them to suit your needs.
There are lots of laws which people discuss when talking about development. This repository is a reference and overview of some of the most common ones.
Some examples: Hofstadter's Law, Kernighan's Law, Metcalfe's Law, Moore's Law, Murphy's Law, Occam's Razor, etc.
I long ago stopped reading books on note-taking.
They were always too vague and boring, full of platitudes that had little to do with the world outside academia.
I especially avoided “how-to” style books on the subject.
They would often list dozens of tips and tricks that had little to do with each other. There was never an overarching system for turning notes into concrete results.
But recently I picked up How To Take Smart Notes (affiliate link) by Sönke Ahrens. Ahrens is a Lecturer in Philosophy of Education at the University of Duisburg-Essen and also coaches students, academics, and professionals with a focus on time management, decision-making, and personal growth.
This article contains the flow-charts of many common programming language constructs that involve distinct combinations of gotos. The goto (or jump) is a basic building block of control flow, therefore most control flow constructs can be modelled using it.
Cod is a new command line completion daemon written in Go for Bash and Zsh. The tool detects the usage of --help to generate autocompletion for commands that don't support this.