Shared posts

08 Aug 21:47

Quick Hit: Comparison of “Whole File Reading” Methods

by hrbrmstr

(This is part 1 of n posts using this same data; n will likely be 2-3, and the posts are more around optimization than anything else.)

I recently had to analyze HTTP response headers (generated by a HEAD request) from around 74,000 sites (each response stored in a text file). They look like this:

HTTP/1.1 200 OK
Date: Mon, 08 Jun 2020 14:40:45 GMT
Server: Apache
Last-Modified: Sun, 26 Apr 2020 00:06:47 GMT
ETag: "ace-ec1a0-5a4265fd413c0"
Accept-Ranges: bytes
Content-Length: 967072
X-Frame-Options: SAMEORIGIN
Content-Type: application/x-msdownload

I do this quite a bit in R when we create new studies at work, but I’m usually only working with a few files. In this case I had to go through all these files to determine if a condition hypothesis (more on that in one of the future posts) was accurate.

Reading in a bunch of files (each one into a string) is fairly straightforward in R since readChar() will do the work of reading and we just wrap that in an iterator:

length(fils)
## [1] 73514 

# check file size distribution
summary(
  vapply(
    X = fils,
    FUN = file.size,
    FUN.VALUE = numeric(1),
    USE.NAMES = FALSE
  )
)
## Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 19.0   266.0   297.0   294.8   330.0  1330.0 

# they're all super small

system.time(
  vapply(
    X = fils, 
    FUN = function(.f) readChar(.f, file.size(.f)), 
    FUN.VALUE = character(1), 
    USE.NAMES = FALSE
  ) -> tmp 
)
##  user  system elapsed 
## 2.754   1.716   4.475 

NOTE: You can use lapply() or sapply() to equal effect as they all come in around 5 seconds on a modern SSD-backed system.

Now, five seconds is completely acceptable (though that brief pause does feel awfully slow for some reason), but can we do better? I mean we do have some choices when it comes to slurping up the contents of a file into a length 1 character vector:

  • base::readChar()
  • readr::read_file()
  • stringi::stri_read_raw() (+ rawToChar())

Do any of them beat {base}? Let’s see (using the largest of the files):

library(stringi)
library(readr)
library(microbenchmark)

largest <- fils[which.max(sapply(fils, file.size))]

file.size(largest)
## [1] 1330

microbenchmark(
  base = readChar(largest, file.size(largest)),
  readr = read_file(largest),
  stringi = rawToChar(stri_read_raw(largest)),
  times = 1000,
  control = list(warmup = 100)
)
## Unit: microseconds
##     expr     min       lq      mean   median       uq     max neval
##     base  79.862  93.5040  98.02751  95.3840 105.0125 161.566  1000
##    readr 163.874 186.3145 190.49073 189.1825 192.1675 421.256  1000
##  stringi  52.113  60.9690  67.17392  64.4185  74.9895 249.427  1000

I had predicted that the {stringi} approach would be slower given that we have to explicitly turn the raw vector into a character vector, but it is modestly faster. ({readr} has quite a bit of functionality baked into it — for good reasons — which doesn’t help it win any performance contests).

I still felt there had to be an even faster method, especially since I knew that the files all had HTTP response headers and that they every one of them could each be easily read into a string in (pretty much) one file read operation. That knowledge will let us make a C++ function that cuts some corners (more like “sands” some corners, really). We’ll do that right in R via {Rcpp} in this function (annotated in C++ code comments):

library(Rcpp)

cppFunction(code = '
String cpp_read_file(std::string fil) {

  // our input stream
  std::ifstream in(fil, std::ios::in | std::ios::binary);

  if (in) { // we can work with the file

  #ifdef Win32
    struct _stati64 st; // gosh i hate windows
    _wstati64(fil.cstr(), &st) // this shld work but I did not test it
  #else
    struct stat st;
    stat(fil.c_str(), &st);
  #endif

    std::string out(st.st_size, 0); // make a string buffer to hold the data

    in.seekg(0, std::ios::beg); // ensure we are at the beginning
    in.read(&out[0], st.st_size); // read in the file
    in.close();

    return(out);

  } else {
    return(NA_STRING); // file missing or other errors returns NA
  }

}
', includes = c(
  "#include <fstream>",
  "#include <string>",
  "#include <sys/stat.h>"
))

Is that going to be faster?

microbenchmark(
  base = readChar(largest, file.size(largest)),
  readr = read_file(largest),
  stringi = rawToChar(stri_read_raw(largest)),
  rcpp = cpp_read_file(largest),
  times = 1000,
  control = list(warmup = 100)
)
## Unit: microseconds
##     expr     min       lq      mean   median       uq     max neval
##     base  80.500  91.6910  96.82752  94.3475 100.6945 295.025  1000
##    readr 161.679 175.6110 185.65644 186.7620 189.7930 399.850  1000
##  stringi  51.959  60.8115  66.24508  63.9250  71.0765 171.644  1000
##     rcpp  15.072  18.3485  21.20275  21.0930  22.6360  62.988  1000

It sure looks like it, but let’s put it to the test:

system.time(
  vapply(
    X = fils, 
    FUN = cpp_read_file, 
    FUN.VALUE = character(1), 
    USE.NAMES = FALSE
  ) -> tmp 
)
##  user  system elapsed 
## 0.446   1.244   1.693 

I’ll take a two-second wait over a five-second wait any day!

FIN

I have a few more cases coming up where there will be 3-5x the number of (similar) files that I’ll need to process, and this optimization will shave time off as I iterate through each analysis, so the trivial benefits here will pay off more down the road.

The next post in this particular series will show how to use the {future} family to reduce the time it takes to turn those HTTP headers into data we can use.

If I missed your favorite file slurping function, drop a note in the comments and I’ll update the post with new benchmarks.

08 Aug 21:47

Make the Beach Avenue Bikeway Permanent!

by Gordon Price

Let’s make the Beach Avenue Bikeway (connecting Stanley Park to False Creek North) permanent.

This incredibly popular and scenic route provides a safe, direct and flat connection between Hornby Street and Stanley Park for people of all ages and abilities, for recreation and commuting – all day, every day. It is a great use of limited open public space in one of Vancouver’s most popular and densely-populated neighbourhoods.

The Beach Avenue Bikeway will also relieve pressure on the very busy seawall route when bikes are allowed back on it post-COVID distancing measures.

Sign here if you agree and HUB Cycling will keep you updated on the future of this valuable cycling bikeway.

Drop by a HUB Cycling tent this Saturday, August 8 and Sunday, Aug 9 between 9 am and 3 pm on Beach Avenue at Broughton Street to sign your support.

08 Aug 21:47

How to do “comps” in a book proposal

by Josh Bernoff

Every book proposal includes “comps” — competing books. You need to show the potential publisher that you know what other books are out there and how you can differentiate your book from other similar books. Why you need comps There are three reasons to include comps in your proposal. Show you know your market and … Continued

The post How to do “comps” in a book proposal appeared first on without bullshit.

08 Aug 21:47

Hi Greg, It’s Your Conscience Speaking

by Greg Wilson

Hey Greg.

Hi, Conscience. We haven’t spoken in a while…

No worries. How’s work?

Busy busy busy. 75 people have certified as RStudio instructors so far this year, and our interns did some great stuff this summer.

Sounds like you’ve had your hands full.

Just trying to stay out of trouble. Did I mention that Teaching Tech Together is being translated into Spanish?

I don’t think so…

I’m not able to contribute, but it’s great to see, and I’ve been helping with LaTeX and other stuff. Oh, and we’re about to deliver the book on research software engineering—it should go to the publisher some time in the next few weeks.

Congratulations!

Thanks—Damien Irving, Kate Hertweck, Luke Johnston, Joel Ostblom, and Charlotte Wickham have all done great work, and it’s been a genuine pleasure to work with them. But it was still nice to get back to coding on TidyBlocks for a bit.

Maya’s intern project from last summer?

That’s the one. She and Justin Singh and I rebuilt it—simplified code generation, gave it a React UI, the whole works. People have started translating it, which I’m very grateful for, though we still need to figure out what blocks to add so that people can actually teach data science with it. I’m also trying to figure out if there’s a way to connect it to Glosario.

Uh, what?

An open source glossary of data science terms that can be used interactively and to help make lessons more findable. Ian Flores Siaca, François Michonneau, and Zhian Kamvar have made it an R package and are working on a Python version as well. It gave Ian something to do while we were waiting on ethics approval for the research study.

The—

—research study, yeah. He’s looking at how data scientists find errors in data analyses; Kelly Bodwin, Amelia McNamara, Allison Theobold, Philipp Buckhardt, and Rebecca Nugent are all helping out. Derek Robinson at the University of Victoria is going to replicate the study in Python, which should give us even more insight.

You have been busy.

Right? That’s why it’s taken so long to wrap up the papers on making research results more findable and how researchers can stay safe online. But at least the one on live coding is done: Lex Nederbragt did most of the heavy lifting on that one with me, Alison Hill, and Rayna Harris as the backup band.

You’re mixing your metaphors.

Sorry about that. Anyway, what’s up?

I was just going to ask how your new year’s resolution not to take on too many things was going, but it sounds like this isn’t the right time. I’ll check in again next year.

Wait—I forgot to mention the mentorship program!

08 Aug 21:46

The Best Soundbar

by Adrienne Maxwell and Brent Butterworth
Our pick for best soundbar overall, the Polk MagniFi Mini AX Atmos soundbar, next to its remote control and subwoofer.

The use of a soundbar is the easiest, most affordable way to get a cinematic surround-sound experience at home, and the Polk MagniFi Mini AX’s excellent sound and simple setup make it our favorite all-purpose choice—though we have additional picks that suit different budgets and performance priorities.

