127 private links
Why on earth would someone would pick C to start a new project in 2020? Surely there is a newer language with more shiny features that’s better right? Well I can’t speak for other people but I’ll tell you my reasons.
First of all let me preface this by saying that of course this is a biased opinion and the language I pick for something depends on the context it’s going to be used in. For example; I doubt I’ll ever be reaching for C when writing a web service simply because the ecosystem around that domain isn’t great and I’m not itching to write my http framework at this time.
But for games, more specifically cross-platform games C is a clear winner for me because it provides me with exactly the things I’m looking for which is reliability, simplicity and performance.
Like many developers, I have been interested in Rust for quite some time. Not only because it appears in so many headlines on Hacker News, or because of the novel approach the language takes to safety and performance, but also because people seem to talk about it with a particular sense of love and admiration. On top of that, Rust is of particular interest to me because it shares some of the same goals and features of my favorite go-to language: Swift. Since I've recently taken the time to do try out Rust in some small personal projects, I wanted to take a little time to document my impressions of the language, especially in how it compares to Swift.
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.