Lockless algorithms are of interest for the Linux kernel when traditional locking primitives either cannot be used or are not performant enough. For this reason they come up every now and then on LWN; one of the last mentions, which prompted me to write this article series, was last July. Topics that arise even more frequently are read-copy-update (RCU — these articles from 2007 are still highly relevant), reference counting, and ways of wrapping lockless primitives into higher-level, more easily understood APIs. These articles will delve into the concepts behind lockless algorithms and how they are used in the kernel.
This post contains opinions. They may differ from the opinions you hold, and that’s great. This post is not targeted at any individual person or organization. This is a record of my frustration at trying to get Windows to do what I consider “basic development tasks”. Your experiences can and probably will differ. As a reminder, I am speaking for myself, not any employer (past, present and future). I am not trying to shit on anyone here or disregard the contributions that people have made. This is coming from a place of passion for the craft of computering.
With me using VR more and more with my Quest 2 set up with SteamVR, I’ve had to use windows more on a regular basis. It seems that in order to use Virtual Desktop, I MUST have Windows as the main OS on my machine for this to work. Here is a record of my pain and suffering trying to do what I consider “basic” development tasks.
One thing Rust has done, is to teach everyone they must lead with propoganda. After all if your propoganda isn’t overbearing, obviously you’ve got nothing? It is pretty sad others feel compelled to repeat such bombastic same-old same-old glowing terms, rather than describing “what we do is different”.
Robust? Show us 100 critical and meaningful programs. Optimal? That results from LLVM in the back-end. Reusable? Uhm show us 100 critical and meaningful programs.
Perhaps these authors don’t understand that those of us attempting to use modern techniques like privsep in C (proper privsep is exceedingly rare outside of the C universe because memory-safe makes privsep irrelevant /sarc) remain uninspired by such lead-ins. We recognize all the tools in the world are imperfect, but wow, such a first sentence does wonders to lose the audience. I met a programmer using an obscure language…
One of the distro maintainers of my distro of choice, Gentoo, filed a bug report with the
crytographysaying that the switch broke builds on several platforms that Gentoo still supports. The
cryptographyauthors replied that those platforms are not really used anymore, and that they were going to stick with Rust because it has better memory safety than C. They also argued that it is better to force better programming languages on people because of better security.
At first glance, it appears that the better argument is on the side of the
cryptographymaintainers, but after thinking about it carefully, I think they are wrong.
Cave bears were giant plant eating bears that roamed Europe and northern Asia, and went extinct around 25 thousand years ago. They hibernated in caves during the winter. This was a dangerous time, as those which had failed to fatten up enough during the summer would not survive hibernation.
As a result, many caves across Europe and northern Asia are now filled with the bones of cave bears, each one containing potentially thousands of individuals. In our new study, we analysed a bone from a cave in the Caucasus Mountains.
Our team recovered the genome from a 360,000-year-old cave bear, revealing new details of the animals’ evolutionary history and almost rewriting their entire evolutionary tree. As well as what it can tell us about cave bear evolution, this discovery is a breakthrough for the field of ancient DNA.
In 1972 computer scientist and mathematician Donald E. Knuth published “Ancient Babylonian Algorithms,” in which he provided the first English translations of various cuneiform mathematical tablets, with commentary. The tablets he studied ranged in date from 1800-1600 BCE. As a reflection of how comparatively little prestige computer science had as an academic subject at the time, Knuth began his paper with the statement:
“One of the ways to help make computer science respectable is to show that is deeply rooted in history, not just a short-lived phenomenon. Therefore it is natural to turn to the earliest surviving documents which deal with computation, and to study how people approached the subject nearly 4000 years ago.”
The Restoration of the Stuart monarchy in England in 1660 brought a great revival of interest in fashion, both at court and among those who could afford to imitate court dress. Clothes not only indicated status but sometimes political allegiances and religious beliefs as well. During the civil war period they proclaimed whose side you were on, since Cavaliers—members of the Established Church who recognized the king as its head, supported bishops and the Book of Common Prayer, and ardently upheld the sacredness of the king’s majesty—and Roundheads—who positioned themselves as defenders of historic English freedoms in the face of royal tyranny during the English Civil War—dressed differently. Broadly, the Interregnum had been a time of austerity and now people coveted luxury, but clothes continued to have political meaning and the cloth they were made from reflected national, commercial interests.
Pretty much every study of in-car touchscreens’ effects on drivers reaches the same conclusion: They’re a serious distraction. This holds true for tech-literate younger drivers as it does for older ones who might face a steeper learning curve, and for well-rested drivers as well as those fatigued by a long day at work. That goes double for the millions of Americans like me, who live with attentional, cognitive, or similar impairments that make dealing with these overwrought gadgets while driving not just a nuisance, but an unnecessary hazard.
Joy is a functional programming language based on the composition of functions taking one stack as argument and yielding one stack as value. Stacks can contain values of simple types such as truth values, characters and integers, and values of aggregate types such as sets, character strings and quoted programs with lists as a special case. The stack functions include the usual operations such as addition, comparison and list manipulation, but also many new kinds of functions which dequote quoted programs in various ways. These new functions behave like higher order functions, such as conditionals, various forms of recursion, and for aggregates the map, fold and filter functions. This paper gives an overview of the basic programs from which others are built by composition and quotation.
A study done by Ludwig-Maximilians-Universitaet (LMU) in Munich physicists demonstrates that fundamental characteristics of mopolymeric lecules, such as their subunit composition, are sufficient to trigger selection processes in a plausible prebiotic setting.
Before life emerged on Earth, many physicochemical processes on our planet were highly chaotic. A plethora of small compounds, and polymers of varying lengths, made up of subunits (such as the bases found in DNA and RNA), were present in every conceivable combination. Before life-like chemical processes could emerge, the level of chaos in these systems had to be reduced. In a new study, LMU physicists led by Dieter Braun show that basic features of simple polymers, together with certain aspects of the prebiotic environment, can give rise to selection processes that reduce disorder.
We are probably all familiar with “555” telephone numbers. The basic idea is that the 555 exchange code (or NXX in a NANP NXX-XXXX number) is reserved for use in fiction. Of course, this isn’t actually true at all, but that hasn’t stopped basically every work of fiction putting their imaginary telephone numbers in the 555 exchange.
In reality, the 555 exchange has a somewhat bumpy history, as is the case with most “special purpose” telephone ranges. Seemingly from the genesis of NANP as a formal numbering standard, the 555 exchange was reserved for special use by telcos, and was not to be used for normal subscriber lines. The 555 exchange accumulated various and sundry uses, but most prominently, starting in the early ‘60s it was used for directory service at 555-1212 in nearly all NPAs (area codes). This was nearly the only successful use of the 555 exchange, leaving it mostly empty.
The problem with agriculture is not that it happens in the countryside. The problem is that it relies heavily on fossil fuels. The vertical farm is not the solution since it replaces, once again, the free and renewable energy from the sun with expensive technology that is dependent on fossil fuels (LED lamps + computers + concrete buildings + solar panels). Our lifestyle is becoming less and less sustainable, increasingly dependent on raw materials, infrastructure, machines, and fossil energy. Unfortunately, this also applies to almost all technology that we nowadays label sustainable.