Dismiss
08 Aug 21:46

Visual explanation for how herd immunity works

by Nathan Yau

Herd immunity works when you have enough people who are immune to a disease, maybe because they already got it or there’s a vaccine, so that the disease can’t spread anymore to those who don’t have a resistance. For The Washington Post, Harry Stevens is back with simulitis to demonstrate how this works in greater detail.

It starts at the individual level, generalizes to a larger group, and then zooms out to the more concrete state level. It ends with an interactive that lets you test the thresholds yourself.

Each step builds on the previous, which provides clarity to an otherwise abstract idea.

Tags: coronavirus, Harry Stevens, immunity, simulation, Washington Post

08 Aug 21:45

Taking conferences online during the pandemic

Oliver Quinlan, Aug 07, 2020
Icon

There are tips in this post that you've probably seen before, but I'm including it here for one piece of advice that is new: "Run a staffed green room for presenters – it worked so well getting everyone prepared and ready to transition smoothly between presentations." Now as a presenter I typically log on early, but usually I'm on my own while the organizer does things like organize the session. Having a dedicated green room person helps me get comfortable with the setup. It seems to me that it would also give panelists a chance to interact for a few moments before the session, which can be a bad thing.

Web: [Direct Link] [This Post]
08 Aug 21:45

The stock market is going down

by kchodorow

Not the stocks, mind you, but the market itself. There are less than 4,000 companies listed, and new companies have less and less appetite for going public. Conversely, there are over 8,000 private-equity-backed companies in the US, and growing.

There are a couple of problems with the stock market mouldering. One is that this is where most of America keeps their retirement. Common wisdom is that if you invest in a nice index fund, then your money should grow apace to the US economy. This works until the economy grows without the market.

Suppose the public market continues to dwindle. New companies stay private, so the companies on the market get older and older. Old companies have a tendency to grow more slowly and, eventually, go out-of-business. Without new blood, I’d guess the market would ossify around a few large surviving stocks.

Without the possibility of explosive growth in the public markets, any money that could go into private equity would (and is). Unfortunately, at the moment, private equity is only open to accredited investors (i.e., the already well-off) so most of America won’t be able to participate at all.

It’s important that everyone in the US:

  1. Has the opportunity to benefit from economic growth and
  2. Able to participate in a way where they won’t get fleeced.

As I understand it, the SEC doesn’t allow the middle nor lower class to invest in private companies because they don’t want people who are barely making ends meet to be hoodwinked out of all of their money.

Why is investing private equity riskier than public companies? Small companies tend to be riskier, but there are plenty of private companies that are larger than public ones. If I understand correctly, most of it is related public companies being better-regulated than private ones.

My knee-jerk reaction is, then: how can we get more companies to go public? And maybe that’s a good goal. However, why are we in the pocket of big-market here?

The goal is to allow more people to benefit from private companies, not bail out banks/NYSE/NASDAQ. So one possible solution is making the private market more liquid while adding protections for investors.

Making the private markets more liquid is easy: just let anyone buy and sell shares without being accredited and without needing the company’s approval.

However, given that something like 50% of VC firms don’t even return the capital they invest and (almost) everyone there is doing this professionally and on the up-and-up, making sure people aren’t fleeced seems more difficult. My strawman proposal is to tighten up regulations on private companies based on top-of-line revenue. Making $1M/year? Great, you need some sort of S-1-like prospectus for investors. Making $10M/year? Great, you can’t just spout off about “funding secured” on Twitter. Making $50M/year? Great, you basically have to follow all of the rules public companies do. I dunno, it’s a first draft. But I think it’s important the SEC gets on making private equity more accessible before the middle and lower classes are left in the dust.

08 Aug 21:45

Did this go straight into the garbage after the...

by illustratedvancouver

Did this go straight into the garbage after the last election? It should have gone into a museum…or someone’s attic, at the very least. Photo from Surrey Central, circa 2 years ago, 2018.

08 Aug 21:45

We Have New Fridge

by peter@rukavina.net (Peter Rukavina)

The Refrigocalypse is over: Birt’s Furniture delivered our new Whirlpool fridge this morning just after 9:00 a.m., 3 days earlier than planned after I made a call earlier in the week when things went sideways with the old fridge.

Photo of our new Whirlpool fridge

The new fridge is, in design essence, almost a clone of the old fridge; I’ve always been under the impression that there is a single global maker of refrigerators, throwing different brand plates on at random, and this only serves to reinforce that assumption.

A couple of notes on the purchase and delivery process, should you be in the market and considering Birt’s:

  • To take the old fridge away was an additional $20 fee. That seems fair, given how complicated it would be to do it myself.
  • To get the fridge into the house, the delivery people needed to use the back door, and needed to remove the door itself, and break down the fridge, to get it to fit into the house. In other words, this is the largest possible box that can fit into our house.
  • Our kitchen and hallway floor got scratched in a couple of places by the removal of the old fridge; nothing too serious, but a little annoying.
  • I had to reverse the door, so that it opened on the right, myself. I knew this going in: my Birt’s salesperson told me “this isn’t something we do.” It wasn’t that difficult, but it did need some tools that not everyone would have: star-shaped screwdrivers in a couple of sizes, for example. This seems like something an appliance store should offer as a service, even if it’s an upset.
  • The manual for the fridge is horrible: filled with poor descriptions and hard-to-follow graphics. If I was looking for work, I’d offer myself out as a refrigerator manual designer, as there’s obviously a lot of room for improvement here.
  • The delivery people were friendly and helpful, and nothing at all like the notoriously gruff and complaining crew we used to get every time we had something delivered from Sears.

This was the first major appliance I’ve purchased all by myself: from our first appliances in our Kingston Road house back in 1995 onward, Catherine and I were always an appliance-shopping team, and we were generally a compatible one (although we had a longstanding disagreement about the role of standalone freezers that was never resolved). I managed to figure this purchase all out on my own, and I’m happy with the result. But also a little sad about yet another now-solo milestone checked off the list.

08 Aug 21:43

Is Consciousness a Mental Illness?

by Dave Pollard

Perhaps my most annoying exploration of radical non-duality yet. Thanks to Richard for the lovely graphic.

As I think more about the message of radical non-duality, I’ve started musing about the nature of consciousness.

We humans of course think of consciousness as a good thing, as an evolutionary advantage, and possibly something that separates our species, in degree if not in absolute terms, from all other species.

But radical non-duality would posit, I think, that it isn’t any of these things, and that consciousness might instead be a tragic form of mental illness that became possible when

(1) our brains got large and complex enough to be able to contemplate the idea of us being self-controlled individuals separate from everything else, and then

(2) that illusory sense of humans being ‘separate’ was reinforced, traumatically, through interactions with other afflicted humans (well-intentioned of course), until, over a lifetime, we came to see this disease as normal and necessary to our capacity to function.

Many religious and spiritual teachings suggest that we should actually aspire to a higher “level of consciousness”, as if more of this disease were a cure for its symptoms.

One of the hardest things for most people to accept is that we would be (and are) completely functional creatures without the need for consciousness. We are inclined to ascribe a rudimentary level of consciousness to all living creatures, even aphids and silverfish, because we cannot fathom that any creature would be able to survive without it.

But the laws of evolution do not require consciousness at all. Aphids and silverfish have survived because they were conditioned (genetically and experientially) to fight or flee or freeze in the presence of predators; insects that were poorly conditioned, over the hundreds of millions of years they have been evolving, dropped out of the gene pool, and those with successful conditioning survived. They do not need the capacity to conceive of themselves as separate and of having ‘selves’ to do so. They probably don’t have the brain capacity in any case, and if they did it would arguably slow down rather than improve their survival reflexes.

Why should our species be any different? We’re genetically indistinguishable from our closest animal relatives, and all species of life have been evolutionarily equipped with the tools needed to survive in their particular ecological niches as long as they fit in with and contribute to the ecological health of all life in those niches. We are as utterly conditioned by our genes and cultural experiences as aphids and silverfish. Any creature that doesn’t fit, in the evolutionary sense of fitting in with the rest of the ecosystem, goes extinct.

Except, that is, in the case of rogue species, like humans and cancers, that somehow lose their connectedness to all the rest of life in their ecosystems and pursue their ‘own’ survival at the cost of all others’, and wreak ecological havoc as a result. They of course die along with the hosts that enabled them to live — the body or planet which they have so unbalanced as to cause its life’s extinction.

Our study of cancers suggests they are ‘coding’ errors — random variations that evolution is continually experimenting with in search of even greater fitness and complexity of life. These variations usually amount to nothing and are evolutionary dead ends, but they occasionally lead to great improvements in adaptability, and they occasionally produce rogue species grotesquely unfit for their environments. That very unfitness ensures that their reckless tenure in their particular ecosystems is short-lived. Our species has been around an astonishingly short time in evolutionary terms, and our extinction or near-extinction within this century is already, according to a growing number of scientists, a virtual certainty. Our sense of consciousness hasn’t helped at all.

Or consider viruses: These days we’re understandably curious about what possible roles viruses might play in our planet’s evolution. Viruses are of course messengers, transmitting information between species. But significantly, they are also population regulators, especially of bacterial and insect populations. Without the critical role of viruses (of which an infinitesimally small number are human pathogens BTW), imbalances in bacterial and insect populations would disastrously alter our biosphere and atmosphere in a matter of days, dramatically changing (and radically simplifying) life on the planet.

Even if we were to argue that aphids and silverfish are slightly “conscious”, we could not make the same argument of viruses, which are arguably not even ‘alive’. The incredible evolutionary role of viruses, and their importance to the web of life, should suffice to convince us that “consciousness” is completely inessential to evolutionary success.

I’ve explained elsewhere how and why the sense of consciousness may have evolved, at least in our species, even though (perhaps like our appendix and our separate toes) it wasn’t and isn’t necessary to our ability to function and thrive perfectly well. Nature evolves things because it can, and because random evolutionary variations sometimes prove advantageous. But they don’t necessarily disappear even when they aren’t advantageous, unless some other need for the space or capacity crowds it out.

If consciousness is indeed a mental illness, a mistaking a mental model for reality, it could probably only have been sustained in the human species through the invention and use of abstract language. The concepts of a separate self, and of commensurate free will, responsibility, and ‘personal’ danger, would be unlikely, I’d guess, to take hold in a non-literate society. I would argue that our survival almost certainly does not require such a sense.

Abstract language might have emerged initially as a coping mechanism — as a means of sharing our grief over, and commiserating about, the terrible anxiety (and sense of something important missing) that arose when we became afflicted with this delusion of separateness. And abstract language has reinforced that delusion ever since.

So if consciousness, and all the guilt, shame, fear, anxiety, anger, grief and suffering that comes along with it, is a mental illness, might there be a way to ‘cure’ it? Or are our big, under-utilized brains just inevitably going to contract this illness because of their enormous capacity to imagine?

Michael Pollan and others have suggested that psilocybin and some other hallucinogenic substances might at least temporarily alleviate, and might permanently ‘cure’, the symptoms of this mental illness, by disrupting the neural pathways that correspond to ideas about the self, separation and (self-)consciousness. Successes are, however, anecdotal, and the cultural taboos against these substances are likely to impair any definitive answer as to their efficacy.

Those disseminating the radical non-duality message are a bit non-plussed when I suggest this theory to them. When there is no self, no sense of separation, and no sense that anything is or ever was ‘conscious’, the idea of being able to ‘cure’ something non-existent just doesn’t make sense.

After all, if there is no ‘you’, how can ‘you’ be afflicted by, or cured of, anything? If there is no life or death, no time or space, nothing ‘known’, nothing separate, how can there be any disease, any misunderstanding, or anything ‘conscious’ of anything ‘else’? The idea that the brain invented the idea of the separate self, and hence everything else apart from it, can only be a fiction, since there is no (real, separate) brain or body and no time or space in which anything can be invented.

What is left is a massive cognitive dissonance: On the one hand it is somehow reassuring, even exciting, that this staggeringly radical idea not only makes intuitive sense, it makes scientific sense, makes evolutionary sense. It is comforting, somehow, that there is a possible reason for all this senseless and completely invented suffering — that we can create a model that seems to explain the ghastly, frustrating loneliness, helplessness and unhappiness of being conscious.

But on the other hand, the lesson of radical non-duality is that there is no reason or purpose for anything, no evolution or time over which anything evolves, and no one and no thing to evolve. The science is just pattern-making, just a part of the fiction, just more make-believe. It’s a nice story, until we realize it’s just a story.

So the answer to the question: Is consciousness a mental illness that might be cured or at least treated, is, sadly, moot. There is no consciousness, no one conscious. One might be able to make a quite compelling scientific case for why that is so, and for why humans seem afflicted by a complete illusion that arose in our too-smart-for-our-own-good brains. But ultimately it will be an unsatisfactory one. It’s built on the same false premises that all of science is built on, and hence it’s just a tale “signifying nothing”, no more or less credible or relevant to anything than the QAnon stories of alien lizard people ruling the world.

There is, sadly, no cure for this unreal disease.

But my conditioning won’t allow me to cease making up stories, each hopefully slightly more credible than the last, that explain what cannot be explained or known, that make at least a bit of sense in a world that makes no sense, and has no need to. This is already everything, and its denial is already over. The news just hasn’t sunk in, and, since it’s veiled and unimaginable to us absurdly conscious humans, it never will sink in.

Outside of our seemingly dis-eased human minds and bodies, it’s always been obvious.

08 Aug 21:43

Pysa: An open source static analysis tool to detect and prevent security issues in Python code

Pysa: An open source static analysis tool to detect and prevent security issues in Python code

Interesting new static analysis tool for auditing Python for security vulnerabilities - things like SQL injection and os.execute() calls. Built by Facebook and tested extensively on Instagram, a multi-million line Django application.

Via Hacker News

08 Aug 21:42

Passwords

(update 31 Aug 2020: add Prop 24 info and Adweek Magic Link)

Things that people are bad at:

  • remembering strong passwords

  • choosing and using different passwords on different sites

Things that most sites depend on for their security

  • (see above)

Things that will cost you $750 each if you mess up on managing them:

So avoiding passwords is going to be more and more of a thing. Here's a list of ways to avoid doing passwords (or make the password optional)

  • Email login link. You type in your email address and it sends you a link to log in. Red Hat Mugshot did this, a while ago. Today. it's implemented nicely at Adweek, where they call it "Magic Link".

  • ssh to log in. You give the site your ssh public key when you make your account, then to start a session you ssh to a service that gives you a URL containing a session key. $BROWSER $(ssh login.example.org)

  • Log in with G.A.F.A.

  • QR code. If you are already logged in on one device and want to log in from another one, scan a QR code with s33krit crypto stuff in it, like Keybase.

Any more?

08 Aug 21:42

Pedal to Empower – WBR Launches Global Bike Ride to Empower Women and Girls

by Maggie

Read all about Pedal to Empower! International NGO World Bicycle Relief (WBR) just launched a new global DIY ride to bring together riders of all places, levels, and backgrounds to achieve one common goal: to empower women and girls across the globe. Proceeds will benefit WBR programs that tackle gender inequality by helping girls and women better access education and healthcare with the humble bicycle. Check it out and enter now!

The post Pedal to Empower – WBR Launches Global Bike Ride to Empower Women and Girls appeared first on Average Joe Cyclist.

08 Aug 21:42

Twitter Favorites: [torontolibrary] New Stage 3 service! In addition to scheduling your holds pick-up, beginning Monday, you can drop in during open br… https://t.co/mKSkKG4Zl2

Toronto Public Library @torontolibrary
New Stage 3 service! In addition to scheduling your holds pick-up, beginning Monday, you can drop in during open br… twitter.com/i/web/status/1…
08 Aug 21:42

Twitter Favorites: [dustinrgodfrey] Soooo, who's up for a 2,000-word feature on five-pin bowling? https://t.co/p4ZdjlnKx0

dustopian godfrey @dustinrgodfrey
Soooo, who's up for a 2,000-word feature on five-pin bowling? pic.twitter.com/p4ZdjlnKx0
08 Aug 21:42

These Weeks in Firefox: Issue 77

by Mike Conley

Highlights

  • Firefox for Android updates:
  • We’re working on moving the print / print preview to be a tab modal dialog
    • Meta bug
    • Mock-ups
    • Targeting 81, hoping to turn it on in Nightly as an experiment or entirely within a week
    • Currently we have some print settings which are mostly functional bug with some bugs we need to work out. Modal and preview coming soon
    • Enable by setting print.tab_modal.enabled to true
  • dthayer has moved Nightly to Stage 3 of FastShutdown
    • A graph that shows changes in shutdown times for Nightly. The Y-axis is total shutdown time. The X-axis is Nightly build date. Around July 5th, a sustained drop in shutdown times is present.

      Shutdown is getting faster!

  • emalysz has made more panels lazy
    • A graph that shows changes in window opening times for Nightly as measured by one of our internal benchmarks. The Y-axis is total window opening time. The X-axis is Nightly build date. There is a downward trend in window opening times as time progresses forward.

      Window opening is getting faster, too!

Friends of the Firefox team

Resolved bugs (excluding employees)

Fixed more than one bug

  • Farooq AR
  • Itiel

New contributors (🌟 = first patch)

Project Updates

Add-ons / Web Extensions

Addon Manager & about:addons
WebExtensions Framework
  • Fixed an issue that was preventing Firefox from fully unregister extensions that did fail early during their startup (Bug 1651844)
WebExtension APIs
  • dw-dev contributed a fix to the downloads API to ensure that the ‘Save As’ dialog will use a file filter derived from the filename set by the extension in the download API call (Bug 1651175). Thanks to dw-dev for contributing this nice enhancement!
  • Fixed a regression on the downloads API when used in private browsing mode on an extension-created blob url (originally introduced in Firefox 79 by Bug 1579911), the fix has been uplifted to Firefox 79 (Bug 1649463)

Fission

Lint

Password Manager

Performance

Performance Tools

  • Changed the profiler UI to use sample counts, and added explicit support for traced profiles.
    • A comparison between the old state and new state of the Call Tree panel in the profiler. The left side shows running time in millseconds for each frame. The right side shows those columns replaced by total sample counts for each frame instead.

      This is a much more accurate representation, since the sampling interval is not guaranteed to run consistently – especially for machines under load.

  • Renamed IPC message tooltip labels to be more descriptive.
    IPC Speed -> IPC Send Duration
    IPC Latency -> IPC Recv Latency
  • Started to use the appropriate time unit in the marker chart.
    • A comparison between the old state and new state of the Marker Chart panel in the profiler. The left side shows markers for the RefreshDriverTick with time measurements of 0.026ms. The right side shows the same markers, but shows the measurement as 25.9μs

      For really short intervals, using μs (microseconds) rather than ms (milliseconds) makes a lot of sense.

Picture-in-Picture

  • Recently landed patches to experiment with new toggle variations and placement
  • Glitch prototype
  • Toggle experiment preferences:
    • media.videocontrols.picture-in-picture.video-toggle.mode
      • Default = -1
      • Mode 1 = 1
      • Mode 2 = 2
    • media.videocontrols.picture-in-picture.video-toggle.position
      • “right” = right side (default)
      • “left” = left side
    • media.videocontrols.picture-in-picture.video-toggle.has-used (only affects Mode 2)
      • true – the user has used Picture-in-Picture before in 80+
      • false (default) – the user has not used Picture-in-Picture before in 80+

Search and Navigation

Search

Address Bar

  • Tail search suggestions have been enabled for release in Firefox 80 – Bug 1653085
  • Resolved a bug causing some characters to be dropped when typing fast – Bug 1653436
  • Resolved a bug where autofill may not happen for some bookmarked origins – Bug 1654316
  • The work on design update2 started, but it’s not yet ready for Nightly testing. You can check the proposed non-definitive designs: one-off-shortcuts, tab-to-search

User Journey

WebRTC UI

  • Holding the new WebRTC global sharing indicator to Nightly for now while we sort out default placement.
  • We’re going to ship it on in an experiment in Firefox 80 on release to get a sense of how it’s being used in the wild
08 Aug 21:42

Herd immunity for privacy

by Doug Belshaw

Self-hosting is the holy grail for privacy advocates. And I don’t mean having a VPS hosted for you somewhere; I mean having your server physically located on your own premises.

Messaging, including email, is particularly important when it comes to privacy. Now, there are three reasons I choose not to run my own email server:

  1. I have no desire to be a sysadmin, and these things can be fiddly to set up and subject to downtime.
  2. Due to the preponderance of spam, the big players have developed procedures and policies making it difficult for self-hosters to get their emails delivered.
  3. If my focus is privacy, well almost everyone else I will contact uses Google, Microsoft or Apple, meaning Big Tech will get my data anyway.

The third point is an important one to dwell upon, and is the reason why I continue to argue for privacy even in the midst of a pandemic. I can take all the defensive actions I like, but if my family and friends don’t change their practices, then I’m going to get diminishing returns.

In addition to the email example above, consider the following scenarios:

  • Images — you have to be part of a social network to stop people being able to tag you, which is a bit of a dilemma if someone tags me in a photograph on Facebook or Instagram (where I don’t have an account)
  • Location — when I travel, I’m often with family or friends so if they’re sharing their location, my location is also being shared.
  • Tracking — when using shared computers it’s not difficult for Big Tech to associate accounts coming from the same residential IP address to make inferences .

This all might sound a bit tinfoil hat, but privacy is the reason we have curtains on our windows and why we don’t tell everyone what we’re doing all of the time.

I realise that we can’t turn the clock back, and goodness know privacy advocates have made some missteps along the way. But now we live in a world where both governments and Big Tech have a vested interest in the general public lacking what I’d call ‘herd immunity for privacy’.

So although it seems like somewhat of a futile task at times, I’ll continue to pragmatically protect my own privacy, and encourage those around me to do likewise.


This post is Day 26 of my #100DaysToOffload challenge. Want to get involved? Find out more at 100daystooffload.com

08 Aug 21:40

Git check script

This is how I check that I didn't leave something uncommited or unpushed at home before going to work. Find all the Git repositories, run a status in each one. Surprisingly useful.

/code/gitcheck

Bonus links

PUNCTURING THE PARADOX: GROUP COHESION AND THE GENERATIONAL MYTH

$2 Billion: US Should Make TikTok Sale Contingent on Paying Songwriters

08 Aug 21:40

Subscribe by email

by russell davies

One (1) person has asked me if it's possible to receive the feed from the blog as an email. So, Dan. this post's for you.

I can't get the RSS to actually feed into substack, so I'm going to have to do this manually until I can work that out. I guess I won't put this post in the email, that'd be a bit recursive.

I will work out how to make this not a post, too, because it's going to disappear isn't it. I'll make it 'a page' if I can remember how to do that.

08 Aug 21:40

A rant about 5G myths - chasing unicorns​

by Dean Bubley

Exasperated rant & myth-busting time.

I actually got asked by a non-tech journalist recently "will 5G change our lives?"

Quick answer: No. Emphatically No.


#5G is Just Another G. It's not a unicorn

Yes, 5G is an important upgrade. But it's also *massively* overhyped by the mobile industry, by technology vendors, by some in government, and by many business and technology journalists.

- There is no "race to 5G". That's meaningless geopolitical waffle. Network operators are commercial organisations and will deploy networks when they see a viable market, or get cajoled into it by the terms & timing of spectrum licenses.

- Current 5G is like 4G, but faster & with extra capacity. Useful, but not world-changing.

- Future 5G will mean better industrial systems and certain other cool (but niche) use-cases.

- Most 5G networks will be very patchy, without ubiquitous coverage, except for very rudimentary performance. That means 5G-only applications will be rare - developers will have to assume 4G fallback (& WiFi) are common, and that dead-spots still exist.

- Lots of things get called 5G, but actually aren't 5G. It's become a sort of meaningless buzzword for "cool new wireless stuff", often by people who couldn't describe the difference between 5G, 4G or a pigeon carrying a message.

- Anyone who talks about 5G being essential for autonomous cars or remote surgery is clueless. 5G might get used in connected vehicles (self-driving or otherwise) if it's available and cheap, but it won't be essential - not least as it won't work everywhere (see above).

- Yes, there will be a bit more fixed wireless FWA broadband with 5G. But no, it's not replacing fibre or cable for normal users, especially in competitive urban markets. It'll help take FWA from 5% to 10-12% of global home broadband lines.

- The fact the 5G core is "a cloud-native service based architecture" doesn't make it world-changing. It's like raving about a software-defined heating element for your toaster. Fantastic for internal flexibility. But we expect that of anything new, really. It doesn't magically turn a mobile network into a "platform". Nor does it mean it's not Just Another G.

- No, enterprises are not going to "buy a network slice". The amount of #SliceWash I'm hearing is astonishing. It's a way to create some rudimentary virtualised sub-networks in 5G, but it's not a magic configurator for 100s or 1000s of fine-grained, dynamically-adjusted different permutations all coexisting in harmony. The delusional vision is very far removed from the mundane reality.

- The more interesting stuff in 5G happens in Phase 2/3, when 3GPP Release 16 & then Release 17 are complete, commercialised & common. R16 has just been finalised. From 2023-4 onward we should expect some more massmarket cool stuff, especially for industrial use. Assuming the economy recovers by then, that is.

- Ultra-reliable low-latency communications (URLLC) sounds great, but it's unclear there's a business case except at very localised levels, mostly for private networks. Actually, UR and LL are two separate things anyway. MNOs aren't going to be able sell reliability unless they also take legal *liability* if things go wrong. If the robot's network goes down and it injures a worker, is the telco CEO going to take the rap in court?

- Getting high-performance 5G working indoors will be very hard, need dedicated systems, and will take lots of time, money and trained engineers. It'll be a decade or longer before it's very common in public buildings - especially if it has to support mmWave and URLLC. Most things like AR/VR will just use Wi-Fi. Enterprises may deploy 5G in factories or airport hangars or mines - but will engineer it very carefully, examine the ROI - and possibly work with a specialist provider rather than a telco.

- #mmWave 5G is even more overhyped than most aspects. Yes, there's tons of spectrum and in certain circumstances it'll have huge speed and capacity. But it's go short range and needs line-of-sight. Outdoor-to-indoor coverage will be near zero. Having your back to a cell-site won't help. It will struggle to go through double-glazed windows, the shell of a car or train, and maybe even your bag or pocket. Extenders & repeaters will help, but it's going to be exceptionally patchy (and need tons of fibre everywhere for backhaul).

- 5G + #edgecomputing is a not going to be a big deal. If low-latency connections were that important, we'd have had localised *fixed* edge computing a decade ago, as most important enterprise sites connect with fibre. There's almost no FEC, so MEC seems implausible except for niches. And even there, not much will happen until there's edge federation & interconnect in place. Also, most smartphone-type devices will connect to someone else's WiFi between 50-80% of the time, and may have a VPN which means the network "egress" is a long way from the obvious geographically-proximal edge.

- Yes, enterprise is more important in 5G. But only for certain uses. A lot can be done with 4G. "Verticals" is a meaningless term; think about applications.

- No, it won't displace Wi-Fi. Obviously. I've been through this multiple times.

- No, all laptops won't have 5G. (As with 3G and 4G. Same arguments).

- No, 5G won't singlehandedly contribute $trillions to GDP. It's a less-important innovation area than many other things, such as AI, biotech, cloud, solar and probably quantum computing and nuclear fusion. So unless you think all of those will generate 10's or 100's of $trillions, you've got the zeros wrong.

- No, 5G won't fry your brain, or kill birds, or give you a virus. Conspiracy theorists are as bad as the hypesters. 5G is neither Devil nor Deity. It's just an important, but ultimately rather boring, upgrade.

There's probably a ton more 5G fallacies I've forgotten, and I might edit this with a few extra ones if they occur to me. Feel free to post comments here, although the majority of debate is on my LinkedIn version of this post (here). This is also the inaugural post for a new LinkedIn newsletter, Most of my stuff is not quite this snarky, but it depends on my mood. I'm @disruptivedean on Twitter so follow me there too.

If you like my work, and either need a (more sober) business advisory session or workshop, let me know. I'm also a frequent speaker, panellist and moderator for real and virtual events.

Just remember: #5GJAG. Just Another G.

08 Aug 21:40

Twitter Favorites: [cbcnewsbc] People have been meeting at Peace Arch Park since the closure of the Canada-U.S. border in March. One park range… https://t.co/y3Q9FXoQjD

CBC British Columbia @cbcnewsbc
People have been meeting at Peace Arch Park since the closure of the Canada-U.S. border in March. One park range… twitter.com/i/web/status/1…
08 Aug 21:40

Fritzbox Monitoring with Grafana

by Martin

Image: Fritzbox 7 days traffic graphs and statistics

One thing I wanted to have for a long time was a better visibility of how my DSL line at home is utilized over time. My Fritzbox router has some basic functions for this such as showing the uplink and downlink utilization of the past few minutes and a daily, weekly and monthly traffic counter. That’s a start but the amount of information is limited and so are the conclusions that can be drawn from it.

Beyond these features, however, the Fritzbox has a number of counters that are updated every few seconds which can be queried over the network. Sounds promising! Together with the Grafana visualization suite that I also wanted to have a closer look at for quite some time now, it made for an interesting project. So I started searching a bit and found out that a number of other people have been at this point before as well and have put together a complete data collection and visualization front-end for the information provided by the Fritzbox. Perfect, exactly what I was looking for!

The Setup

The article linked to above is in German and those who speak the language will find step-by-step instructions of how to set up a system that collects and stores the data provided by the Fritzbox in an InfluxDB database and Grafana to visualize the data. Instead of a Raspberry Pi as per the instructions above, I installed the system in a virtual machine that runs on my VM host at home. The screenshot above shows the counters provided by the setup and I extended the visualization with an extra graph at the bottom left that caps the x-axis at 10 Mbit/s instead of the full 100 Mbit/s line rate to better see ‘low bitrate’ data streams. As all counters are stored in a database it is possible to go back to arbitrary times in the past and have a closer look at how the line was used. This gives very interesting insights from a network traffic point of view, like the one I talked about in a previous post. More insights to come in number of future posts.

How Data Flows From the Fritzbox to Grafana

Image: Fritzbox to Grafana data flow

I’m glad that I didn’t have to put this monitoring system together on my own as it involves quite a number of components as shown in the data flow graph above:

  • The Fritz box on the left side is queried every few seconds by a Fritzbox specific plugin of ‘Collectd’, a generic server daemon that periodically queries data on other systems.
  • Collectd forwards the data it receives from the Fritzbox to an InfluxDB database.
  • The Grafana visualization system in turn connects to the Influx database to get its raw data for visualization when I point my web browser to the visualization page.

Note: The numbers in the data flow graph above are the TCP ports used by the different components. In my case, all components are on the same virtual machine, but since they communicate over TCP, they could also be distributed.

A First Analysis Based on The Screenshot Above

The screenshot at the beginning of the graph shows the data traffic over my DSL line over the course of a week. As we had a guest that week who streamed a lot of video, the line was quite busy and around 50 GB of data were transmitted every day which accumulated to well over a quarter of a terabyte of data that week. When seven days are shown in the graph, one only sees general trends. But it is possible to zoom into any time frame since I started recording and as data is collected every 10 seconds this delivers a wealth of other interesting insights. To be continued, so stay tuned.

08 Aug 21:39

Canadian EV charging rates rising after COVID-related declines

by Jonathan Lamont

Electric vehicle (EV) charging is reportedly returning to pre-COVID levels, according to new data from charging network operators.

As reported by Electric Autonomy, EV charging activity is on the rise and even approaching pre-COVID levels in some areas. In B.C., for example, ‘BC Hydro’ reports June saw nearly 20,000 charging sessions across its 70-station fast-charging network. That comes in just short of the over 21,000 sessions logged in February before COVID-related lockdowns came into place.

Electric Autonomy notes that the stay-at-home orders in mid-March led to a 20 percent drop in the number of public charges that month, followed by a 30 percent drop in April. However, June’s figures represent a 50 percent increase from the lowest point of use in April.

Additionally, the publication notes that most of BC Hydro’s stations are within 300 metres of a major road or highway. The increase could mean long-distance commutes have started up again as workplaces reopen.

BC Hydro wasn’t the only charging network to see increased use. Daniel Nguyen, senior director of marketing at FLO, told Electric Autonomy that the FLO network saw an uptick in charging sessions across the country. After a 48 percent drop in charging usage earlier this year, FLO saw usage in July down just 15 percent compared to the same time last year.

FLO says it saw charging sessions increase by 75 percent between April and July 2020, but July was still 34 percent lower than February.

Source: Electric Autonomy

The post Canadian EV charging rates rising after COVID-related declines appeared first on MobileSyrup.

08 Aug 21:39

Quick Hit: Speeding Up Data Frame Creation

by hrbrmstr

(This is part 2 of n “quick hit” posts, each walking through some approaches to speeding up components of an iterative operation. Go here for part 1).

Thanks to the aforementioned previous post, we now have a super fast way of reading individual text files containing HTTP headers from HEAD requests into a character vector:

library(Rcpp)

vapply(
  X = fils, 
  FUN = cpp_read_file, # see previous post for the source for this C++ Rcpp function
  FUN.VALUE = character(1), 
  USE.NAMES = FALSE
) -> hdrs

head(hdrs, 2)
## [1] "HTTP/1.1 200 OK\r\nDate: Mon, 08 Jun 2020 14:40:45 GMT\r\nServer: Apache\r\nLast-Modified: Sun, 26 Apr 2020 00:06:47 GMT\r\nETag: \"ace-ec1a0-5a4265fd413c0\"\r\nAccept-Ranges: bytes\r\nContent-Length: 967072\r\nX-Frame-Options: SAMEORIGIN\r\nContent-Type: application/x-msdownload\r\n\r\n"                                   
## [2] "HTTP/1.1 200 OK\r\nDate: Mon, 08 Jun 2020 14:43:46 GMT\r\nServer: Apache\r\nLast-Modified: Wed, 05 Jun 2019 03:52:22 GMT\r\nETag: \"423-d99a0-58a8b864f8980\"\r\nAccept-Ranges: bytes\r\nContent-Length: 891296\r\nX-XSS-Protection: 1; mode=block\r\nX-Frame-Options: SAMEORIGIN\r\nContent-Type: application/x-msdownload\r\n\r\n"

However, I need the headers and values broken out so I can eventually get to the analysis I need to do, and a data frame of name/value columns would be the most helpful format. We’ll use {stringi} to help us build a function (explanation of what it’s doing is in comment annotations) that turns each unkempt string into a very kempt data frame:

library(stringi)

parse_headers <- function(x) {

  # split lines from into a character vector
  split_hdrs <- stri_split_lines(x, omit_empty = TRUE)

  lapply(split_hdrs, function(lines) {

    # we don't care about the HTTP x/x ...
    lines <- lines[-1]

    # make a matrix out of found NAME: VALUE
    hdrs <- stri_match_first_regex(lines, "^([^:]*):\\s*(.*)$")

    if (nrow(hdrs) > 0) { # if we have any
      data.frame(
        name = stri_replace_all_fixed(stri_trans_tolower(hdrs[,2]), "-", "_"),
        value = hdrs[,3]
      )
    } else { # if we don't have any
      NULL
    }

  })

}

parse_headers(hdrs[1:3])
## [[1]]
##              name                         value
## 1            date Mon, 08 Jun 2020 14:40:45 GMT
## 2          server                        Apache
## 3   last_modified Sun, 26 Apr 2020 00:06:47 GMT
## 4            etag     "ace-ec1a0-5a4265fd413c0"
## 5   accept_ranges                         bytes
## 6  content_length                        967072
## 7 x_frame_options                    SAMEORIGIN
## 8    content_type      application/x-msdownload
## 
## [[2]]
##               name                         value
## 1             date Mon, 08 Jun 2020 14:43:46 GMT
## 2           server                        Apache
## 3    last_modified Wed, 05 Jun 2019 03:52:22 GMT
## 4             etag     "423-d99a0-58a8b864f8980"
## 5    accept_ranges                         bytes
## 6   content_length                        891296
## 7 x_xss_protection                 1; mode=block
## 8  x_frame_options                    SAMEORIGIN
## 9     content_type      application/x-msdownload
## 
## [[3]]
##           name                         value
## 1         date Mon, 08 Jun 2020 14:23:53 GMT
## 2       server                        Apache
## 3 content_type text/html; charset=iso-8859-1

parse_header(hdrs[1])
##              name                         value
## 1            date Mon, 08 Jun 2020 14:40:45 GMT
## 2          server                        Apache
## 3   last_modified Sun, 26 Apr 2020 00:06:47 GMT
## 4            etag     "ace-ec1a0-5a4265fd413c0"
## 5   accept_ranges                         bytes
## 6  content_length                        967072
## 7 x_frame_options                    SAMEORIGIN
## 8    content_type      application/x-msdownload

Unfortunately, this takes almost 16 painful seconds to crunch through the ~75K text entries:

system.time(tmp <- parse_headers(hdrs))
##   user  system elapsed 
## 15.033   0.097  15.227 

as each call can be near 150 microseconds:

microbenchmark(
  ph = parse_headers(hdrs[1]),
  times = 1000,
  control = list(warmup = 100)
)
## Unit: microseconds
##  expr     min       lq     mean  median      uq     max neval
##    ph 143.328 146.8995 154.8609 148.361 158.121 415.332  1000

A big reason it takes so long is the data frame creation. If you’ve never looked at the source for data.frame() have a go at it — https://github.com/wch/r-source/blob/86532f5aa3d9880f4c1c9e74a417005616846a34/src/library/base/R/dataframe.R#L435-L603 — before continuing.

Back? Great! The {base} data.frame() has tons of guard rails to make sure you’re getting what you think you asked for across a myriad of use cases. I learned about a trick to make data frame creation faster when I started playing with {ggplot2} source. Said trick has virtually no guard rails — it just adds a class, and row.names attribute to a list — so you really should only use it in cases like this where you have a very good idea of the structure and values of the data frame you’re making. Here’s an even more simplified version of the function in the {ggplot2} source:

fast_frame <- function(x = list()) {

  lengths <- vapply(x, length, integer(1))
  n <- if (length(x) == 0 || min(lengths) == 0) 0 else max(lengths)
  class(x) <- "data.frame"
  attr(x, "row.names") <- .set_row_names(n) # help(.set_row_names) for info

  x

}

Now, we’ll change parse_headers() a bit to use that function instead of data.frame():

parse_headers <- function(x) {

  # split lines from into a character vector
  split_hdrs <- stri_split_lines(x, omit_empty = TRUE)

  lapply(split_hdrs, function(lines) {

    # we don't care about the HTTP x/x ...
    lines <- lines[-1]

    # make a matrix out of found NAME: VALUE
    hdrs <- stri_match_first_regex(lines, "^([^:]*):\\s*(.*)$")

    if (nrow(hdrs) > 0) { # if we have any
      fast_frame(
        list(
          name = stri_replace_all_fixed(stri_trans_tolower(hdrs[,2]), "-", "_"),
          value = hdrs[,3]
        )
      )
    } else { # if we don't have any
      NULL
    }

  })

}

Note that we had to pass in a list() to it vs bare name/value vectors.

How much faster is it? Quite a bit:

microbenchmark(
  ph = parse_headers(hdrs[1]),
  times = 1000,
  control = list(warmup = 100)
)
## Unit: microseconds
##  expr   min      lq     mean median      uq      max neval
##    ph 27.94 28.7205 34.66066 29.024 29.3785 4144.402  1000

This speedup means the painful ~15s is now just a tolerable ~3s:

system.time(tmp <- parse_headers(hdrs))
##  user  system elapsed 
## 2.901   0.011   2.918 

FIN

Normally, guard rails are awesome, and you can have even more safe code (which means safer and more reproducible analyses) when using {tidyverse} functions. As noted in the previous post, I’m doing a great deal of iterative work, have more than one set of headers I’m crunching on, and am testing out different approaches/theories, so going from 16 seconds to 3 seconds does truly speed up my efforts and has an even bigger impact when I process around 3 million raw header records.

I think I promised {future} work in this post (asynchronous pun not intended), but we’ll get to that eventually (probably the next post).

If you have your own favorite way to speedup data frame creation (or extracting target values from raw text records) drop a note in the comments!

08 Aug 21:39

Surface Duo renders leak showing camera flash and pre-loaded apps

by Jonathan Lamont

Microsoft’s upcoming Android-based foldable phone, the Surface Duo, could start shipping soon. Now, Evan Blass (@evleaks) has shared several renders of the foldable.

Considering Microsoft already showed off the phone at its Surface event in 2019 (and multiple times since), there’s not a lot in the renders we haven’t seen before.

Still, there are some new things and some other interesting tidbits gleaned from the images. To start, Blass said the renders are of the Surface Duo for AT&T. Although there is no carrier branding, it could mean the Duo will be exclusive with the U.S. carrier at launch, or AT&T could be the origin of the renders.

One significant difference with this render compared to what we’ve seen previously is that the renders show a flash in the top-right corner. That matches with some of the real-world images we’ve seen of the Surface Duo.

The renders also show the display and several apps, giving a picture of what software Microsoft will pre-load on the Duo. On the left screen are a Google search bar and a clock widget with the date and weather. Below is the dock with Microsoft Edge, OneNote and Outlook.

Looks like the Surface Duo will come loaded with Google and Microsoft apps

On the right-hand screen are a few apps. There’s a Microsoft folder with the company’s To Do app, what looks like the Xbox Game Pass app, Outlook and Skype. Below the Microsoft folder is the required Google folder, which comes on most Android phones and features all the default Google apps.

There’s also Office, OneDrive, Calendar, the Play Store, YouTube, News, Teams, LinkedIn and Spotify. Interestingly, Spotify is the only app on the home screen that isn’t made by Google or Microsoft.

The right screen also features a unique-to-Duo shortcut that will let users launch Edge and OneNote at the same time with one app on each screen. Users will be able to set up their own shortcuts like this for launching multiple apps side-by-side.

The dock on the right screen includes Google Phone, Google Messages and the camera app with an icon similar to the camera app icon on Pixel phones.

While it’s not clear if all versions of the Duo will include these apps, I wouldn’t be surprised if that’s the case. Microsoft will want its services front and center, but Google requires its services to be there too.

A previous spec leak suggested that the Duo would sport two 5.6-inch screens, use a Snapdragon 855 and 6GB of RAM. It will offer 64GB, 128GB or 256GB of storage and have a single 11-megapixel camera that doubles as the selfie camera and rear camera (depending how you fold the phone). It also will have a 3,460mAh battery and USB-C charging.

Source: Evan Blass Via: 9to5Google

The post Surface Duo renders leak showing camera flash and pre-loaded apps appeared first on MobileSyrup.

08 Aug 21:33

Hyperloop, the biggest Scam since Theranos

by Thunderf00t
mkalus shared this story from Thunderf00t's YouTube Videos.

From: Thunderf00t
Duration: 25:22

You can support this channel directly through patreon:
https://patreon.com/Thunderf00t

or at my amazon affiliate store:
https://www.amazon.com/shop/thunderf00t

or my other channel: https://www.youtube.com/channel/UCUrdmVprSahXaPKqr04VfgQ

08 Aug 21:33

The Insane Engineering of the P-47 Thunderbolt

by Real Engineering
mkalus shared this story from Real Engineering's YouTube Videos.

From: Real Engineering
Duration: 18:19

Get a year of both Nebula and Curiosity Stream for just 14.79 here: http://www.CuriosityStream.com/realengineering and using the code, "realengineering"

New streaming platform: https://watchnebula.com/

Vlog channel: https://www.youtube.com/channel/UCMet4qY3027v8KjpaDtDx-g

Patreon:
https://www.patreon.com/user?u=2825050&ty=h
Facebook:
http://facebook.com/realengineering1
Instagram:
https://www.instagram.com/brianjamesmcmanus
Reddit:
https://www.reddit.com/r/RealEngineering/
Twitter:
https://twitter.com/thebrianmcmanus
Discord:
https://discord.gg/s8BhkmN

Get your Real Engineering shirts at: https://standard.tv/collections/real-engineering

Credits:
Writer/Narrator: Brian McManus
Editor: Stephanie Sammann (https://www.stephanie-sammann.com/)
Animator: Mike Ridolfi (https://www.moboxgraphics.com/)
Sound: Graham Haerther (https://haerther.net/)
Thumbnail: Simon Buckmaster https://twitter.com/forgottentowel

References
[1]
https://books.google.ie/books?id=Sq5pPTWlbqAC&pg=PA25&lpg=PA25&dq=water+injection+p-47&source=bl&ots=mJ4sT8ZXKS&sig=ACfU3U3-ckQ2-buDr8P4pYcHvm0ivF5vPg&hl=en&sa=X&ved=2ahUKEwjnr5bat6nqAhVjoXEKHXbFAiQQ6AEwEXoECA0QAQ#v=onepage&q=water%20injection%20p-47&f=false
[2] https://youtu.be/FcGoc7P1MnA
[3] https://www.sciencedirect.com/science/article/abs/pii/S1743967115300611
[4] http://www.aviation-history.com/republic/p47.html
[5] https://miro.medium.com/max/2000/1*G65ckgkqgLcxAP3zM7_Kuw.jpeg
[6] https://books.google.ie/books?id=qgbKDgAAQBAJ&pg=PT8&lpg=PT8&dq=when+did+the+p-47+start+using+drop+tanks&source=bl&ots=xM2vtR8RY_&sig=ACfU3U3Gbt-E5LjTAypuxl5fXQAEEqG-pw&hl=en&sa=X&ved=2ahUKEwiK9s_T373qAhUFXhUIHQoGDMcQ6AEwFXoECA0QAQ#v=onepage&q=when%20did%20the%20p-47%20start%20using%20drop%20tanks&f=false
[7] http://www.368thfightergroup.com/P-47-armament.html
[8] http://www.56thfightergroup.co.uk/combatreports/adrianse-carter/index.html
[9] https://airandspace.si.edu/collection-objects/republic-p-47d-30-ra-thunderbolt/nasm_A19600306000
[10] http://www.wwiiaircraftperformance.org/p-47/p-47c-afdu.html#:~:text=Dive%20%E2%80%93%20The%20P%2D47%20is,Spitfire%20at%20about%2030%2C000%20feet.
Thank you to AP Archive for access to their archival footage.

Music by Epidemic Sound: http://epidemicsound.com/creator

Songs:

Thank you to my patreon supporters: Adam Flohr, Henning Basma, Hank Green, William Leu, Tristan Edwards, Ian Dundore, John & Becki Johnston. Nevin Spoljaric, Jason Clark, Thomas Barth, Johnny MacDonald, Stephen Foland, Alfred Holzheu, Abdulrahman Abdulaziz Binghaith, Brent Higgins, Dexter Appleberry, Alex Pavek, Marko Hirsch, Mikkel Johansen, Hibiyi Mori. Viktor Józsa, Ron Hochsprung

08 Aug 21:32

How Covid-19 Signals the End of the American Era

mkalus shared this story .

Wade Davis holds the Leadership Chair in Cultures and Ecosystems at Risk at the University of British Columbia. His award-winning books include “Into the Silence” and “The Wayfinders.” His new book, “Magdalena: River of Dreams,” is published by Knopf.

Never in our lives have we experienced such a global phenomenon. For the first time in the history of the world, all of humanity, informed by the unprecedented reach of digital technology, has come together, focused on the same existential threat, consumed by the same fears and uncertainties, eagerly anticipating the same, as yet unrealized, promises of medical science.

In a single season, civilization has been brought low by a microscopic parasite 10,000 times smaller than a grain of salt. COVID-19 attacks our physical bodies, but also the cultural foundations of our lives, the toolbox of community and connectivity that is for the human what claws and teeth represent to the tiger.

Our interventions to date have largely focused on mitigating the rate of spread, flattening the curve of morbidity. There is no treatment at hand, and no certainty of a vaccine on the near horizon. The fastest vaccine ever developed was for mumps. It took four years. COVID-19 killed 100,000 Americans in four months. There is some evidence that natural infection may not imply immunity, leaving some to question how effective a vaccine will be, even assuming one can be found. And it must be safe. If the global population is to be immunized, lethal complications in just one person in a thousand would imply the death of millions.

Pandemics and plagues have a way of shifting the course of history, and not always in a manner immediately evident to the survivors. In the 14th Century, the Black Death killed close to half of Europe’s population. A scarcity of labor led to increased wages. Rising expectations culminated in the Peasants Revolt of 1381, an inflection point that marked the beginning of the end of the feudal order that had dominated medieval Europe for a thousand years.

The COVID pandemic will be remembered as such a moment in history, a seminal event whose significance will unfold only in the wake of the crisis. It will mark this era much as the 1914 assassination of Archduke Ferdinand, the stock market crash of 1929, and the 1933 ascent of Adolf Hitler became fundamental benchmarks of the last century, all harbingers of greater and more consequential outcomes.

COVID’s historic significance lies not in what it implies for our daily lives. Change, after all, is the one constant when it comes to culture. All peoples in all places at all times are always dancing with new possibilities for life. As companies eliminate or downsize central offices, employees work from home, restaurants close, shopping malls shutter, streaming brings entertainment and sporting events into the home, and airline travel becomes ever more problematic and miserable, people will adapt, as we’ve always done. Fluidity of memory and a capacity to forget is perhaps the most haunting trait of our species. As history confirms, it allows us to come to terms with any degree of social, moral, or environmental degradation.

To be sure, financial uncertainty will cast a long shadow. Hovering over the global economy for some time will be the sober realization that all the money in the hands of all the nations on Earth will never be enough to offset the losses sustained when an entire world ceases to function, with workers and businesses everywhere facing a choice between economic and biological survival.

Unsettling as these transitions and circumstances will be, short of a complete economic collapse, none stands out as a turning point in history. But what surely does is the absolutely devastating impact that the pandemic has had on the reputation and international standing of the United States of America.

In a dark season of pestilence, COVID has reduced to tatters the illusion of American exceptionalism. At the height of the crisis, with more than 2,000 dying each day, Americans found themselves members of a failed state, ruled by a dysfunctional and incompetent government largely responsible for death rates that added a tragic coda to America’s claim to supremacy in the world.

For the first time, the international community felt compelled to send disaster relief to Washington. For more than two centuries, reported the Irish Times, “the United States has stirred a very wide range of feelings in the rest of the world: love and hatred, fear and hope, envy and contempt, awe and anger. But there is one emotion that has never been directed towards the U.S. until now: pity.” As American doctors and nurses eagerly awaited emergency airlifts of basic supplies from China, the hinge of history opened to the Asian century.

No empire long endures, even if few anticipate their demise. Every kingdom is born to die. The 15th century belonged to the Portuguese, the 16th to Spain, 17th to the Dutch. France dominated the 18th and Britain the 19th. Bled white and left bankrupt by the Great War, the British maintained a pretense of domination as late as 1935, when the empire reached its greatest geographical extent. By then, of course, the torch had long passed into the hands of America.

In 1940, with Europe already ablaze, the United States had a smaller army than either Portugal or Bulgaria. Within four years, 18 million men and women would serve in uniform, with millions more working double shifts in mines and factories that made America, as President Roosevelt promised, the arsenal of democracy.

When the Japanese within six weeks of Pearl Harbor took control of 90 percent of the world’s rubber supply, the U.S. dropped the speed limit to 35 mph to protect tires, and then, in three years, invented from scratch a synthetic-rubber industry that allowed Allied armies to roll over the Nazis. At its peak, Henry Ford’s Willow Run Plant produced a B-24 Liberator every two hours, around the clock. Shipyards in Long Beach and Sausalito spat out Liberty ships at a rate of two a day for four years; the record was a ship built in four days, 15 hours and 29 minutes. A single American factory, Chrysler’s Detroit Arsenal, built more tanks than the whole of the Third Reich.

In the wake of the war, with Europe and Japan in ashes, the United States with but 6 percent of the world’s population accounted for half of the global economy, including the production of 93 percent of all automobiles. Such economic dominance birthed a vibrant middle class, a trade union movement that allowed a single breadwinner with limited education to own a home and a car, support a family, and send his kids to good schools. It was not by any means a perfect world but affluence allowed for a truce between capital and labor, a reciprocity of opportunity in a time of rapid growth and declining income inequality, marked by high tax rates for the wealthy, who were by no means the only beneficiaries of a golden age of American capitalism.

But freedom and affluence came with a price. The United States, virtually a demilitarized nation on the eve of the Second World War, never stood down in the wake of victory. To this day, American troops are deployed in 150 countries. Since the 1970s, China has not once gone to war; the U.S. has not spent a day at peace. President Jimmy Carter recently noted that in its 242-year history, America has enjoyed only 16 years of peace, making it, as he wrote, “the most warlike nation in the history of the world.” Since 2001, the U.S. has spent over $6 trillion on military operations and war, money that might have been invested in the infrastructure of home. China, meanwhile, built its nation, pouring more cement every three years than America did in the entire 20th century.

As America policed the world, the violence came home. On D-Day, June 6th, 1944, the Allied death toll was 4,414; in 2019, domestic gun violence had killed that many American men and women by the end of April. By June of that year, guns in the hands of ordinary Americans had caused more casualties than the Allies suffered in Normandy in the first month of a campaign that consumed the military strength of five nations.

More than any other country, the United States in the post-war era lionized the individual at the expense of community and family. It was the sociological equivalent of splitting the atom. What was gained in terms of mobility and personal freedom came at the expense of common purpose. In wide swaths of America, the family as an institution lost its grounding. By the 1960s, 40 percent of marriages were ending in divorce. Only six percent of American homes had grandparents living beneath the same roof as grandchildren; elders were abandoned to retirement homes.

With slogans like “24/7” celebrating complete dedication to the workplace, men and women exhausted themselves in jobs that only reinforced their isolation from their families. The average American father spends less than 20 minutes a day in direct communication with his child. By the time a youth reaches 18, he or she will have spent fully two years watching television or staring at a laptop screen, contributing to an obesity epidemic that the Joint Chiefs have called a national security crisis.

FILE - In this April 3, 1944, file photo Bofors guns used by the Army and Navy are shown lined up at the Firestone Tire & Rubber Co. in Akron, Ohio. Not since World War II when factories converted from making automobiles to making tanks, Jeeps and torpedos has the entire nation been asked to truly sacrifice for a greater good. (AP Photo, File)

Firestone Tire & Rubber Co. in Akron, Ohio on April 3rd, 1944. When the Japanese within six weeks of Pearl Harbor took control of 90 percent of the world’s rubber supply, the U.S. dropped the speed limit to 35 mph to protect tires, and then, in three years, invented from scratch a synthetic-rubber industry.

AP

Only half of Americans report having meaningful, face-to-face social interactions on a daily basis. The nation consumes two-thirds of the world’s production of antidepressant drugs. The collapse of the working-class family has been responsible in part for an opioid crisis that has displaced car accidents as the leading cause of death for Americans under 50.

At the root of this transformation and decline lies an ever-widening chasm between Americans who have and those who have little or nothing. Economic disparities exist in all nations, creating a tension that can be as disruptive as the inequities are unjust. In any number of settings, however, the negative forces tearing apart a society are mitigated or even muted if there are other elements that reinforce social solidarity — religious faith, the strength and comfort of family, the pride of tradition, fidelity to the land, a spirit of place.

But when all the old certainties are shown to be lies, when the promise of a good life for a working family is shattered as factories close and corporate leaders, growing wealthier by the day, ship jobs abroad, the social contract is irrevocably broken. For two generations, America has celebrated globalization with iconic intensity, when, as any working man or woman can see, it’s nothing more than capital on the prowl in search of ever cheaper sources of labor.

For many years, those on the conservative right in the United States have invoked a nostalgia for the 1950s, and an America that never was, but has to be presumed to have existed to rationalize their sense of loss and abandonment, their fear of change, their bitter resentments and lingering contempt for the social movements of the 1960s, a time of new aspirations for women, gays, and people of color. In truth, at least in economic terms, the country of the 1950s resembled Denmark as much as the America of today. Marginal tax rates for the wealthy were 90 percent. The salaries of CEOs were, on average, just 20 times that of their mid-management employees.

Today, the base pay of those at the top is commonly 400 times that of their salaried staff, with many earning orders of magnitude more in stock options and perks. The elite one percent of Americans control $30 trillion of assets, while the bottom half have more debt than assets. The three richest Americans have more money than the poorest 160 million of their countrymen. Fully a fifth of American households have zero or negative net worth, a figure that rises to 37 percent for black families. The median wealth of black households is a tenth that of whites. The vast majority of Americans — white, black, and brown — are two paychecks removed from bankruptcy. Though living in a nation that celebrates itself as the wealthiest in history, most Americans live on a high wire, with no safety net to brace a fall.

With the COVID crisis, 40 million Americans lost their jobs, and 3.3 million businesses shut down, including 41 percent of all black-owned enterprises. Black Americans, who significantly outnumber whites in federal prisons despite being but 13 percent of the population, are suffering shockingly high rates of morbidity and mortality, dying at nearly three times the rate of white Americans. The cardinal rule of American social policy — don’t let any ethnic group get below the blacks, or allow anyone to suffer more indignities — rang true even in a pandemic, as if the virus was taking its cues from American history.

COVID-19 didn’t lay America low; it simply revealed what had long been forsaken. As the crisis unfolded, with another American dying every minute of every day, a country that once turned out fighter planes by the hour could not manage to produce the paper masks or cotton swabs essential for tracking the disease. The nation that defeated smallpox and polio, and led the world for generations in medical innovation and discovery, was reduced to a laughing stock as a buffoon of a president advocated the use of household disinfectants as a treatment for a disease that intellectually he could not begin to understand.

As a number of countries moved expeditiously to contain the virus, the United States stumbled along in denial, as if willfully blind. With less than four percent of the global population, the U.S. soon accounted for more than a fifth of COVID deaths. The percentage of American victims of the disease who died was six times the global average. Achieving the world’s highest rate of morbidity and mortality provoked not shame, but only further lies, scapegoating, and boasts of miracle cures as dubious as the claims of a carnival barker, a grifter on the make.

As the United States responded to the crisis like a corrupt tin pot dictatorship, the actual tin pot dictators of the world took the opportunity to seize the high ground, relishing a rare sense of moral superiority, especially in the wake of the killing of George Floyd in Minneapolis. The autocratic leader of Chechnya, Ramzan Kadyrov, chastised America for “maliciously violating ordinary citizens’ rights.” North Korean newspapers objected to “police brutality” in America. Quoted in the Iranian press, Ayatollah Khomeini gloated, “America has begun the process of its own destruction.”

Trump’s performance and America’s crisis deflected attention from China’s own mishandling of the initial outbreak in Wuhan, not to mention its move to crush democracy in Hong Kong. When an American official raised the issue of human rights on Twitter, China’s Foreign Ministry spokesperson, invoking the killing of George Floyd, responded with one short phrase, “I can’t breathe.”

These politically motivated remarks may be easy to dismiss. But Americans have not done themselves any favors. Their political process made possible the ascendancy to the highest office in the land a national disgrace, a demagogue as morally and ethically compromised as a person can be. As a British writer quipped, “there have always been stupid people in the world, and plenty of nasty people too. But rarely has stupidity been so nasty, or nastiness so stupid”.

The American president lives to cultivate resentments, demonize his opponents, validate hatred. His main tool of governance is the lie; as of July 9th, 2020, the documented tally of his distortions and false statements numbered 20,055. If America’s first president, George Washington, famously could not tell a lie, the current one can’t recognize the truth. Inverting the words and sentiments of Abraham Lincoln, this dark troll of a man celebrates malice for all, and charity for none.

Odious as he may be, Trump is less the cause of America’s decline than a product of its descent. As they stare into the mirror and perceive only the myth of their exceptionalism, Americans remain almost bizarrely incapable of seeing what has actually become of their country. The republic that defined the free flow of information as the life blood of democracy, today ranks 45th among nations when it comes to press freedom. In a land that once welcomed the huddled masses of the world, more people today favor building a wall along the southern border than supporting health care and protection for the undocumented mothers and children arriving in desperation at its doors. In a complete abandonment of the collective good, U.S. laws define freedom as an individual’s inalienable right to own a personal arsenal of weaponry, a natural entitlement that trumps even the safety of children; in the past decade alone 346 American students and teachers have been shot on school grounds.

The American cult of the individual denies not just community but the very idea of society. No one owes anything to anyone. All must be prepared to fight for everything: education, shelter, food, medical care. What every prosperous and successful democracy deems to be fundamental rights — universal health care, equal access to quality public education, a social safety net for the weak, elderly, and infirmed — America dismisses as socialist indulgences, as if so many signs of weakness.

How can the rest of the world expect America to lead on global threats — climate change, the extinction crisis, pandemics — when the country no longer has a sense of benign purpose, or collective well-being, even within its own national community? Flag-wrapped patriotism is no substitute for compassion; anger and hostility no match for love. Those who flock to beaches, bars, and political rallies, putting their fellow citizens at risk, are not exercising freedom; they are displaying, as one commentator has noted, the weakness of a people who lack both the stoicism to endure the pandemic and the fortitude to defeat it. Leading their charge is Donald Trump, a bone spur warrior, a liar and a fraud, a grotesque caricature of a strong man, with the backbone of a bully.

Over the last months, a quip has circulated on the internet suggesting that to live in Canada today is like owning an apartment above a meth lab. Canada is no perfect place, but it has handled the COVID crisis well, notably in British Columbia, where I live. Vancouver is just three hours by road north of Seattle, where the U.S. outbreak began. Half of Vancouver’s population is Asian, and typically dozens of flights arrive each day from China and East Asia. Logically, it should have been hit very hard, but the health care system performed exceedingly well. Throughout the crisis, testing rates across Canada have been consistently five times that of the U.S. On a per capita basis, Canada has suffered half the morbidity and mortality. For every person who has died in British Columbia, 44 have perished in Massachusetts, a state with a comparable population that has reported more COVID cases than all of Canada. As of July 30th, even as rates of COVID infection and death soared across much of the United States, with 59,629 new cases reported on that day alone, hospitals in British Columbia registered a total of just five COVID patients.

When American friends ask for an explanation, I encourage them to reflect on the last time they bought groceries at their neighborhood Safeway. In the U.S. there is almost always a racial, economic, cultural, and educational chasm between the consumer and the check-out staff that is difficult if not impossible to bridge. In Canada, the experience is quite different. One interacts if not as peers, certainly as members of a wider community. The reason for this is very simple. The checkout person may not share your level of affluence, but they know that you know that they are getting a living wage because of the unions. And they know that you know that their kids and yours most probably go to the same neighborhood public school. Third, and most essential, they know that you know that if their children get sick, they will get exactly the same level of medical care not only of your children but of those of the prime minister. These three strands woven together become the fabric of Canadian social democracy.

Asked what he thought of Western civilization, Mahatma Gandhi famously replied, “I think that would be a good idea.” Such a remark may seem cruel, but it accurately reflects the view of America today as seen from the perspective of any modern social democracy. Canada performed well during the COVID crisis because of our social contract, the bonds of community, the trust for each other and our institutions, our health care system in particular, with hospitals that cater to the medical needs of the collective, not the individual, and certainly not the private investor who views every hospital bed as if a rental property. The measure of wealth in a civilized nation is not the currency accumulated by the lucky few, but rather the strength and resonance of social relations and the bonds of reciprocity that connect all people in common purpose.

This has nothing to do with political ideology, and everything to do with the quality of life. Finns live longer and are less likely to die in childhood or in giving birth than Americans. Danes earn roughly the same after-tax income as Americans, while working 20 percent less. They pay in taxes an extra 19 cents for every dollar earned. But in return they get free health care, free education from pre-school through university, and the opportunity to prosper in a thriving free-market economy with dramatically lower levels of poverty, homelessness, crime, and inequality. The average worker is paid better, treated more respectfully, and rewarded with life insurance, pension plans, maternity leave, and six weeks of paid vacation a year. All of these benefits only inspire Danes to work harder, with fully 80 percent of men and women aged 16 to 64 engaged in the labor force, a figure far higher than that of the United States.

American politicians dismiss the Scandinavian model as creeping socialism, communism lite, something that would never work in the United States. In truth, social democracies are successful precisely because they foment dynamic capitalist economies that just happen to benefit every tier of society. That social democracy will never take hold in the United States may well be true, but, if so, it is a stunning indictment, and just what Oscar Wilde had in mind when he quipped that the United States was the only country to go from barbarism to decadence without passing through civilization.

Evidence of such terminal decadence is the choice that so many Americans made in 2016 to prioritize their personal indignations, placing their own resentments above any concerns for the fate of the country and the world, as they rushed to elect a man whose only credential for the job was his willingness to give voice to their hatreds, validate their anger, and target their enemies, real or imagined. One shudders to think of what it will mean to the world if Americans in November, knowing all that they do, elect to keep such a man in political power. But even should Trump be resoundingly defeated, it’s not at all clear that such a profoundly polarized nation will be able to find a way forward. For better or for worse, America has had its time.

The end of the American era and the passing of the torch to Asia is no occasion for celebration, no time to gloat. In a moment of international peril, when humanity might well have entered a dark age beyond all conceivable horrors, the industrial might of the United States, together with the blood of ordinary Russian soldiers, literally saved the world. American ideals, as celebrated by Madison and Monroe, Lincoln, Roosevelt, and Kennedy, at one time inspired and gave hope to millions.

If and when the Chinese are ascendant, with their concentration camps for the Uighurs, the ruthless reach of their military, their 200 million surveillance cameras watching every move and gesture of their people, we will surely long for the best years of the American century. For the moment, we have only the kleptocracy of Donald Trump. Between praising the Chinese for their treatment of the Uighurs, describing their internment and torture as “exactly the right thing to do,” and his dispensing of medical advice concerning the therapeutic use of chemical disinfectants, Trump blithely remarked, “One day, it’s like a miracle, it will disappear.” He had in mind, of course, the coronavirus, but, as others have said, he might just as well have been referring to the American dream.

Sorry, the video player failed to load.(Error Code: 101102)

08 Aug 21:31

Happy 808 Day

by Ronny
mkalus shared this story from Das Kraftfuttermischwerk.

Roland feiert das Jubiläum der imho besten und wichtigsten Drum Machine aller Zeiten, die die Musikwelt über die Jahrzehnte komplett und bis heute nachhaltig verändert hat, mit einer eigenen Seite, die sich einzig der guten alten TR-808 widmet. Happy 808 Day!