Penny Arcade: News Post: Drawing on the new iPad

Gabe: I got an iPad Pro back in April of this year after learning that there was an iOS version of Clip Studio. Since this is the program I do all my work in these days, I was curious if an iPad could function as my travel device. After drawing on it for about a week I loved it. I didn’t just decide to use it when I travel. I started using the iPad exclusively for all my drawing.  I drew the comic strip on it. View this post on Instagram Working on Monday’s strip and I’ve got some company. #pennyarcade A post shared by Mike Krahulik (@cwgabriel) on Jun 16, 2018 at…

Quiet Earth: MANIAC is Coming. In 4K!

Blue Underground has announced that they will be releasing a limited edition 4K restoration of the horror classic Maniac directed by William Lustig and featuring the special effects of gore master Tom Savini.

The new restoration comes from a recently discovered 16mm original camera negative and the release, limited to 10,000 copies, will include 2 blu-rays, a CD featuring the soundtrack from Jay Chattaway and loads of extras; a few of them never seen before!

Extras include:

Disc 1 (Blu-ray) Feature Film + Extras:

- Audio Commentary #1 with Producer/Director William Lustig and Producer Andrew W. Garroni
- Audio Commentary #2 with Producer/Director William Lustig, Special Make-Up Effects Artist Tom Savini, Editor Lorenzo Marinelli, and Joe Spinell's Assistant L [Continued ...]

Bifurcated Rivets: From FB

Ain?t misbehavin?

Bifurcated Rivets: From FB

Wave guides

Bifurcated Rivets: From FB


Bifurcated Rivets: From FB


Bifurcated Rivets: From FB


MetaFilter: Kurt was really into those lilies. He had them all over the stage.

The best television episode of the 1990s starred a short, blond man and his band. On November 18, 1993, at Sony Music Studios in New York City, Nirvana took on MTV Unplugged. That night, the biggest group of the decade staged one of the most hypnotically intimate rock concerts ever captured on film.

Slashdot: United Nations Considers a Test Ban on Evolution-Warping Gene Drives

Bill Gates wants to end malaria, and so he's particularly "energized" about gene drives, a technology that could wipe out the mosquitoes that spread the disease. Gates calls the new approach a "breakthrough," but some environmental groups say gene drives are too dangerous to ever use. From a report: Now the sides are headed for a showdown. In a letter circulated this week, scientists funded by the Bill & Melinda Gates Foundation and others are raising the alarm over what they say is an attempt to use a United Nations biodiversity meeting this week in Sharm El-Sheikh, Egypt, to introduce a global ban on field tests of the technology. At issue is a draft resolution by diplomats updating the UN Convention on Biological Diversity, which -- if adopted -- would call on governments to "refrain from" any release of organisms containing engineered gene drives, even as part of experiments. The proposal for a global gene-drive moratorium has been pushed by environmental groups that are also opposed to genetically modified soybeans and corn. They have likened the gene-drive technique to the atom bomb. In response, the Gates Foundation, based in Seattle, has been funding a counter-campaign, hiring public relations agencies to preempt restrictive legislation and to distribute today's letter. Many of its signatories are directly funded by the foundation. "This is a lobbying game on both sides, to put it bluntly," says Todd Kuiken, who studies gene-drive policy at North Carolina State University. (He says he was asked to sign the Gates letter but declined because he is a technical advisor to the UN.) New technology The gene-drive technique involves modifying a mosquito's DNA so that, when the insect breeds, it spreads a specific genetic change -- one that's bad for its survival.

Read more of this story at Slashdot.

Recent additions: haskoin-store 0.6.3

Added by xenog, Wed Nov 14 18:50:15 UTC 2018.

Storage and index for Bitcoin and Bitcoin Cash

Open Culture: How Glenn Gould’s Eccentricities Became Essential to His Playing & Personal Style: From Humming Aloud While Playing to Performing with His Childhood Piano Chair

The cultural law that we must indulge, or at least tolerate, the quirks of genius has much less force these days than it once did. Notoriously perfectionistic Stanley Kubrick’s fabled fits of verbal abuse, for example, might skirt a line with actors and audiences now, though it’s hard to argue with the results of his process. Many other examples of artists’ bad behavior need no further mention, they are now so well-known and rightly reviled. When it comes to another legendarily demanding auteur, Glenn Gould was as devoted to his art, and as doggedly idiosyncratic, as it gets.

But the case of Gould presents us with a very different picture than that of the artist who lashes out at or abuses those around him. His eccentricities consisted mainly of hermetic habits, odd attachments, and a tendency to hum and sing loudly while he played Bach, Mozart, Schoenberg, or any number of other classical composers whose work he re-interpreted. While Leonard Bernstein praised Gould as a “thinking performer” (one with whom Bernstein sharply disagreed), he was also a particularly noisome performer, a fact that bedeviled recording engineers.

As music critic Tim Page says in the interview clip at the top, the habit of humming also troubled Gould, who saw it as a liability but could not play at his best without doing it. “I would say that Glenn was in sort of an ecstatic transport,” during a lot of his performances. “When you look at him, he’s almost auto-erotic…. He is clearly having a major and profound reaction to it as he is also making it happen.” The trait manifested “from the beginning” of Gould’s life, his father Bert once said. “When you’d expect a child to cry, Glenn would always hum.” (He may or may not have had Asperger’s syndrome.)

“On the warm summer day of the first recording session” of his first recording of Bach’s Goldberg Variations, writes Edward Rothstein at The New York Times:

He arrived at the recording studio wearing a winter coat, a beret, a muffler and gloves. He carried a batch of towels, bottles of spring water, several varieties of pills and a 14-inch high piano chair to sit on. He soaked his arms in hot water for 20 minutes, took several medications, adjusted each leg of his chair, and proceeded to play, loudly humming and singing along. After a week, he had produced one of the most remarkable performances of Bach's Goldberg Variations on record.

See a young Gould further up play J.S. Bach’s Partita #2, loudly humming and singing expressively as though it were an opera. Another of Gould’s incurable quirks also threatened to be a detriment to his performances, especially after he renounced performing live and retreated permanently to the studio. Gould insisted on performing for over 21 years on a “chair that has become an object of reverence for Gould devotees,” explains the podcast Ludwig van Toronto. Gould was “obsessed” with the chair and “wouldn’t perform on anything else.”

In the video above, you can see Gould defend the diminutive chair—built by his father for his childhood practice—telling a TV presenter, “I’ve never given any concert in anything else.” The chair, he says, is “a member of the family! It is a boon companion, without which I do not function, I cannot operate.”

Along with his exactly specified height for the piano, over which he hovered with his chin just inches from the middle C, a rug under his feet, and a very warm studio, which he often sat in wearing winter clothes, Gould’s chair is one of the most distinctive of his oddities. The chair is “one of the most famous musical objects in the history of classical music,” Kate Shapero writes at Gould interview site Unheard Notes. But it caused considerable consternation in the studio.

Now residing in a glass case at the National Library of Canada, Gould’s chair is so dilapidated that “the only thing that kept it from falling apart,” says Ludwig van Toronto, “is some duct tape, screws, and piano wire.” Even before it acquired the noisy hardware of the metal brackets holding up its two front legs, Gould’s animated playing made the chair rock and creak in distracting ways. But while Gould’s unintentional accompaniments turn some people off, his true fans, and they are multitude, either find his vocalizations charming or completely tune them out. (They disappear when he begins performing above.)

Gould’s “singing authenticates and humanizes his performances,” composer Luke Dahn argues. “It reveals a performer so entirely absorbed in the music’s moment and reminds us that this is a performance, even if within the confines of the studio.” His unusual qualities “distinguish his recordings from those of countless note-perfect recordings available today that take on a fabricated, sterile, and even robotic quality. (Is perfection ever very interesting?)” Like the greatest musical innovators—John Coltrane especially comes to mind—Gould has wide appeal both inside his genre circles and far outside them.

“I can put him on for hours,” says noted Gould devotee John Waters, “he’s like nobody else. He was the ultimate original—a real outsider. And he had a great style, the hats and the gloves and so on.” Whatever the origins of Gould’s quirks, and whatever his misgivings about them, Gould lovers perceive them not as flaws to be overlooked or tolerated but essential qualities of his passion and utterly unique personal style. See him "say something original" about Beethoven above, then deliver a tremendous performance, mostly hum free but totally enthralling, of Beethoven's Piano Sonata No. 17 in D Minor—a piece whose nickname captures Gould's musical effect: "The Tempest."

Related Content:

Glenn Gould Plays Bach on His U.S. TV Debut … After Leonard Bernstein Explains What Makes His Playing So Great (1960)

Hear the Famously Controversial Concert Where Leonard Bernstein Introduces Glenn Gould & His Idiosyncratic Performance of Brahms’ First Piano Concerto (1962)

Listen to Glenn Gould’s Shockingly Experimental Radio Documentary, The Idea of North (1967)

Josh Jones is a writer and musician based in Durham, NC. Follow him at @jdmagness

How Glenn Gould’s Eccentricities Became Essential to His Playing & Personal Style: From Humming Aloud While Playing to Performing with His Childhood Piano Chair is a post from: Open Culture. Follow us on Facebook, Twitter, and Google Plus, or get our Daily Email. And don't miss our big collections of Free Online Courses, Free Online Movies, Free eBooksFree Audio Books, Free Foreign Language Lessons, and MOOCs.

Recent additions: haskoin-node 0.9.5

Added by xenog, Wed Nov 14 18:34:23 UTC 2018.

Haskoin Node P2P library for Bitcoin and Bitcoin Cash

Quiet Earth: Action-Packed First Look at Singaporean Western BUFFALO BOYS [Trailer]

Earlier this year we saw there release of an Indonesian western in Marlina the Murderer in Four Acts (trailer) and now we have another western from an unlikely country: Singapore.

Buffalo Boys is the directorial debut of Mike Wiluan, an actor and producer behind Crazy Rich Asians, Hitman: Agent 47 and Headshot.

The movie unfolds in 19th century Java. When the sultan is murdered by Dutch soldiers, the sultan's brother and two infant sons manage to escape to America's Wild West. Years later, the boys return to Indonesia to avenge their father's death.

The trailer for Buffalo Boys plays like an al [Continued ...]

MetaFilter: The light at the end of the "tunnel" is a Eurostar

At the time of writing, Theresa May's cabinet is meeting to discuss a draft Brexit deal between the UK and EU, that has emerged from the "tunnel" of secret negotiations. Will it be acceptable to her cabinet, or will there be resignations? Will it pass parliament, or will it fall afoul of, well, pretty much everyone? (DUP; Scottish Tories angry over fisheries; Moderate remainer Tories; Labour; frothing crazy ERG Tories; LibDems)

Here are some of the consequences so far [twitter; good follow on Brexit-related stuff]. Here are some of the likely consequences of no-deal.
Corbyn says the deal could leave us in "an indefinite halfway house without any real say". But what does Corbyn really think of the EU? [twitter]
Ultimately, maybe @mutablejoe is right:
brexit is like a sitcom where at the start of the episode the main character tells a casual lie about being able to skydive to impress someone and now they're at the end of the episode in a plane about to jump

Slashdot: Researchers Discover Seven New Meltdown and Spectre Attacks

A team of nine academics has revealed today seven new CPU attacks. The seven impact AMD, ARM, and Intel CPUs to various degrees. From a report: Two of the seven new attacks are variations of the Meltdown attack, while the other five are variations on the original Spectre attack -- two well-known attacks that have been revealed at the start of the year and found to impact CPUs models going back to 1995. Researchers say they've discovered the seven new CPU attacks while performing "a sound and extensible systematization of transient execution attacks" -- a catch-all term the research team used to describe attacks on the various internal mechanisms that a CPU uses to process data, such as the speculative execution process, the CPU's internal caches, and other internal execution stages. The research team says they've successfully demonstrated all seven attacks with proof-of-concept code. Experiments to confirm six other Meltdown-attacks did not succeed, according to a graph published by researchers.

Read more of this story at Slashdot.

MetaFilter: Let's talk turkey.

It's that time of year when a young person's fancy turns to thoughts of turkey. It's important to note, then, that brining turkeys is out. Low on oven space? Maybe cook that turkey outdoors. Or skip roasting it entirely. Or a bunch of other ways. Should you buy a fancy new gadget to fry your bird? Just be careful, there's a salmonella scare going around right now.

Recent additions: dwergaz

Added by henrytill, Wed Nov 14 17:47:01 UTC 2018.

A minimal testing library

MetaFilter: something something virtue something

Here's 17 minutes of an old steel vice being quietly, painstakingly restored.

Slashdot: Google's Night Sight Feature Arrives For Pixel Phones

Google on Wednesday started to roll out 'Night Sight', a much anticipated-feature to the Pixel smartphones that is designed to help users capture better photos in low-light conditions. From a report: Night Sight made a premature debut in October courtesy of a leaked app, but today marks the start of its official rollout. Beginning this week, Night Sight will come not only to the Pixel 3 and 3 XL, but to the Pixel 2 and original Pixel. And judging by our preliminary testing, it was well worth the wait. Further reading: Google gives the Pixel camera superhuman night vision

Read more of this story at Slashdot.

Colossal: Chain Reaction: An International Print Show Featuring Bike-Centric Artwork

The Road by Eleni Debo

This Friday we’ll be kicking off Chain Reaction, an international print show featuring artists, designers, and printmakers from all over the world. Chain Reaction includes works by seventeen artists, including many previously featured on Colossal: Eleni Debo, Alex Senna (previously), Arna Miller (previously), Mart Aire (previously), Lydia Fu, Moniker, Fran Labuschagne, and Vance Lump.  We’re sharing half the show in this article—stay tuned for part two next week!

Each piece included in Chain Reaction was made exclusively for the exhibition and will be available in person at the Design Museum of Chicago, as well as online in The Colossal Shop. 10% of each print sale will benefit the non-profit organization Blackstone Bicycle Works. Chain Reaction is part of the Design Museum’s winter exhibition, Keep Moving, which explores the history and culture of bicycles in Chicago.

If you’re in town we’d love to see you at the opening at the Design Museum’s HQ at Block 37. You can find out more on our event page, and RSVP on to the event on Facebook. Kids are welcome and the opening is free and open to the public.

Life on Wheels by Alex Senna

Joy-Ride by Arna Miller

ANDAR by Mart Aire

Small Revolutions by Lydia Fu

Keep Moving by Moniker

Let’s Ride by Fran Labuschagne

The Rider by Vance Lump

Slashdot: ProtonVPN Passes 1 Million Users and Launches on iOS

Encrypted email service provider ProtonMail has launched its standalone VPN app for iOS devices. From a report: The announcement comes more than a year after ProtonVPN launched globally for desktop users and 10 months after it landed on Android, so the iOS launch has been a long time coming. There is, of course, no shortage of VPN apps out there already, but ProtonMail has built a solid reputation in the encrypted communications realm since it was founded out of CERN in 2013. Following the launch of its privacy-focused email service nearly three years ago, the company subsequently added two-factor authentication (2FA), Tor support, an encrypted contacts manager, and of course a VPN service. ProtonMail offers various pricing tiers for ProtonVPN, ranging from free to $24 per month. Those who choose not to pay can access three countries' servers, with access on one device, but will have slower speeds, while the top $24/month tier offers access on 10 devices with server access in all available countries. In related news, ProtonMail said that ProtonVPN now has 1 million users globally.

Read more of this story at Slashdot.

Recent additions: cgi 3001.3.0.3

Added by PeterSimons, Wed Nov 14 16:31:59 UTC 2018.

A library for writing CGI programs

MetaFilter: "You leave Tamara without ever having discovered it."

There are interesting attempts to procedurally generate realistic cities, though it turns out to still be a hard problem, as all the most famous cities in games are built by hand. The exceptions are often interesting to play with, like Wave Function Collapse [PC only] which lets you walk through an infinite and beautiful Mediterranean-style city. If you prefer overhead maps, here is an interactive in-browser fantasy generator or this approach, which generates random navigable cities. Developers keep teasing new approaches to city building however, you can see some animated GIFs generated by another interesting approach to creating a cyberpunk city, along with some procedural brutalism.

Recent additions: hackage-whatsnew 0.1.3

Added by JeremyShaw, Wed Nov 14 16:04:47 UTC 2018.

Check for differences between working directory and hackage

Slashdot: Russia Jammed GPS During Major NATO Military Exercise With US Troops

The Russian military jammed GPS signals during a major NATO military exercise in Norway that involved thousands of US and NATO troops, the alliance said Wednesday, citing the Norwegian government. From a report: The NATO exercise, Trident Juncture, concluded Sunday and involved some 50,000 personnel. It was labeled the alliance's largest exercise since the Cold War. Non-NATO members Finland and Sweden also participated in the exercise. A spokesperson for the Norwegian ministry of defense acknowledged the jamming to CNN, which it said took place between October 16 and November 7, and said it would defer to the Ministry of Foreign Affairs on further questions to Russian authorities. "Norway has determined that Russia was responsible for jamming GPS signals in the Kola Peninsula during Exercise Trident Juncture. Finland has expressed concern over possible jamming in Lapland," NATO spokesperson Oana Lungescu told CNN Wednesday. "In view of the civilian usage of GPS, jamming of this sort is dangerous, disruptive and irresponsible," she added. Asked about the report of Russian jamming, NATO's Secretary General Jens Stoltenberg said the alliance was aware of the reports but did not offer additional information. "We have seen there have been similar reports from Norway, and I cannot share more precise information with you," Stoltenberg said Sunday at a news conference marking the end of Trident Juncture.

Read more of this story at Slashdot.

Penny Arcade: News Post: Inevitibilia

Tycho: In truth, it’s Gabriel the Younger who plays more Fortnite than Elliot - but Gabriel Prime would never have deployed this kind of poetry, so it was vital that I take the fore. I’m a little startled and honored by his rendering of my beautiful son, but in truth I think it might be ultrapragmatic to start preparing my children for the coming Water Wars.  See if we can get them a head start on being hailed as Seed Lords or some shit in a world where people have twelve different words for dust storms but have never seen a plant.  I’d have to start early - as early…

Penny Arcade: Comic: Inevitibilia

New Comic: Inevitibilia

ScreenAnarchy: THE SONATA: Watch The Striking Teaser For Andrew Desmond's Chilling Debut

Andrew Desmond is a director we've been keeping a close eye on in these pages for some time now. His short film work has been striking and we were pleased to share the first images from his debut feature, The Sonata, almost exactly a year ago. And now the film has wrapped up and we're very excited to share the first teaser. A young violinist unravels her long lost father’s past, triggering dark forces that reach beyond her imagination… Freya Tingley, Simon Akbarian, James Faulkner and Rutger Hauer star in the classically styled - and classical music oriented - horror picture. Take a look at the first teaser below!...

[Read the whole post on]

ScreenAnarchy: Los Cabos 2018 Dispatch: AMERICAN ANIMALS and WIDOWS, a Heist Movie Double Feature

Reminiscent of the recent Mexican film Museo, by Alonso Ruizpalacios, American Animals is a heist movie starring youngsters who, on paper, would have no obvious reason to carry out a robbery. With the support of their families, without economic problems, enrolled in the university and theoretically with a promising future, Spencer (Barry Keoghan, who previously stood out in The Killing of a Sacred Deer) and Warren (Evan Peters) really want their lives to take a different direction, towards the extraordinary and meaningful. Suddenly, stealing some of the valuable books from a collection at the University of Transylvania, including John James Audubon's collection of bird paintings, The Birds of America, will become the friends' obsession in order to fill that existential vacuum that’s invisible to their...

[Read the whole post on]

Open Culture: The Journal of Controversial Ideas, Co-Founded by Philosopher Peter Singer, Will Publish & Defend Pseudonymous Articles, Regardless of the Backlash

Photo of Peter Singer by Mat Vickers, via Wikimedia Commons

Australian bioethicist Peter Singer has made headlines as few philosophers do with claims about the moral status of animals and the “Singer solution to world poverty,” and with far more controversial positions on abortion and disability. Many of his claims have placed him outside the pale for students at Princeton, his current employer, where he has faced protests and calls for his termination. “I favor the ability to put new ideas out there for discussion,” he has said in response to what he views as a hostile academic climate, “and I see an atmosphere in which some people may be intimated from doing that.”

For those who, like him, make controversial arguments such as those for euthanizing “defective infants," for example, as he wrote about in his 1979 Practical Ethics, Singer has decided to launch a new venue, The Journal of Controversial Ideas. As The Chronicle of Higher Education reports, the journal aims to be “an annual, peer-reviewed, open-access publication that will print worthy papers, and stand behind them, regardless of the backlash.” The idea, says Singer, “is to establish a journal where it’s clear from the name and object that controversial ideas are welcome.”

Is it true that “controversial ideas” have been denied a hearing elsewhere in academia? The widely-covered tactics of “no-platforming” practiced by some campus activists have created the impression that censorship or illiberalism in colleges and universities has become an epidemic problem. No so, argues Princeton’s Eddie Glaude, Jr., who points out that figures who have been disinvited to speak at certain institutions have been welcomed on dozens of other campuses “without it becoming a national spectacle.” Sensationalized campus protests are “not the norm,” as many would have us believe, he writes.

But the question Singer and his co-founders pose isn’t whether controversial ideas get aired in debates or lecture forums, but whether scholars have been censored, or have censored themselves, in the specialized forums of their fields, the academic journals. Singer’s co-founder/editor Jeff McMahan, professor of moral philosophy at Oxford, believes so, as he told the BBC in a Radio 4 documentary called “University Unchallenged.” The new journal, said McMahan, “would enable people whose ideas might get them in trouble either with the left or with the right or with their own university administration, to publish under a pseudonym.”

Those who feel certain positions might put their career in jeopardy will have cover, but McMahan declares that “the screening procedure” for publication “will be as rigorous as those for other academic journals. The level of quality will be maintained.” Some skepticism may be warranted given the journal’s intent to publish work from every discipline. The editors of specialist journals bring networks of reviewers and specialized knowledge themselves to the usual vetting process. In this case, the core founding team are all philosophers: Singer, McMahan, and Francesca Minerva, postdoctoral fellow at the University of Ghent.

One might reasonably ask how that process can be “as rigorous” on this wholesale scale. Though the BBC reports that there will be an “intellectually diverse international editorial board," board members are rarely very involved in the editorial operations of an academic journal. Justin Weinberg at Daily Nous has some other questions, including whether the degree, or existence, of academic censorship even warrants the journal’s creation. “No evidence was cited,” he writes “to support the claim that ‘a culture of fear and self-censorship’ is preventing articles that would pass a review process” from seeing publication.

Furthermore, Weinberg says, the journal’s putative founders have given no argument “to allay what seems to be a reasonable concern that the creation of such a journal will foster more of a ‘culture of fear and self-censorship’ compared to other options, or that it plays into and reinforces expertise-undermining misconceptions about academia bandied about in popular media that may have negative effects…. Given that the founding team is comprised of people noted for views that emphasize empirical facts and consequences, one might reasonably hope for a public discussion of such evidence and arguments.”

Should scholars publish pseudonymously in peer-reviewed journals? Shouldn’t they be willing to defend their ideas on the merits without hiding their identity? Is such subterfuge really necessary? “Right now,” McMahan asserts, “in current conditions something like this is needed…. I think all of us will be very happy if, and when, the need for such a journal disappears, and the sooner the better.” Given that the journal’s co-founders paint such a broadly dire picture of the state of academia, it’s reasonable to ask for more than anecdotal evidence of their claims. A few high-profile incidents do not prove a widespread culture of repression.

It is also “fair to wonder,” writes Annabelle Timsit at Quartz, “whether the board of a journal dedicated to free speech might have a bias toward publishing particularly controversial ideas in the interest of freedom of thought” over the interests of good scholarship and sound ethical practice.

via Daily Nous

Related Content:

A New Academic Hoax–Complete with Fake Articles Published in Academic Journals–Ventures to Show the “Corruption” of Cultural Studies

What Are the Most Influential Books Written by Scholars in the Last 20 Years?: Leading Academics Pick “The New Canon”

The 20 Most Influential Academic Books of All Time: No Spoilers

Josh Jones is a writer and musician based in Durham, NC. Follow him at @jdmagness

The Journal of Controversial Ideas, Co-Founded by Philosopher Peter Singer, Will Publish & Defend Pseudonymous Articles, Regardless of the Backlash is a post from: Open Culture. Follow us on Facebook, Twitter, and Google Plus, or get our Daily Email. And don't miss our big collections of Free Online Courses, Free Online Movies, Free eBooksFree Audio Books, Free Foreign Language Lessons, and MOOCs.

Colossal: Symbiotic Assemblages by Amy Gross Combine Animals and Insects with Fictionalized Habitats

South Florida-based artist Amy Gross creates hand-embroidered and beaded fiber sculptures that contain colorful nods to the natural world. Bees dot the surface of a work formed from leaves, honeycomb, and moss, while other works contain kaleidoscopic arrays of birds, mushrooms, and other fungi. Although the sculptures reflect a natural symbiosis, their structures are fictionalized in both their color and composition. None of the elements of her pieces are found objects, but rather each handmade from craft store supplies and objects like yarn, beads, wire, and paper.

“Making objects is my way of turning thought into something solid and real, and in a way, slowing time,” Gross tells Colossal. “I never use anything in my work that was ever alive, I collaborate solely with manufactured materials. They mimic living things but will not wither or die. It’s a very human desire to slow or control disintegration, to try to have a say in a volatile, uncontrollable world of change.”

Gross is included in a group exhibition titled Small Works, Big Impact which opens on November 15, 2018 at Momentum Gallery in Asheville, North Carolina. You can see more of her nature-inspired assemblages on her website.

ScreenAnarchy: Review: RAMPANT Fails to Catch On

The actor-director team behind last year's hit spy action-comedy Confidential Assignment returns with their latest tentpole Rampant, an action-horror that looks to put a period twist on Yeon Sang-ho's runaway 2016 zombie hit Train to Busan. Hyun Bin versus the undead in Joseon Era-regalia may sound like an intriguing proposition, but while this big-budget foray from director Kim Sung-hoon attempts to combine genre thrills with a political allegory, it winds up being both a bloodless zombie tale and a humdrum King's court drama. A rebellion is brewing in the Joseon Kingdom against the King (Kim Eui-sung) and his war minister Kim Ja-joon (Jang Dong-gun). The Crown Prince (Kim Tae-woo), siding with the rebels, summons his brother Ganglim (Hyun Bin), who has been exiled in the...

[Read the whole post on]

LLVM Project Blog: 30% faster Windows builds with clang-cl and the new /Zc:dllexportInlines- flag


In the course of adding Microsoft Visual C++ (MSVC) compatible Windows support to Clang, we worked hard to make sure the dllexport and dllimport declspecs are handled the same way by Clang as by MSVC.

dllexport and dllimport are used to specify what functions and variables should be externally accessible ("exported") from the currently compiled Dynamic-Link Library (DLL), or should be accessed ("imported") from another DLL. In the class declaration below, S::foo() will be exported when building a DLL:

struct __declspec(dllexport) S {
void foo() {}

and code using that DLL would typically see a declaration like this:

struct __declspec(dllimport) S {
void foo() {}

to indicate that the function is defined in and should be accessed from another DLL.

Often the same declaration is used along with a preprocessor macro to flip between dllexport and dllimport, depending on whether a DLL is being built or consumed.

The basic idea of dllexport and dllimport is simple, but the semantics get more complicated as they interact with more facets of the C++ language: templates, inheritance, different kinds of instantiation, redeclarations with different declspecs, and so on. Sometimes the semantics are surprising, but by now we think clang-cl gets most of them right. And as the old maxim goes, once you know the rules well, you can start tactfully breaking them.

One issue with dllexport is that for inline functions such as S::foo() above, the compiler must emit the definition even if it's not used in the translation unit. That's because the DLL must export it, and the compiler cannot know if any other translation unit will provide a definition.

This is very inefficient. A dllexported class with inline members in a header file will cause definitions of those members to be emitted in every translation unit that includes the header, directly or indirectly. And as we know, C++ source files often end up including a lot of headers. This behaviour is also different from non-Windows systems, where inline function definitions are not emitted unless they're used, even in shared objects and dynamic libraries.


To address this problem, clang-cl recently gained a new command-line flag, /Zc:dllexportInlines- (MSVC uses the /Zc: prefix for language conformance options). The basic idea is simple: since the definition of an inline function is available along with its declaration, it's not necessary to import or export it from a DLL — the inline definition can be used directly. The effect of the flag is to not apply class-level dllexport/dllimport declspecs to inline member functions. In the two examples above, it means S::foo() would not be dllexported or dllimported, even though the S class is declared as such.

This is very similar to the -fvisibility-inlines-hidden Clang and GCC flag used on non-Windows. For C++ projects with many inline functions, it can significantly reduce the set of exported functions, and thereby the symbol table and file size of the shared object or dynamic library, as well as program load time.

On Windows however, the main benefit is not having to emit the unused inline function definitions. This means the compiler has to do much less work, and reduces object file size which in turn reduces the work for the linker. For Chrome, we saw 30 % faster full builds, 30 % shorter link times for blink_core.dll, and 40 % smaller total .obj file size.

The reduction in .obj file size, combined with the enormous reduction in .lib files allowed by previously switching linkers to lld-link which uses thin archives, means that a typical Chrome build directory is now 60 % smaller than it would have been just a year ago.

(Some of the same benefit can be had without this flag if the dllexport inline function comes from a pre-compiled header (PCH) file. In that case, the definition will be emitted in the object file when building the PCH, and so is not emitted elsewhere unless it's used.)


Using /Zc:dllexportInlines- is "half ABI incompatible". If it's used to build a DLL, inline members will no longer be exported, so any code using the DLL must use the same flag to not dllimport those members. However, the reverse scenario generally works: a DLL compiled without the flag (such as a system DLL built with MSVC) can be referenced from code that uses the flag, meaning that the referencing code will use the inline definitions instead of importing them from the DLL.

Like -fvisibility-inlines-hidden, /Zc:dllexportInlines- breaks the C++ language guarantee that (even an inline) function has a unique address within the program. When using these flags, an inline function will have a different address when used inside the library and outside.

Also, these flags can lead to link errors when inline functions, which would normally be dllimported, refer to internal symbols of a DLL:

void internal();

struct __declspec(dllimport) S {
void foo() { internal(); }

Normally, references to S::foo() would use the definition in the DLL, which also contains the definition of internal(), but when using /Zc:dllexportInlines-, the inline definition of S::foo() is used directly, resulting in a link error since no definition of internal() can be found.

Even worse, if there is an inline definition of internal() containing a static local variable, the program will now refer to a different instance of that variable than in the DLL:

inline int internal() { static int x; return x++; }

struct __declspec(dllimport) S {
int foo() { return internal(); }

This could lead to very subtle bugs. However, since Chrome already uses -fvisibility-inlines-hidden, which has the same potential problem, we believe this is not a common issue.


/Zc:dllexportInlines- is like -fvisibility-inlines-hidden for DLLs and significantly reduces build times. We're excited that using Clang on Windows allows us to benefit from new features like this.

More information

For more information, see the User's Manual for /Zc:dllexportInlines-.

The flag was added in Clang r346069, which will be part of the Clang 8 release expected in March 2019. It's also available in the Windows Snapshot Build.


/Zc:dllexportInlines- was implemented by Takuto Ikuta based on a prototype by Nico Weber.

Open Culture: 7 Tips From Ernest Hemingway on How to Write Fiction


Image by Lloyd Arnold via Wikimedia Commons

Before he was a big game hunter, before he was a deep-sea fisherman, Ernest Hemingway was a craftsman who would rise very early in the morning and write. His best stories are masterpieces of the modern era, and his prose style is one of the most influential of the 20th century.

Hemingway never wrote a treatise on the art of writing fiction.  He did, however, leave behind a great many passages in letters, articles and books with opinions and advice on writing. Some of the best of those were assembled in 1984 by Larry W. Phillips into a book, Ernest Hemingway on Writing.

We've selected seven of our favorite quotations from the book and placed them, along with our own commentary, on this page. We hope you will all--writers and readers alike--find them fascinating.

1: To get started, write one true sentence.

Hemingway had a simple trick for overcoming writer's block. In a memorable passage in A Moveable Feast, he writes:

Sometimes when I was starting a new story and I could not get it going, I would sit in front of the fire and squeeze the peel of the little oranges into the edge of the flame and watch the sputter of blue that they made. I would stand and look out over the roofs of Paris and think, "Do not worry. You have always written before and you will write now. All you have to do is write one true sentence. Write the truest sentence that you know." So finally I would write one true sentence, and then go on from there. It was easy then because there was always one true sentence that I knew or had seen or had heard someone say. If I started to write elaborately, or like someone introducing or presenting something, I found that I could cut that scrollwork or ornament out and throw it away and start with the first true simple declarative sentence I had written.

2: Always stop for the day while you still know what will happen next.

There is a difference between stopping and foundering. To make steady progress, having a daily word-count quota was far less important to Hemingway than making sure he never emptied the well of his imagination. In an October 1935 article in Esquire "Monologue to the Maestro: A High Seas Letter") Hemingway offers this advice to a young writer:

The best way is always to stop when you are going good and when you know what will happen next. If you do that every day when you are writing a novel you will never be stuck. That is the most valuable thing I can tell you so try to remember it.

3: Never think about the story when you're not working.

Building on his previous advice, Hemingway says never to think about a story you are working on before you begin again the next day. "That way your subconscious will work on it all the time," he writes in the Esquire piece. "But if you think about it consciously or worry about it you will kill it and your brain will be tired before you start." He goes into more detail in A Moveable Feast:

When I was writing, it was necessary for me to read after I had written. If you kept thinking about it, you would lose the thing you were writing before you could go on with it the next day. It was necessary to get exercise, to be tired in the body, and it was very good to make love with whom you loved. That was better than anything. But afterwards, when you were empty, it was necessary to read in order not to think or worry about your work until you could do it again. I had learned already never to empty the well of my writing, but always to stop when there was still something there in the deep part of the well, and let it refill at night from the springs that fed it.

4: When it's time to work again, always start by reading what you've written so far.

T0 maintain continuity, Hemingway made a habit of reading over what he had already written before going further. In the 1935 Esquire article, he writes:

The best way is to read it all every day from the start, correcting as you go along, then go on from where you stopped the day before. When it gets so long that you can't do this every day read back two or three chapters each day; then each week read it all from the start. That's how you make it all of one piece.

5: Don't describe an emotion--make it.

Close observation of life is critical to good writing, said Hemingway. The key is to not only watch and listen closely to external events, but to also notice any emotion stirred in you by the events and then trace back and identify precisely what it was that caused the emotion. If you can identify the concrete action or sensation that caused the emotion and present it accurately and fully rounded in your story, your readers should feel the same emotion. In Death in the Afternoon, Hemingway writes about his early struggle to master this:

I was trying to write then and I found the greatest difficulty, aside from knowing truly what you really felt, rather than what you were supposed to feel, and had been taught to feel, was to put down what really happened in action; what the actual things were which produced the emotion that you experienced. In writing for a newspaper you told what happened and, with one trick and another, you communicated the emotion aided by the element of timeliness which gives a certain emotion to any account of something that has happened on that day; but the real thing, the sequence of motion and fact which made the emotion and which would be as valid in a year or in ten years or, with luck and if you stated it purely enough, always, was beyond me and I was working very hard to get it.

6: Use a pencil.

Hemingway often used a typewriter when composing letters or magazine pieces, but for serious work he preferred a pencil. In the Esquire article (which shows signs of having been written on a typewriter) Hemingway says:

When you start to write you get all the kick and the reader gets none. So you might as well use a typewriter because it is that much easier and you enjoy it that much more. After you learn to write your whole object is to convey everything, every sensation, sight, feeling, place and emotion to the reader. To do this you have to work over what you write. If you write with a pencil you get three different sights at it to see if the reader is getting what you want him to. First when you read it over; then when it is typed you get another chance to improve it, and again in the proof. Writing it first in pencil gives you one-third more chance to improve it. That is .333 which is a damned good average for a hitter. It also keeps it fluid longer so you can better it easier.

7: Be Brief.

Hemingway was contemptuous of writers who, as he put it, "never learned how to say no to a typewriter." In a 1945 letter to his editor, Maxwell Perkins, Hemingway writes:

It wasn't by accident that the Gettysburg address was so short. The laws of prose writing are as immutable as those of flight, of mathematics, of physics.

Follow Open Culture on Facebook and Twitter and share intelligent media with your friends. Or better yet, sign up for our daily email and get a daily dose of Open Culture in your inbox. 

If you'd like to support Open Culture and our mission, please consider making a donation to our site. It's hard to rely 100% on ads, and your contributions will help us provide the best free cultural and educational materials.

Note: An earlier version of this post appeared on our site in February 2013.

Related content:

Writing Tips by Henry Miller, Elmore Leonard, Margaret Atwood, Neil Gaiman & George Orwell

Ernest Hemingway Creates a Reading List for a Young Writer (1934)

18 (Free) Books Ernest Hemingway Wished He Could Read Again for the First Time

James Joyce Picked Drunken Fights, Then Hid Behind Ernest Hemingway

Find Courses on Hemingway and Other Authors in our big list of Free Online Courses

7 Tips From Ernest Hemingway on How to Write Fiction is a post from: Open Culture. Follow us on Facebook, Twitter, and Google Plus, or get our Daily Email. And don't miss our big collections of Free Online Courses, Free Online Movies, Free eBooksFree Audio Books, Free Foreign Language Lessons, and MOOCs.


John Brosio (previously featured here).

John Brosio



John Brosio



John Brosio



John Brosio



John Brosio



John Brosio



John Brosio



John Brosio



John Brosio



John Brosio



John Brosio



John Brosio’s Website

John Brosio on Instagram

John Brosio / Arcadia Contemporary



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Antonio Segura Donat



Dulk’s Website

Dulk on Instagram

Dulk / Thinkspace


Recent work by artist Peter Köhler. See more images below. Courtesy of Galleri Magnus Karlsson.

Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler



Peter Köhler











Peter Köhler’s Website

Peter Köhler on Instagram

Peter Köhler / Galleri Magnus Karlsson

Planet Haskell: Holden Karau: Validating Big Data Jobs - Stopping Failures before Production (w/ Spark, BEAM, & friends!) @ Big Data Spain

Come join me on Wednesday 14 November @ 14:05 at Big Data Spain 2018 Madrid, Spain for Validating Big Data Jobs - Stopping Failures before Production (w/ Spark, BEAM, & friends!).I'll update this post with the slides soon.Come see to the talk or comment bellow to join in the discussion :).Talk feedback is appreciated at

Planet Haskell: Holden Karau: A Basic Introduction to PySpark Dataframes by exploring ASF Gender Diversity Data - workshop @ @pyconca

Thanks for joining us (@holdenkarau,@math_foo) on 2018-11-10 at @pyconca 2018 Toronto, ON, Canada for A Basic Introduction to PySpark Dataframes by exploring ASF Gender Diversity Data - workshop.

You can find the code for this talk at slides are at is a related video you might want to check out.

<iframe allow="autoplay; encrypted-media" allowfullscreen="allowfullscreen" frameborder="0" height="315" src=";t=12s" width="560"></iframe>Comment bellow to join in the discussion :).Talk feedback is appreciated at

Planet Haskell: Holden Karau: Big Data w/Python on Kubernetes (PySpark on K8s) @ Big Data Spain

Come join me on Thursday 15 November @ 16:10 for Big Data w/Python on Kubernetes (PySpark on K8s).I'll update this post with the slides soon.Come see to the talk or comment bellow to join in the discussion :).Talk feedback is appreciated at

ScreenAnarchy: REVIEW: Abe & Phil's Last Poker Game deals a wonderful hand for both the realities of the aging process and Martin Landau's final performance

Seldom does a contemporary film capture the true spirit of the aging process and delve into the delicate psyche of mature people coping with the loss of self-independence. In writer-director Howard L. Weiner's affecting dramedy Abe & Phil's Last Poker Game he explores the journey of human dignity through the confines of advanced age and sickness through a couple of facility-bound old timers from different walks of life that end up securing an unlikely friendship. Weiner's Abe & Phil's Last Poker Game is his feature film debut and it is an impressive, nuanced drama that tugs at the heartstrings in witty, poignant fashion. Importantly, Weiner's (a highly noted neurologist with a directorial documentary credit entitled "What is Life? The Movie) gracefully winning exposition marks the final big-screen performance...

[Read the whole post on]

Open Culture: The Art of Letterlocking: The Elaborate Folding Techniques That Ensured the Privacy of Handwritten Letters Centuries Ago

Occasionally and with diminishing frequency, we still lament the lost art of letter-writing, mostly because of the degradation of the prose style we use to communicate with one another. But writing letters, in its long heyday, involved much more than putting words on paper: there were choices to be made about the pen, the ink, the stamp, the envelope, and before the envelope, the letterlocking technique. Though recently coined, the term letterlocking describes an old and varied practice, that of using one or several of a suite of physical methods to ensure that nobody reads your letter but its intended recipient — and if someone else does read it, to show that they have.

"To seal a modern-day envelope (on the off chance you’re sealing an envelope at all), it takes a lick or two, at most," writes Atlas Obscura's Abigail Cain. Not so for the likes of Mary Queen of Scots or Machiavelli: "In those days, letters were folded in such a way that they served as their own envelope. Depending on your desired level of security, you might opt for the simple, triangular fold and tuck; if you were particularly ambitious, you might attempt the dagger-trap, a heavily booby-trapped technique disguised as another, less secure, type of lock."

Beginning with "the spread of flexible, foldable paper in the 13th century" and ending around "the invention of the mass-produced envelope in the 19th century," letterlocking "fits into a 10,000-year history of document security — one that begins with clay tablets in Mesopotamia and extends all the way to today’s passwords and two-step authentication."

We know about letterlocking today thanks in large part to the efforts of Jana Dambrogio, Thomas F. Peterson Conservator at MIT Libraries. According to MIT News' Heather Denny, Dambrogio first got into letterlocking (and far enough into it to come up with that term herself) "as a fellow at the Vatican Secret Archives," previously featured here on Open Culture. "In the Vatican’s collection she discovered paper letters from the 15th and 16th centuries with unusual slits and sliced-off corners. Curious if the marks were part of the original letter, she discovered that they were indications the letters had originally been locked with a slice of paper stabbed through a slit, and closed with a wax seal."

She and her collaborator Daniel Starza Smith have spent years trying to reconstruct the many variations on that basic method used by letter-writers of old, and you can see one of them, which Mary Queen of Scots used to lock her final letter before her execution, in the video at the top of the post.

Though we in the age of round-the-world, round-the-clock instant messaging — an age when even e-mail feels increasingly quaint — may find this impressively elaborate, we won't have even begun to grasp the sheer variety of letterlocking experience until we explore the letterlocking Youtube channel. Its videos include demonstrations of techniques historically used in EnglandItaly, AmericaEast Asia, and elsewhere, some of them practiced by notables both real and imagined. Tempting though it is to imagine a direct digital-security equivalent of all this today, humanity seems to have changed since the era of letterlocking: as the aphorist Aaron Haspel put it, "We can have privacy or we can have convenience, and we choose convenience, every time."

via Atlas Obscura

Related Content:

Lewis Carroll’s 8 Still-Relevant Rules For Letter-Writing

6,000 Letters by Marcel Proust to Be Digitized & Put Online

Jane Austen Writes a Letter to Her Sister While Hung Over: “I Believe I Drank Too Much Wine Last Night”

How to Jumpstart Your Creative Process with William S. Burroughs’ Cut-Up Technique

How the Mysteries of the Vatican Secret Archives Are Being Revealed by Artificial Intelligence

Based in Seoul, Colin Marshall writes and broadcasts on cities, language, and culture. His projects include the book The Stateless City: a Walk through 21st-Century Los Angeles and the video series The City in Cinema. Follow him on Twitter at @colinmarshall or on Facebook.

The Art of Letterlocking: The Elaborate Folding Techniques That Ensured the Privacy of Handwritten Letters Centuries Ago is a post from: Open Culture. Follow us on Facebook, Twitter, and Google Plus, or get our Daily Email. And don't miss our big collections of Free Online Courses, Free Online Movies, Free eBooksFree Audio Books, Free Foreign Language Lessons, and MOOCs.

things magazine: It’s all connected, in the least conspiratorial way possible

Grim but essential: Everyday Plastic: ‘The UK throws away over 295 billion pieces of plastic every year’ (via the Guardian) / Darkest London, a weblog about history and the past / Concrete jungle: How Italy’s modern ruins became art. A … Continue reading

OCaml Planet: Parser Construction With Menhir: A Couple Appetizers

This post is a shameless advertisement for Menhir, a parser generator for OCaml. It illustrates Menhir’s new input syntax, which was introduced on November 13, 2018. The code fragments shown below are excerpts of valid .mly files.


Suppose I would like to parse and evaluate our good old friends, the arithmetic expressions. For instance, the string "(3 + 4) * 5 - 9" should be accepted and evaluated to the value 26.

I assume that I have a lexical analyzer that can chop up this string into a stream of basic tokens, or terminal symbols. My alphabet of terminal is the following:

%token<int> INT

Based on this alphabet, I wish to define the syntax of (and obtain a parser for) arithmetic expressions. This exercise may seem old and tired, but let me try and see if I can add some new spice and style to it. In fact, let me do it twice, in two slightly different ways.

So, how would you like your arithmetic expressions cooked?

First Flavor: Hot Off the Oven, With On-The-Fly Evaluation

In this first demo, I wish to evaluate an arithmetic expression, that is, find out which integer value it represents. Thus, I am eventually interested in just an integer result.

%start<int> main

I wish to recognize an expression followed with an end-of-line symbol:

let main :=
  ~ = expr; EOL; <>

Here, ~ = expr is a pun, a shorthand for expr = expr. It can be read as follows: “read an expression; evaluate it; let the variable expr stand for its value”.

<> is a point-free semantic action. In general, it is a shorthand for a semantic action that builds a tuple of the variables that have been bound earlier in the sequence. Thus, in this case, it is a shorthand for the semantic action { expr }.

It is now time to define expr and thereby describe the syntax and the meaning of arithmetic expressions. To do this in a nonambiguous manner, one of several traditional approaches is to stratify the syntax in several levels, namely additive expressions, multiplicative expressions, and atomic expressions. These levels are also traditionally known as expressions, terms, and factors.

The topmost level is the level of additive expressions. In other words, an expression is just an additive expression:

let expr ==

This definition has no runtime cost: it makes expr a synonym for additive_expr. In traditional Menhir speak, expr is an %inline nonterminal symbol.

This definition introduces a useful level of indirection: if in the future I decide to introduce a new level in the syntax of expressions, all I have to do is update the definition of expr; the places where expr is used do not need to be updated. In other words, the fact that “an expression is just an additive expression” is an implementation detail, and should not be revealed.

An additive expression is a nonempty, left-associative list of multiplicative expressions, separated with additive operators:

let additive_expr ==
  fold_left(additive_op, multiplicative_expr)

What does this mean? Well, quite obviously, the additive operators are PLUS and MINUS, which respectively denote addition or subtraction:

let additive_op ==
  | PLUS;  { ( + ) }
  | MINUS; { ( - ) }

Furthermore, a nonempty list of elements elem separated by operators op is: either a single element; or a (smaller) such list, followed with an operator, followed with an element. In the second case, the operator must be applied to the sum of the left-hand list and to the right-hand element:

let fold_left(op, elem) :=
  | elem
  | sum = fold_left(op, elem); ~ = op; ~ = elem; { op sum elem }

This is a parameterized definition. Because this definition is recursive, it cannot be macro-expanded away: we cannot use == and must instead use :=.

So much for additive expressions. This scheme can now be reproduced, one level down: a multiplicative expression is a nonempty, left-associative list of atomic expressions, separated with multiplicative operators.

let multiplicative_expr ==
  fold_left(multiplicative_op, atomic_expr)

let multiplicative_op ==
  | TIMES; { ( * ) }
  | DIV;   { ( / ) }

There remains to define atomic expressions. In this demo, I wish to allow the use of MINUS as a unary operator. Thus, an atomic expression shall be one of the following: an integer literal; an arbitrary expression between parentheses; or an application of a unary operator to an atomic expression.

let atomic_expr :=
  | INT
  | delimited(LPAREN, expr, RPAREN)
  | app(unary_op, atomic_expr)

There is just one unary operator, MINUS, whose meaning is integer negation:

let unary_op ==
  | MINUS; { (~- ) }

There remains to explain delimited(left, x, right) and app(f, x). My main motivation for introducing these auxiliary parameterized symbols is to make the definition of atomic_expr prettier.

delimited(left, x, right) is in fact part of Menhir’s standard library, where it is defined as follows:

%public let delimited(left, x, right) ==
  left; ~ = x; right; <>

app(f, x) recognizes the sequence f; x. Its value is the application of the value of f to the value of x. It is defined as follows:

let app(f, x) ==
  ~ = f; ~ = x; { f x }

At this point, the arithmetic-expression parser-and-evaluator is complete.

Menhir accepts it without complaining, which means that this grammar is in the class LR(1), therefore is unambiguous. From it, Menhir generates an LR(1) parser, a deterministic pushdown automaton, whose performance is predictable: provided each semantic action takes constant time, its time complexity is linear in the size of the input. Compared with other parsing techniques, guaranteed unambiguity and efficiency are two important strengths of LR(1) parsers.

Second Flavor: As An Abstract-Syntax-and-Location Millefeuille

Let me now be more ambitious. Instead of evaluating arithmetic expressions on the fly, let me build Abstract Syntax Trees. This opens the door to all kinds of symbolic computation: compilation down to native code, simplification, automatic differentiation, and so on.

In a separate file, say, I define the types of the ASTs that I wish to build:

type unop =
  | OpNeg

type binop =
  | OpPlus | OpMinus | OpTimes | OpDiv

type 'a located =
  { loc: Lexing.position * Lexing.position; value: 'a }

type expr =
  raw_expr located

and raw_expr =
| ELiteral of int
| EUnOp of unop * expr
| EBinOp of expr * binop * expr

The types unop and binop are simple enumerated types.

In the definition of the type raw_expr, one recognizes three kinds of expressions: integer literals, applications of unary operators, and applications of binary operators. There is no data constructor for expressions in parentheses: although parentheses are a necessary feature of the concrete syntax, there is no need to record them in the abstract syntax.

In an abstract syntax tree, I would like every subtree to be annotated with its location in the input text. This would be important, in a real-world programming language implementation, in order to produce error messages carry a source code location.

To achieve this, I use a traditional technique: I define two types, expr and raw_expr, in a mutually recursive manner. An expression is a raw expression annotated with a location (a pair of a start position and an end position). A raw expression is an integer literal, an application of a unary operator to an expression, or an application of a binary operator to two expressions. Thus, like a cake, an abstract syntax tree has layered structure: one layer of location information, one layer of structural information, one layer of location information, one layer of structural information, and so on.

Let me now move on to the description of the parser. This time, I am eventually interested in producing an abstract syntax tree.

%start<Syntax.expr> main
%{ open Syntax %}

The first few definitions are unchanged:

let main :=
  ~ = expr; EOL; <>

let expr ==

This time around, I won’t use a generic definition along the lines of fold_left(op, elem). It can be done, though; this is left as an exercise for the reader! Here is a direct definition of additive expressions:

let additive_expr :=
  | multiplicative_expr
  | located(
      ~ = additive_expr; ~ = additive_op; ~ = multiplicative_expr; <EBinOp>

let additive_op ==
  | PLUS;  { OpPlus }
  | MINUS; { OpMinus }

In short, an additive expression is either a multiplicative expression, or an additive expression followed with an additive operator followed with a multiplicative expression.

In the second production, I use three ~ patterns in order to avoid the chore of naming the three semantic values. I again use a point-free semantic action: <EBinOp> means that the data constructor EBinOp should be applied to a tuple of the three semantic values. At the cost of greater verbosity, one could equivalently write e1 = additive_expr; op = additive_op; e2 = multiplicative_expr; { EBinOp (e1, op, e2) }.

Now, EBinOp(e1, op, e2) has type raw_expr, but I would like the semantic value of the nonterminal symbol additive_expr to have type expr. Therefore, I need to wrap this semantic value in a record of type raw_expr located. This can be done in a lightweight and elegant manner just by wrapping the second production with located(...), where the parameterized nonterminal symbol located(x) is defined once and for all as follows:

let located(x) ==
  ~ = x; { { loc = $loc; value = x } }

located(x) recognizes the same input as x, and wraps the semantic value of type 'a produced by x in a record of type 'a located.

One level down, multiplicative expressions are described via the same pattern:

let multiplicative_expr :=
  | atomic_expr
  | located(
      ~ = multiplicative_expr; ~ = multiplicative_op; ~ = atomic_expr; <EBinOp>

let multiplicative_op ==
  | TIMES; { OpTimes }
  | DIV;   { OpDiv }

Finally, as earlier, an atomic expression is one of: an expression between parentheses; an integer literal; an application of a unary operator to an atomic expression.

let atomic_expr :=
  | LPAREN; ~ = expr; RPAREN; <>
  | located(
    | ~ = INT; <ELiteral>
    | ~ = unary_op; ~ = atomic_expr; <EUnOp>

let unary_op ==
  | MINUS; { OpNeg }

Only the last two cases in the definition of atomic_expr are wrapped in located(...): in the first case, this is not necessary, as the expression already carries a location. Things are formulated in such a way that the computed locations are tight: the source code range associated with a parenthesized subexpression does not include the parentheses. One could of course easily adopt the reverse convention: this is left as another exercise for the reader!

Behind The Scenes, Or: In The Kitchen

If one expands away all symbols introduced by ==, expands away all parameterized symbols, and strips away all semantic actions, one finds that the two descriptions presented above represent the same LR(1) grammar, therefore give rise to the same deterministic pushdown automaton.

This bare-bones grammar is printed by menhir --only-preprocess-u, a useful inspection tool. It is printed in Menhir’s traditional syntax. Once manually translated to the modern syntax used in this article, it is as follows:

%start<unit> main


let main :=
  additive_expr; EOL

let additive_expr :=
| multiplicative_expr
| additive_expr; PLUS; multiplicative_expr
| additive_expr; MINUS; multiplicative_expr

let multiplicative_expr :=
| atomic_expr
| multiplicative_expr; TIMES; atomic_expr
| multiplicative_expr; DIV; atomic_expr

let atomic_expr :=
| LPAREN; additive_expr; RPAREN
| MINUS; atomic_expr

Spilling the Sauce: A Syntax Error

Suppose my fingers slip, and I make a syntax error in my grammar description:

let main :=
  ~ = expr; EOL; <>;

Not to worry. Menhir’s parser for .mly files is a Menhir-generated parser, and produces reasonable syntax error messages. Here, the semicolon that follows the semantic action is invalid:

File "parser.mly", line 30, characters 19-20:
Error: syntax error after '<>' and before ';'.
At this point, one of the following is expected:
a bar '|' followed with an expression, or
another rule.

Yes, LR(1) parsers can produce good syntax error messages.


The full source code of the first demo and the second demo is available online.

A summary of the changes between the old and new syntaxes is also available.

The syntax of Menhir is of course also documented in the reference manual. Comic for 2018.11.14

New Cyanide and Happiness Comic

Planet Haskell: Michael Snoyman: Crates and more iterators - Rust Crash Course lesson 4 - exercise solutions

Below are the solutions to the exercises from the last Rust Crash Course lesson, “Crates, I/O, and more iterators.”

This post is part of a series based on teaching Rust at FP Complete. If you’re reading this post outside of the blog, you can find links to all posts in the series at the top of the introduction post. You can also subscribe to the RSS feed.

Exercise 1

You can find my complete solution as a Github Gist. If your solution looks a bit different than mine, don’t worry. Also, see if there’s anything interesting you can learn from my implementation, or some improvements you’d like to make to it.

Exercise 2

struct TheAnswer;

impl Iterator for TheAnswer {
    type Item = u32;

    fn next(&mut self) -> Option<u32> {

Exercise 3

Let’s start with the simpler solution:

struct Fibs {
    x: u32,
    y: u32,

fn fibs() -> Fibs {
    Fibs {
        x: 0,
        y: 1,

impl Iterator for Fibs {
    type Item = u32;

    fn next(&mut self) -> Option<u32> {
        let orig_x = self.x;
        let orig_y = self.y;

        self.x = orig_y;
        self.y = orig_x + orig_y;


fn main() {
    for i in fibs().take(10) {
        println!("{}", i);

However, if you bump that take(10) to take(47), the end of your output will look like:

thread 'main' panicked at 'attempt to add with overflow',
note: Run with `RUST_BACKTRACE=1` for a backtrace.

One solution would be to bump to a u64, but that’s just delaying the problem. Instead, we can use Rust’s checked addition method:

fn next(&mut self) -> Option<u32> {
    let orig_x = self.x;
    let orig_y = self.y;

    match orig_x.checked_add(orig_y) {
        // overflow
        None => None,

        // no overflow
        Some(new_y) => {
            self.x = orig_y;
            self.y = new_y;


Now our stream will stop as soon as overflow occurs.

If you want to get really advanced here, you could actually output two more values. To do so, we need to assign to a derefenced value and use an enum to track our state:

fn next(&mut self) -> Option<u32> {
    use Fibs::*;
    match *self {
        Done => None,
        OneLeft(x) => {
            *self = Done;
        Running(orig_x, orig_y) => {
            *self = match orig_x.checked_add(orig_y) {
                // overflow
                None => OneLeft(orig_y),
                Some(new_y) => Running(orig_y, new_y),


Exercise 4

impl<I> Iterator for Doubler<I>
    I: Iterator,
    I::Item: std::ops::Add<Output=I::Item> + Copy,
    type Item = I::Item;
    fn next(&mut self) -> Option<Self::Item> {
        match {
            None => None,
            Some(x) => Some(x + x),

Exercise 5

The fold method takes two parameters: the initial value, and a function for adding the running total with the next value. One approach using closures is:

fn main() {
    let res = (1..11).fold(0, |x, y| x + y);
    println!("{}", res);

Another approach is to directly refer to the addition function. Remember how there was a Mul trait for the * operator? There’s also an Add trait for addition:

fn main() {
    let res = (1..11).fold(0, std::ops::Add::add);
    println!("{}", res);

As for writing our own sum function: we’ll end up back in the situation where things are generic and we have to provide appropriate traits. We’ll follow a similar approach with using From and a u8:

fn sum<I>(iter: I) -> I::Item
    I: Iterator,
    I::Item: std::ops::Add<Output=I::Item> + From<u8>,
    iter.fold(From::from(0u8), std::ops::Add::add)

Rust at FP Complete | Introduction

Planet Haskell: Mark Jason Dominus: Counting paths through polyhedra

A while back someone asked on math stack exchange how many paths there were of length from one vertex of a dodecahedron to the opposite vertex. The vertices are distance 5 apart, so for the answer is zero, but the paths need not be simple, so the number grows rapidly with ; there are 58 million paths of length 19.

This is the kind of thing that the computer answers easily, so that's where I started, and unfortunately that's also where I finished, saying:

I'm still working out a combinatorial method of calculating the answer, and I may not be successful.

Another user reminded me of this and I took another whack at it. I couldn't remember what my idea had been last year, but my idea this time around was to think of the dodecahedron as the Cayley graph for a group, and then the paths are expressions that multiply out to a particular group element.

I started by looking at a tetrahedron instead of at a dodecahedron, to see how it would work out. Here's a tetrahedron.

Let's say we're counting paths from the center vertex to one of the others, say the one at the top. (Tetrahedra don't have opposite vertices, but that's not an important part of the problem.) A path is just a list of edges, and each edge is labeled with a letter , , or . Since each vertex has exactly one edge with each label, every sequence of 's, 's, and 's represents a distinct path from the center to somewhere else, although not necessarily to the place we want to go. Which of these paths end at the bottom vertex?

The edge labeling I chose here lets us play a wonderful trick. First, since any edge has the same label at both ends, the path always ends at the same place as , because the first goes somewhere else and then the second comes back again, and similarly and also go to the same place. So if we have a path that ends where we want, we can insert any number of pairs or and the new path will end at the same place.

But there's an even better trick available. For any starting point, and any letters and , the path always ends at the same place as . For example, if we start at the middle and follow edge , then , we end at the lower left; similarly if we follow edge and then we end at the same place, although by a different path.

Now suppose we want to find all the paths of length 7 from the middle to the top. Such a path is a sequence of a's, b's, and c's of length 7. Every such sequence specifies a different path out of the middle vertex, but how can we recognize which sequences end at the top vertex?

Since always goes to the same place as , the order of the seven letters doesn't matter. A complicated-seeming path like abacbcb must go to the same place as , the same path with the letters in alphabetical order. And since always goes back to where it came from, the path does to the same place as

Since the paths we want are those that go to the same place as the trivial path , we want paths that have an even number of s and s and an odd number of s. Any path fitting that description will go to same place as , which is the top vertex. It's easy to enumerate such paths:

How many?

Here something like “cccbbbb” stands for all the paths that have three c's and four b's, in some order; there are possible orders, so 35 paths of this type. If we wanted to consider paths of arbitrary length, we could use Burnside's lemma, but I consider the tetrahedron to have been sufficiently well solved by the observations above (we counted 547 paths by hand in under 60 seconds) and I don't want to belabor the point.

Okay! Easy-peasy!

Now let's try cubes:

Here we'll consider paths between two antipodal vertices in the upper right and the lower left, which I've colored much darker gray than the other six vertices.

The same magic happens as in the tetrahedron. No matter where we start, and no matter what and are, the path always gets us to the same place as . So again, if some complicated path gets us where we want to go, we can permute its components into any order and get a different path of the same langth to the same place. For example, starting from the upper left, bcba, abcb, and abbc all go to the same place.

And again, because always make a trip along one edge and then back along the same edge, it never goes anywhere. So the three paths in the previous paragraph also go to the same place as ac and ca and also aa bcba bb aa aa aa aa bb cc cc cc bb.

We want to count paths from one dark vertex to the other. Obviously abc is one such, and so too must be bac, cba, acb, and so forth. There are six paths of length 3.

To get paths of length 5, we must insert a pair of matching letters into one of the paths of length 3. Without loss of generality we can assume that we are inserting aa. There are 20 possible orders for aaabc, and three choices about which pair to insert, for a total of 60 paths.

To get paths of length 7, we must insert two pairs. If the two pairs are the same, there are possible orders and 3 choices about which letters to insert, for a total of 126. If the two pairs are different, there are possible orders and again 3 choices about which pairs to insert, for a total of 420, and a grand total of paths of length 7. Counting the paths of length 9 is almost as easy. For the general case, again we could use Burnside's lemma, or at this point we could look up the unusual sequence in OEIS and find that the number of paths of length is already known to be .

So far this technique has worked undeservedly well. The original problem wanted to use it to study paths on a dodecahedron. Where, unfortunately, the magic property doesn't hold. It is possible to label the edges of the dodecahedron so that every sequence of labels determines a unique path:

but there's nothing like . Well, nothing exactly like it. is equivalent to , and here instead we have . I'm not sure that helps. I will probably need another idea.

The method fails similarly for the octahedron — which is good, because I can use the octahedron as a test platform to try to figure out a new idea. On an octahedron we need to use four kinds of labels because each vertex has four edges emerging from it:

Here again we don't have but we do have . So it's possible that if I figure out a good way to enumerate paths on the octahedron I may be able to adapt the technique to the dodecahedron. But the octahedron will be times easier.

Viewed as groups, by the way, these path groups are all examples of Coxeter groups. I'm not sure this is actually a useful observation, but I've been wanting to learn about Coxeter groups for a long time and this might be a good enough excuse.

explodingdog: Photo

Quiet Earth: 80s B-Horror Nostalgia Looms Heavy in BLOODY BALLET [Review]

Finding creative ways to sell a movie with no name stars and an unknown director can be difficult and often, a shorthand is to compare a movie to something with name recognition. In the case of Brett Mullen's feature film debut Bloody Ballet, the comparisons being made are to Suspiria, likely because both movies feature dancers, but the two movies are so far removed from each other in both theme and style that the comparison feels more like a detriment than a help.

Bloody Ballet tells the story of Adriana, a ballerina with a tormented past. When she lands the lead role in the Nutcracker, her carefully curated world begins to fall apart. The dark memories of her parent's death begin to wreak havoc on her psyche, members of her dance company turn up dead in the same [Continued ...]

Quiet Earth: Luc Besson Plans a Heist in AMERICAN RENEGADES [Trailer]

It was only a matter of time before someone remade Three Kings. Admittedly, this isn't technically a remake of anything since it's a pretty different story but the concept is the same: a group of military guys break all the rules to make themselves rich.

Co-written by Richard Wenk and Luc Besson, American Renegades unfolds in 1995 Bosnia with a team of Navy SEALS who decide they're going to dive into a Bosnian Lake, in the middle of a war, to recover $300 million dollars in gold stolen by the Nazi's during WWII and thought to be submerged in a town which was purposefully flooded.

Basically, it's just a lot of backstory to set-up a bunch of military guys trying to get rich during a war.

American Renegades stars Sullivan Stapleton, Charlie Bewley and J.K. [Continued ...]

ScreenAnarchy: Blu-ray Review: Criterion's THE PRINCESS BRIDE Whiffs On New Features, But You're Going To Buy It Anyway

Perhaps the worst confession I could make at the top of this review of Criterion's glittery new Blu-ray release of Rob Reiner's The Princess Bride (spine #948) is to offer up the fact that I haven't seen the movie, or cared to see it, since I was a kid. When I was a kid, I loved it. It ranked with Back to the Future as one of the all-time great theatrical screenings of my 1980s filmgoing. I came out of that movie floating on an excited cloud, and spent the entire car ride home propulsively jibbering to my cousin/best friend about every single thing we had just seen in the movie we had just watched. I saw it a bunch more times as a teenager...

[Read the whole post on]

Colossal: Solstice: A Wooden Kinetic Clock Expands and Contracts with the Passing Hours

Solstice is a shape-shifting wooden clock designed by Matt Gilbert of the London-based studio Animaro. The new interior design object presents different configurations throughout the day, expanding to its widest form at noon when the sun is at its highest point, and contracting at 6 PM when the sun is near its lowest. This meditative movement was inspired by nature, specifically how a flower expands its petals to absorb more sunlight. The clock also is a return to our time-based roots, as its design has users rely on its shape and pattern much like we would a sundial.

The clock has two settings, one that completes a rotation every 60 seconds, and one that completes a rotation during a 12-hours cycle. To switch between the two modes, the user taps on a sensor located on the bottom of the clock. The Solstice clock is currently available for pre-order on Kickstarter. The crowdfunding campaign runs through December 13, 2018. You can see more of Animaro’s previous designs on their website and Instagram. (via Colossal Submissions)

Open Culture: A Map of the U.S. Created Out of 1,000 Song Titles That Reference Cities, States, Landmarks & More

According to Leonard Cohen, songwriting is a lonely business, but there’s nothing for it, he sings in “Tower of Song,” when you’re “born with the gift of a golden voice" and when “twenty-seven angels from the Great Beyond” tie you to a table and make you write. Just where is Cohen’s tower? Maybe Montreal, his hometown, or his adopted city of L.A.? He doesn’t tell us, though we do know Hank Williams lives 100 floors above, so there's a good chance that it's not a place on earth.

Cohen the poet had a gift for making metaphysical trips seem perfectly natural, but most songwriters, lonely or otherwise, rely on more realist conventions of narrative storytelling, including specific settings, whether mentioned in passing or forming a central theme.

Songs like "Little Old Lady from Pasadena," “Rockaway Beach,” “Don’t Go Back to Rockville,” or “Straight Outta Compton” helped put their respective locales on the map.

Design house Dorothy has taken that phrase literally, creating a map of the U.S. “made up entirely from the titles of over 1,000 songs” that “reference states, cities, rivers, mountains and landmarks.” In the playlist below, you can listen to the country’s geography, as sung by Lynyrd Skynyrd, David Bowie, R.E.M., Pink Floyd, George Strait, Kings of Leon, Jay Z,  Johnny Cash, Miles Davis, Joan Baez, and hundreds more artists who have little in common other than their use of a U.S. city, state, landmark, natural formation, etc. as an anchor for their lyrics.

Like Homer’s Iliad, which maps the ancient Greek world with its copious references to ports, cities, mountains, and so on, the pop canon could be used by some future civilization to reconstruct the geography of the U.S. And if so, it might look quite a lot like this. But not only does the map situate well-known songs about well-known places in their proper coordinates, it also locates somewhat obscure locations name-checked  in songs like The Band’s “The Weight,” whose mention of Nazareth refers not to the Biblical town, but rather to Nazareth, Pennsylvania, home of Martin Guitars. (The city gets another boost, though not on this map, in Mark Knopfler’s “Speedway at Nazareth,” which refers to another local landmark.)

“Some of our favorite song choices are the ones which require you to think a little harder about connections,” Dorothy admits, “such as ‘Space Oddity’ (David Bowie) which signposts Cape Canaveral, ‘After the Gold Rush’ (Neil Young) which references Sutter’s Mill, and ‘Homecoming’ (Kanye West) which is placed near the rapper’s home town of Chicago.”

Perusing the map (zoom into a high-res version here) and playlist will doubtless alert you to other choices with oblique or implied references. In one instance, on the map of Florida, we see Green Day’s “American Idiot,” whose lyrics take on the whole nation, “under the new mania.” Dorothy finds a single address for the song's vitriol, one suspiciously close to the so-called “Winter White House.” Somehow I doubt the band would object to this creative geographical interpretation.

You can purchase your own copy of the map here.

Related Content:

Behold the MusicMap: The Ultimate Interactive Genealogy of Music Created Between 1870 and 2016

An Interactive Map Shows Just How Many Roads Actually Lead to Rome

A Handy, Detailed Map Shows the Hometowns of Characters in the Iliad

Josh Jones is a writer and musician based in Durham, NC. Follow him at @jdmagness

A Map of the U.S. Created Out of 1,000 Song Titles That Reference Cities, States, Landmarks & More is a post from: Open Culture. Follow us on Facebook, Twitter, and Google Plus, or get our Daily Email. And don't miss our big collections of Free Online Courses, Free Online Movies, Free eBooksFree Audio Books, Free Foreign Language Lessons, and MOOCs.

Quiet Earth: Oslo Destroyed in Norwegian Disaster Movie THE QUAKE [Trailer]

Another day, another disaster movie though this time, don't expect The Rock to be showing up to save the day.

John Andreas Andersen's latest is The Quake, a disaster movie which imagines the destruction of Oslo if a big enough earthquake were to strike.

The movie co-stars Kristoffer Joner who also starred in another disaster movie from Norway, the disappointing The Wave which suggested destruction to come but didn't deliver until the very end. At least in the case of The Quake, it looks like the destruction will come early and there will be much of it.

Andersen has a background as a cinematographer, including Headhunters, Babycall and King of Devil's Island, which certainly bodes well for his latest which looks impressive.

:::BREA [Continued ...]

explodingdog: #soup


Colossal: Pixelated Glitches Interrupt Painted Portraits of Victorian Families, Still Lifes, and Birds

The Milan-based painter Aldo Sergio uses paint to warp perception, creating portraits and still life paintings which blur the boundary between the digital and the physical, and the traditional and the contemporary. In one of his paintings, three men in clerical clothing look inquisitively at a pixelated bunch of bananas, and in another parts of a Victorian family, from their faces to conventional garments, are pixelated in rectangular lines. In a third piece a couple poses before a selection of indoor houseplants while a hen with a blurred leg stands next to their feet.

Sergio uses traditional painting methods to capture portraits of Victorian families, bowls of fruit, and birds, and then distorts these objects by covering them in small ‘glitches.’ Sergio builds tensions between objects, people and space, and his carefully painted glitch-like malfunctions to give his artworks an unusual movement, making a stark contrast to the stillness and seriousness of traditional paintings.

His solo exhibition at Galleria Patricia Armocida in Milan runs until the 30th of November, 2018. You can see more of his pixelated paintings on his website and Instagram.

The Shape of Code: Is it worth attending an academic conference or workshop?

If you work in industry, is it worth attending an academic conference or workshop?

The following observations are based on my attending around 50 software engineering and compiler related conferences/workshops, plus discussion with a few other people from industry who have attended such events.

Short answer: No.

Slightly longer answer: Perhaps, if you are looking to hire somebody knowledgeable in a particular domain.

Much longer answer: Academics go to conferences to network. They are looking for future collaborators, funding, jobs, and general gossip. What is the point of talking to somebody from industry? Academics will make small talk and be generally friendly, but they don’t know how to interact, at the professional level, with people from industry.

Why are academics generally hopeless at interacting, at the professional level, with people from industry?

Part of the problem is lack of practice, many academic researchers live in a world that rarely intersects with people from industry.

Impostor syndrome is another. I have noticed that academics often think that people in industry have a much better understanding of the realities of their field. Those who have had more contact with people from industry might have noticed that impostor syndrome is not limited to academia.

Talking of impostor syndrome, and feeling of being a fraud, academics don’t seem to know how to handle direct criticism. Again I think it is a matter of practice. Industry does not operate according to: I won’t laugh at your idea, if you don’t laugh at mine, which means people within industry are practiced at ‘robust’ discussion (this does not mean they like it, and being good at handling such discussions smooths the path into management).

At the other end of the impostor spectrum, some academics really do regard people working in industry as simpletons. I regularly have academics express surprise that somebody in industry, i.e., me, knows about this-that-or-the-other. My standard reply is to say that its because I paid more for my degree and did not have the usual labotomy before graduating. Not a reply guaranteed to improve industry/academic relations, but I enjoy the look on their faces (and I don’t expect they express that opinion again to anyone else from industry).

The other reason why I don’t recommend attending academic conferences/workshops, is that lots of background knowledge is needed to understand what is being said. There is no point attending ‘cold’, you will not understand what is being presented (academic presentations tend to be much better organized than those given by people in industry, so don’t blame the speaker). Lots of reading is required. The point of attending is to talk to people, which means knowing something about the current state of research in their area of interest. Attending simply to learn something about a new topic is a very poor use of time (unless the purpose is to burnish your c.v.).

Why do I continue to attend conferences/workshops?

If a conference/workshop looks like it will be attended by people who I will find interesting, and it’s not too much hassle to attend, then I’m willing to go in search of gold nuggets. One gold nugget per day is a good return on investment.

Daniel Lemire's blog: Memory-level parallelism: Intel Skylake versus Apple A12/A12X

Modern processors execute instructions in parallel in many different ways: multi-core parallelism is just one of them. In particular, processor cores can have several outstanding memory access requests “in flight”. This is often described as “memory-level parallelism”. You can measure the level of memory-level parallelism your processors has by traversing an array randomly either by following one path, or by following several different “lanes”. We find that recent Intel processors have about “10 lanes” of memory-level parallelism.

It has been reported that Apple’s mobile processors are competitive (in raw power) with Intel processors. So a natural question is to ask whether Apple’s processors have more or less memory-level parallelism.

The kind of memory-level parallelism I am interested in has to do with out-of-cache memory accesses. Thus I use a 256MB block of memory. This is large enough not to fit into a processor cache. However, because it is so large, we are likely to suffer from a virtual-memory-related fault. This can significantly limit memory-level parallelism if the page sizes are too small. By default on the Linux distributions I use, the pages span 4kB (whether on 64-bit ARM or x64). Empirically, that is too small. Thankfully, it is easy to reconfigure the pages so that they span 2MB or more (“huge pages”). On Apple’s devices, whether it be an iPhone or an iPad Pro, I believe that the pages always span 16kB and that this cannot be easily reconfigured.

Before I continue, let me present the absolute timings (in second) using a single lane (thus no memory-level parallelism). Apple makes two version of its most recent processor, the A12 (in the iPhone) and the A12X (in the iPad Pro).

Intel skylake (4kB pages) 0.73 s
Intel skylake (2MB pages) 0.61 s
Apple A12 (16kB pages) 0.96 s
Apple A12X (16kB pages) 0.97 s
Apple A10X (16kB pages) 1.15 s

According to these numbers, the Intel server has the upside over the Apple mobile devices. But that’s only part of the story. What happens as you increase the number of lanes (while keeping the code single threaded) is interesting. As you increase the number of lanes, Apple processors start to beat the Intel Skylake in absolute, raw speed.

Another way to look at the problem is to measure the “speedup” due to the memory-level parallelism: we divide the time it takes to traverse the array using 1 lane by the time it takes to do so using X lane. We see that the Intel Skylake processor is limited to about a 10x or 11x speedup whereas the Apple processors go much higher.


  1. I’d be very interested in knowing how Qualcomm and Samsung processors compare.
  2. It goes without saying that my server-class Skylake machine uses a lot more power than the iPhone.
  3. If I could increase the page size on iOS, we would get even better numbers for the Apple devices.
  4. The fact that the A12 has higher timings when using a single lane suggests that its memory subsystem has higher latency than a Skylake-based PC. Why is that? Could Apple just crank up the frequency of the DRAM memory and beat Intel throughout?
  5. Why is Intel limited to 10x memory-level parallelism? Why can’t they do what Apple does?

Credit: I owe much of the design of the experiment and C++ code to Travis Downs, with help from Nathan Kurz. The initial mobile app for Apple devices was provided by Benoît Maison, you can find it on GitHub along with the raw results and a “console” version that runs under macOS and Linux. I owe the A12X numbers to Stuart Carnie and the A12 numbers to Victor Stewart.

Further reading: Memory Latency Components

Tea Masters: About the freshness loss of high mountain Oolongs

Spring 2017 Qilai mountain Qingxin Oolong
David in NYC wrote me the following:

"I have noticed something with green oolongs: If the package has been opened for more than 2 weeks, the flavor starts to change even if the package has been sealed tightly and has an oxygen absorber. After 3-4 weeks the flavor of the tea degrades a lot and it loses all of the subtleties that made it high quality. Have you noticed this as well and do you have any suggestions to preserve the flavor longer? 

One experiment I thought I could try was exposing the tea to humidity similar to puer, hoping that the tea would "wake up.""
My answer:

Green Oolongs are also called fresh Oolongs for a good reason: what is fresh and young rarely stays that way very long! Actually, if your fresh tea has a strong aroma that stays the same for a long, long time, this would point to an artificially flavored tea! Since these Oolongs have not been roasted, their moisture content is higher and causes changes in aromas when it's exposed to air (water + air + organic material = oxidation). Adding humidity, like for puerh, would actually make things worse! So, it's normal that these Oolongs would be less stable than roasted Oolongs. This raises several issues:
1. To preserve the fresh flavor longer, it's important to close the bag/foil tightly and minimize the air inside. Ideally, one would have a vacuum sealer! Then keep it in a rather cool, dark and clean place. (Not the fridge, as there are too many smells there). Another tactic is to drink one fresh Oolong at a time. Only open the next package when you've finished the open one(s). Or drink them fast enough within the time frame you've observed. Some pewter tea caddies can also help preserving the fresh feel of Oolong.
2017 spring Qilai mountain Qingxin Oolong 
2. Not all fresh Oolongs are processed the same. Even if they don't go as far as roasting them, the better high mountain Oolongs are well dried and come with a slightly higher oxidation level. Quality isn't just limited to the freshness level. This refining of the rough tea (maocha) helps not only to make the Oolong stable for a longer period of time, but also to give it a better aging potential.
3. The change in aromas is part of life. Let's embrace it! A well aged high mountain Oolong can be very delicious, especially the better ones, those that were well dried and were sufficiently oxidized (the others are sometimes called 'nuclear green'). Such Oolongs can even be kept in porcelain jars. Their scents will change and progressively loose freshness, but the taste and aftertaste will become smoother, but still powerful. And sometimes the change in scents even becomes positive as it adds complexity and richer aromas! But it's also a matter of managing your expectations, of course. Instead of hoping to freeze the aromas in time, expect them to change and realize that what you may have lost in terms of freshness, you might have gained in terms of finesse, elegance, depth. Also, the taste shouldn't change that much, and if the aging is well done using my (best) Oolongs, it should taste even better!

I hope this helps!

Colossal: A Sharp Look at the Surprisingly Complex Process of Pencil Manufacturing by Photographer Christopher Payne

All photographs © Christopher Payne /Esto

Photographer Christopher Payne (previously) spent several years building a relationship with the owners of General Pencil Company in Jersey City, New Jersey, one of the last remaining pencil factories in the United States. His dedication to working with the factory paid off, and between fall 2015 and summer 2017 Payne was granted access to the production floor for photo-documentation more than thirty times.

The photographer, renowned for his cinematic images that show the architectural grace of manufacturing spaces, shares that he has held a lifelong fascination with design, assembly, and industrial processes. “The pencil is so simple and ubiquitous that we take it for granted,” Payne tells Colossal. “But making one is a surprisingly complex process, and when I saw all the steps involved, many of which are done by hand, I knew it would make for a compelling visual narrative.”

Payne received both his bachelor’s and master’s degrees in architecture, though he has long focused on photography in his professional life. He has published three books and exhibited his work widely, most recently at the Wellcome Collection in London, U.K. and the Museum of the City of New York. You can see more of his work on Facebook and Instagram.



OCaml Weekly News: OCaml Weekly News, 13 Nov 2018

  1. Dune 1.5.0
  2. Jerboa 0.1 (Web framework) and SandDB 0.2 (Database)
  3. Static website generators?
  4. The Ray Tracer Challenge
  5. Deprecating -annot
  6. Ocaml Github Pull Requests
  7. Other OCaml News Comic for 2018.11.13

New Cyanide and Happiness Comic

Penny Arcade: News Post: No Thank U

Tycho: Gwob was talking about Adventure Mode before, and how savory it is, and how it’s mostly new to us because a substantial amount of our Diablo 3 play was back when it still had a cash store.  I have a real challenge with games of the “loot-‘em-up” variety, and it’s whenever I get to “the desert level.”  It has an almost total ability to sunder my momentum, even for a game I’m nuts about.  Whenever they make me start trudgin’ through some kinda Goddamn dunes or some shit I’m audi.  I’m not proud of it or…

explodingdog: Photo

OUR VALUED CUSTOMERS: While discussing superhero movies...

Thanks Stan.

things magazine: Flowers of romance

Paternoster Lifts: Dangerous, Obsolete and Quite Fun / Puzzle Montage Art by Tim Klein (via Boing Boing) / the Museum of the Flat Earth / SUBTLE: Delicate or Infinitesimal, an exhibition at Japan House London. Includes flowers by Paper Eden … Continue reading

Penny Arcade: Comic: No Thank U

New Comic: No Thank U

The Shape of Code: Practical ecosystem books for software engineers

So you have read my (draft) book on evidence-based software engineering and want to learn more about ecosystems. What books do I suggest?

Biologists have been studying ecosystems for a long time, and more recently social scientists have been investigating cultural ecosystems. Many of the books written in these fields are oriented towards solving differential equations and are rather subject specific.

The study of software ecosystems has been something of a niche topic for a long time. Problems for researchers have included gaining access to ecosystems and the seeming proliferation of distinct ecosystems. The state of ecosystem research in software engineering is rudimentary; historians are starting to piece together what has happened.

Most software ecosystems are not even close to being in what might be considered a steady state. Eventually most software will be really old, and this will be considered normal (“Shock Of The Old: Technology and Global History since 1900″ by Edgerton; newness is a marketing ploy to get people to buy stuff). In the meantime, I have concentrated on the study of ecosystems in a state of change.

Understanding ecosystems is about understanding how the interaction of participant’s motivation, evolves the environment in which they operate.

“Modern Principles of Economics” by Cowen and Tabarrok, is a very readable introduction to economics. Economics might be thought of as a study of the consequences of optimizing the motivation of maximizing return on investment. “Principles of Corporate Finance” by Brealey and Myers, focuses on the topic in its title.

“The Control Revolution: Technological and Economic Origins of the Information Society” by Beniger: the ecosystems in which software ecosystems coexist and their motivations.

“Evolutionary dynamics: exploring the equations of life” by Nowak, is a readable mathematical introduction to the subject given in the title.

“Mathematical Models of Social Evolution: A Guide for the Perplexed” by McElreath and Boyd, is another readable mathematical introduction, but focusing on social evolution.

“Social Learning: An Introduction to Mechanisms, Methods, and Models” by Hoppitt and Laland: developers learn from each other and from their own experience. What are the trade-offs for the viability of an ecosystem that preferentially contains people with specific ways of learning?

“Robustness and evolvability in living systems” by Wagner, survival analysis of systems built from components (DNA in this case). Rather specialised.

Books with a connection to technology ecosystems.

“Increasing returns and path dependence in the economy” by Arthur, is now a classic, containing all the basic ideas.

“The red queen among organizations” by Barnett, includes a chapter on computer manufacturers (has promised me data, but busy right now).

“Information Foraging Theory: Adaptive Interaction with Information” by Pirolli, is an application of ecosystem know-how, i.e., how best to find information within a given environment. Rather specialised.

“How Buildings Learn: What Happens After They’re Built” by Brand, yes building are changed just like software and the changes are just as messy and expensive.

Several good books have probably been omitted, because I failed to spot them sitting on the shelf. Suggestions for books covering topics I have missed welcome, or your own preferences.

Michael Geist: “You’re Misleading Us”: Canadian Anti-Counterfeiting Network Calls for Elimination of Court Oversight For Border Seizures

Bell’s promotion of a site blocking system in Canada – rejected by the CRTC on jurisdictional grounds – was grounded in the view that it could establish a mandated blocking approach without court orders. That placed the Canadian proposal off-side the vast majority of site blocking systems around the world, but it also pointed to mounting efforts to exclude the courts from the realm of copyright enforcement. For example, the Canadian Anti-Counterfeiting Network recently appeared before the Industry committee to argue for legislative reforms that would eliminate court oversight for seizures at the border. In its place, the group argued that customs authorities should be empowered to seize and destroy goods without court review.

According to Lorne Lipkus, who represented the group at the copyright review before the Standing Committee on Industry, Science and Technology:

We would like the introduction of a simplified procedure, under section 44, which relates to CBSA’s request for assistance program, so that it is clear that border officers are authorized and mandated to not only detain these products coming into Canada but to seize them. Right now, they detain them. We’re asking that they be allowed to seize them, as is the case around the world, and destroy them, without the need for a judicial proceeding which is the hallmark of the existing program [emphasis added].

Lipkus explained the group’s proposed process under questioning with NDP MP Brian Masse:

I don’t know if it’s a regulatory change or not, but in the existing legislation, there’s a 10-day period of notice given to both the importer and to the rights owner. It says, “These goods are on their way into the country. You, Mr. Rights Holder, have 10 days to bring an action or else we’re going to be releasing the goods in some way.” The importer is given 10 days’ notice to say that these goods are suspected of being counterfeit.  In the cases that we’re finding right now, the importer either doesn’t respond, or says, “I didn’t order those goods.” If part of the process were an abandonment situation, which is done with other goods in Canada in similar situations—after 10 days the importer does not respond, or responds and says they didn’t order these goods—then why can’t we destroy them right away? Why is the government paying to continue to store these goods? They could be destroyed immediately.

Yet under subsequent questioning from Liberal MP David Lametti, it became readily apparent that the proposal has little to do with copyright. In fact, Lametti hinted that the group was misleading the committee with a policy bait-and-switch by arguing for copyright reforms that were fundamentally about patents and trademark.

Mr. David Lametti:    Thank you. Mr. Lipkus, one of the fundamental principles of copyright law is that copyright on the book doesn’t mean ownership of the book. It’s a physical object versus copyright. Most of the examples you gave were a patent or a trademark – I think you would definitely agree with that – with copyright coming in at the end. Now, if there’s a copyright violation on the label, why should it give you the right to seize or even destroy the physical object?

Mr. Lorne Lipkus: That’s an excellent question. In fact, what happens in practice right now is that they seize the package, because it is illegal to be using the packaging to advertise that. If the product is authentic, for example, it doesn’t show—

Mr. David Lametti: But then you’re back to trademark and a patent again for authenticity.

Mr. Lorne Lipkus: No, no. If that package—

Mr. David Lametti: The copyright only applies to the design on the label.

Mr. Lorne Lipkus: Exactly.

Mr. David Lametti: It doesn’t apply to the authenticity of what’s inside.

Mr. Lorne Lipkus: Exactly. You’re 100% right, and so the product itself can flow through. No one is taking a position on the product. Unfortunately, when the packaging is an infringement, very often the product is counterfeit as well, but—

Mr. David Lametti: You seem to be pushing for ability to seize or destroy the product based on copyright. If that’s the case, you’re misleading us.

Mr. Lorne Lipkus: No. If I said that, that’s only predicated on the product being counterfeit. We’ve seen toys, for example—

Mr. David Lametti: We’ve seen toys under patent or trademark.

Mr. Lorne Lipkus: Correct.

Given the lack of connection to copyright, the committee should have little trouble dismissing the proposal. But the broader trend should raise alarm bells as rights holders increasingly look to exclude the courts from the copyright enforcement process.

The post “You’re Misleading Us”: Canadian Anti-Counterfeiting Network Calls for Elimination of Court Oversight For Border Seizures appeared first on Michael Geist.

Disquiet: Stasis Report: New Kaitlyn Aurelia Smith ✚ More

The latest update to my Stasis Report ambient-music playlist on Spotify and Google Play Music. The following four tracks were added on Sunday, November 11. All save one are recent.

✚ “Above” from Above_Between_Below by Lapalux on the Brainfeeder label:

✚ “Grain on the Wind” off The Endless Now — Music for Stagnation by Juha-Matti Rautiainen: The album is from 2016. Rautiainen has a new album out, Above Me Weeps the Sky, but it’s not yet on streaming services.

✚ “Kinematic Wave” is from the Initial Sounds collection in the ongoing Field Works series from Stuart Hyatt, this one by Kaitlyn Aurelia Smith:

✚ “Deep Caverns” is from the album By the Ocean from Christopher Sky:

Some previous Stasis Report tracks were removed to make room for these, keeping the playlist length to roughly two hours. Those retired tracks — from Laraaji (remixed by Mia Doi Todd), Lori Sacco, Deep Listening Band, Hainbach, and Sarah Davachi — are now in the Stasis Archives playlist (currently only on Spotify). Comic for 2018.11.12

New Cyanide and Happiness Comic

explodingdog: Photo

new shelton wet/dry: Beyond that road lies despair

The iconic green slime of the Canadian television series You Can’t Do That on Television was developed by accident, according to producer Roger Price — the original idea had been to dump a barrel of food leftovers on a young boy chained in a dungeon, but before it could be used, the contents of the [...]

Trivium: 11nov2018 Comic for 2018.11.11

New Cyanide and Happiness Comic

s mazuk: How do you feel about the way municipal elections work in Vancouver? Would a ward system for councillors be better?

I have no real opinion on the mechanics of the local elections! I think the neighborhoods are already divided politically along physical lines, so I don’t know how much difference a ward system would make.


(Order the COMPLETE Our Valued Customers at:

Daniel Lemire's blog: Science and Technology links (November 10th, 2018)

  1. It already takes more energy to operate Bitcoin than to mine actual gold. Cryptocurrencies are responsible for millions of tons of CO2 emissions. (Source: Nature)
  2. Half of countries have fertility rates below the replacement level, so if nothing happens the populations will decline in those countries” (source:BBC)
  3. According to Dickenson et al., 8.6% of us (7.0% of women and 10.3% of men) have difficulty controlling sexual urges and behaviors.
  4. A frequently prescribed drug family (statins) can increase your risk of suffering from ALS by a factor of 10 or 100.
  5. Countries were people are expected to live longest in 2040 are Spain, Japan, Singapore, Switzerland, Portugual, Italy, Israel, France, Luxembourgh, Australia. Not included in this list is the USA.
  6. Smart mirrors could monitor your mood, fitness, anxiety levels, heart rate, skin condition, and so forth.
  7. When you are trying to determine whether a drug is effective, it is tempting to look at published papers and see whether they all agree on the efficacity of the drug. This may be quite wrong: Turner et al. show a strong bias whereas negative results are never published.

    Studies viewed by the FDA as having negative or questionable results were, with 3 exceptions, either not published (22 studies) or published in a way that, in our opinion, conveyed a positive outcome (11 studies). According to the published literature, it appeared that 94% of the trials conducted were positive. By contrast, the FDA analysis showed that 51% were positive. Separate meta-analyses of the FDA and journal data sets showed that the increase in effect size ranged from 11 to 69% for individual drugs and was 32% overall.

    Simply put, it is far easier and profitable to publish positive results so that’s what you get.

    This means that, by default, you should always downgrade the optimism of the litterature.

    Simply put: don’t be too quick to believe what you read, even if it is comes in the form of a large set of peer-reviewed research papers.

  8. Richard Jones writes “Motivations for some of the most significant innovations weren’t economic“.
  9. Cable and satellite TV is going away.
  10. “What if what students really want is not to be learners, but alumni?” People will prefer an academically useless program from Harvard to a complete graduate program from a lowly school because they badly want to say that they went to Harvard.
  11. Drinking coffee abundantly protects from neurodegenerative diseases.

s mazuk: shoikovsky: vintagegeekculture: Raul Julia was Frank Langella’s...



Raul Julia was Frank Langella’s understudy in the 1970s stage production of Dracula. 

Whoa Comic for 2018.11.10

New Cyanide and Happiness Comic

OUR VALUED CUSTOMERS: Entertainment related stress disorder...

(Order the COMPLETE Our Valued Customers at:

Michael Geist: Tinkering With Copyright in Bill C-68: My Appearance Before the Standing Committee on Finance

I appeared earlier this week before the House of Commons Standing Committee on Finance as part of its review of Bill C-86, the Budget Implementation Act. The bill features extensive intellectual property provisions arising out of the IP strategy referenced in Budget 2018. My comments were consistent with previous posts on the changes to notice-and-notice, patents, and the Copyright Board.  My opening remarks are posted below.

Appearance before the House of Commons Standing Committee on Finance, November 7, 2018

Good evening. My name is Michael Geist.  I am a law professor at the University of Ottawa, where I hold the Canada Research Chair in Internet and E-commerce Law, and I am a member of the Centre for Law, Technology, and Society. I appear in a personal capacity representing only my own views.

I am pleased to have the opportunity to discuss the intellectual property provisions found in Bill C-86. As you know, Budget 2018 prioritized a national IP strategy. While aspects of that strategy involve investment in issues such as IP education, there were several legal and policy commitments that required legislative reform.

Many aspects of Bill C-86’s IP provisions are both long overdue and welcome. Since abuse of intellectual property rights may inhibit companies from innovating or discourage Canadians from taking advantage of the digital market, crafting rules that address misuse can be as important as providing effective IP protection. There are several examples of how Bill C-86 addresses IP misuse.

For example, the misuse of Canada’s copyright notice-and-notice system, which was formalized in 2012 to allow rights holders to forward allegations of online copyright infringement to Internet users through their Internet service provider, has been an ongoing source of concern. Bill C-86 amends the Copyright Act to ensure settlement demands are excluded from the notice-and-notice process, thereby restoring the original intent of the system.

Patent changes to address patent trolling provide another important reform. Bill C-86 seeks to combat patent trolls by creating new minimum requirements for patent demand letters, which should discourage the sending of deceptive letters. The rules also include the right for a recipient to pursue damages or injunctions at the federal court.

The bill also includes provisions that expand prior use rights, address standard essential patents, and create safeguards for research with a rule stating that “an act committed for the purpose of experimentation relating to the subject-matter of a patent is not an infringement of the patent.” In doing so, the bill restores a better balance to support innovation within the patent system.

Bill C-86 also includes notable reforms to the Copyright Board, including an important reference to considering the public interest in the decision making process. It rightly does not include an expansion of statutory damages among the extensive reforms to the Copyright Board. Arguments in favour of expansion were unconvincing and would have usurped the role of the Industry committee that is currently engaged in a copyright review. The issue will still be hotly debated as part of the review, but the committee is the appropriate place for discussion of statutory damages, not within a package of administrative and governance reforms to the board.

While these represent some of the positive in the bill, there is still room for improvement. I’d like to offer three recommendations.

First, the implementation of some of the reforms – such as the patent reforms I’ve just described – are likely delayed for years since they are structured to require regulations to define issues such as the requirements in patent demand letters. Officials have indicated they know what they want included. Long delays undermine the likely success of the government’s IP policy. Bill C-86 should include the requirements and the issue should not be left to the regulation-making process.

Second, the notice-and-notice copyright fix is good, but we can still do better. There should be penalties for sending abusive notices and common standards established to make it easier for Internet providers to identify compliant notices.

Third, Budget 2018 includes several references to artificial intelligence, one of the Canada’s most important innovative sectors. Yet despite the prioritization of both AI and the IP strategy, it leaves a major AI copyright barrier untouched. Several of the world’s leading AI companies – including Canada’s Element AI, Microsoft, and members of the Business Software Alliance – have pointed to the need for fair dealing exception for text and data mining or informational analysis. Without such an exception, Canada will trail badly behind competitor jurisdictions such as the U.S., Europe, and Japan, which have addressed this issue by allowing for data mining without the risk of copyright liability. Canada cannot wait many years to address this commercialization barrier. Given the budget’s inclusion of both AI and IP, Bill C-86 would be an obvious place to fix the problem.

I look forward to your questions.

The post Tinkering With Copyright in Bill C-68: My Appearance Before the Standing Committee on Finance appeared first on Michael Geist.

things magazine: War gaming

Trafalgar pyramid? A look at an alternative London, a strangely steampunk arrangement of future visions / Tree House in Glass by Broissin Architects / Microkorg tape loop jam / Wargames and the end of the world: the disastrous feedback loop … Continue reading

CreativeApplications.Net: Bruce Sterling and Benjamin Bratton in Conversation at SCI-Arc

Bruce Sterling and Benjamin Bratton in Conversation at SCI-Arc
Bruce Sterling and Benjamin Bratton speaking about many things design at SciArc, from future speculations in 1918, the relationships between industrial designers and science fiction, architecture, risk as design’s vehicle and so much more. Also, Burce’s talk while he was there. Source: Bruce Sterling and Benjamin Bratton in Conversation | WIRED

CreativeApplications.Net: Aesthetics + Computation: John Maeda at Adobe Max

Aesthetics + Computation: John Maeda at Adobe Max
“In the early ’90s, engineer, designer, and executive leader John Maeda started making interactive, or what he called “reactive,” graphics in C language for the 68k Apple Macintosh. As the web started to take off in the mid-’90s, John moved to Java and in parallel joined the MIT Media Lab to recruit talent at the […]

Disquiet: Disquiet Junto Project 0358: Rhythm + Blue(s)

Each Thursday in the Disquiet Junto group, a new compositional challenge is set before the group’s members, who then have just over four days to upload a track in response to the assignment. Membership in the Junto is open: just join and participate. (A SoundCloud account is helpful but not required.) There’s no pressure to do every project. It’s weekly so that you know it’s there, every Thursday through Monday, when you have the time.

Deadline: This project’s deadline is Monday, November 12, 2018, at 11:59pm (that is, just before midnight) wherever you are on. It was posted in the evening, California time, on Thursday, November 8, 2018.

Tracks will be added to the playlist for the duration of the project.

These are the instructions that went out to the group’s email list (at

Disquiet Junto Project 0358: Rhythm + Blue(s)
The Assignment: An exercise in genre.

Thanks to Micah Stupak-Hahn for having proposed this project.

Step 1: Consider the term “rhythm and blues.” Not the genre, just the term.

Step 2: Imagine what you might think “rhythm and blues” meant in terms of music had you never previously heard “rhythm and blues” music.

Step 3: Record a short piece of music that expresses the idea of “rhythm and blues” that occurred to you in Step 2 above.

Six More Important Steps When Your Track Is Done:

Step 1: Include “disquiet0358” (no spaces or quotation marks) in the name of your track.

Step 2: If your audio-hosting platform allows for tags, be sure to also include the project tag “disquiet0358” (no spaces or quotation marks). If you’re posting on SoundCloud in particular, this is essential to subsequent location of tracks for the creation a project playlist.

Step 3: Upload your track. It is helpful but not essential that you use SoundCloud to host your track.

Step 4: Post your track in the following discussion thread at

Step 5: Annotate your track with a brief explanation of your approach and process.

Step 6: Then listen to and comment on tracks uploaded by your fellow Disquiet Junto participants.

Other Details:

Deadline: This project’s deadline is Monday, November 12, 2018, at 11:59pm (that is, just before midnight) wherever you are on. It was posted in the evening, California time, on Thursday, November 8, 2018.

Length: The length of your track is up to you.

Title/Tag: When posting your track, please include “disquiet0358” in the title of the track, and where applicable (on SoundCloud, for example) as a tag.

Upload: When participating in this project, post one finished track with the project tag, and be sure to include a description of your process in planning, composing, and recording it. This description is an essential element of the communicative process inherent in the Disquiet Junto. Photos, video, and lists of equipment are always appreciated.

Download: Please consider setting your track as downloadable and allowing for attributed remixing (i.e., a Creative Commons license permitting non-commercial sharing with attribution, allowing for derivatives).

Context: When posting the track online, please be sure to include this following information:

More on this 358th weekly Disquiet Junto project — Rhythm + Blue(s) / The Assignment: An exercise in genre — at:

More on the Disquiet Junto at:

Subscribe to project announcements here:

Project discussion takes place on

There’s also a Junto Slack. Send your email address to to join in.

Image adapted (cropped, text added) from a photo by KoiFish Communications, used via Flickr thanks to a non-commercial Creative Commons license (CC BY-NC-SA 2.0):

The Shape of Code: Practical psychology books for software engineers

So you have read my (draft) book on evidence-based software engineering and want to learn more about human psychology. What books do I suggest?

I wrote a book about C that attempted to use results from cognitive psychology to understand developer characteristics. This work dates from around 2000, and some of my book choices may have been different, had I studied the subject 10 years later. Another consequence is that this list is very weak on social psychology.

I own all the following books, but it may have been a few years since I last took them off the shelf.

There are two very good books providing a broad introduction: “Cognitive psychology and its implications” by Anderson, and “Cognitive psychology: A student’s handbook” by Eysenck and Keane. They have both been through many editions, and buying a copy that is a few editions earlier than current, saves money for little loss of content.

“Engineering psychology and human performance” by Wickens and Hollands, is a general introduction oriented towards stuff that engineering requires people to do.

Brain functioning: “Reading in the brain” by Dehaene (a bit harder going than “The number sense”). For those who want to get down among the neurons “Biological psychology” by Kalat.

Consciouness: This issue always comes up, so let’s kill it here and now: “The illusion of conscious will” by Wegner, and “The mind is flat” by Chater.

Decision making: What is the difference between decision making and reasoning? In psychology those with a practical orientation study decision making, while those into mathematical logic study reasoning. “Rational choice in an uncertain world” by Hastie and Dawes, is a general introduction; “The adaptive decision maker” by Payne, Bettman and Johnson, is a readable discussion of decision making models. “Judgment under Uncertainty: Heuristics and Biases” by Kahneman, Slovic and Tversky, is a famous collection of papers that kick started the field at the start of the 1980s.

Evolutionary psychology: “Human evolutionary psychology” by Barrett, Dunbar and Lycett. How did we get to be the way we are? Watch out for the hand waving (bones can be dug up for study, but not the software of our mind), but it weaves a coherent’ish story. If you want to go deeper, “The Adapted Mind: Evolutionary Psychology and the Generation of Culture” by Barkow, Tooby and Cosmides, is a collection of papers that took the world by storm at the start of the 1990s.

Language: “The psychology of language” by Harley, is the book to read on psycholinguistics; it is engrossing (although I have not read the latest edition).

Memory: I have almost a dozen books discussing memory. What these say is that there are a collection of memory systems having various characteristics; which is what the chapters in the general coverage books say.

Modeling: So you want to model the human brain. ACT-R is the market leader in general cognitive modeling. “Bayesian cognitive modeling” by Lee and Wagenmakers, is a good introduction for those who prefer a more abstract approach (“Computational modeling of cognition” by Farrell and Lewandowsky, is a big disappointment {they have written some great papers} and best avoided).

Reasoning: The study of reasoning is something of a backwater in psychology. Early experiments showed that people did not reason according to the rules of mathematical logic, and this was treated as a serious fault (whose fault it was, shifted around). Eventually most researchers realised that the purpose of reasoning was to aid survival and reproduction, not following the recently (100 years or so) invented rules of mathematical logic (a few die-hards continue to cling to the belief that human reasoning has a strong connection to mathematical logic, e.g., Evans and Johnson-Laird; I have nearly all their books, but have not inflicted them on the local charity shop yet). Gigerenzer has written several good books: “Adaptive thinking: Rationality in the real world” is a readable introduction, also “Simple heuristics that make us smart”.

Social psychology: “Social learning” by Hoppitt and Laland, analyzes the advantages and disadvantages of social learning; “The Secret of Our Success: How Culture Is Driving Human Evolution, Domesticating Our Species, and Making Us Smarter” by Henrich, is a more populist book (by a leader in the field).

Vision: “Visual intelligence” by Hoffman is a readable introduction to how we go about interpreting the photons entering our eyes, while “Graph design for the eye and mind” by Kosslyn is a rule based guide to visual presentation. “Vision science: Photons to phenomenology” by Palmer, for those who are really keen.

Several good books have probably been omitted, because I failed to spot them sitting on the shelf. Suggestions for books covering topics I have missed welcome, or your own preferences.

MattCha's Blog: Release Dates of Semi-Aged Puerh

Have you ever noticed that a lot of Western puerh vendors list their semi aged puerh finds in September/ October or late Winter/Early Spring?

This is something I have picked up on lately from mere observation. It makes sense for a few reasons.

During the Spring and, to a lesser extent, the Autumn puerh picking seasons our trusty vendors are probably too busy at work pressing their own branded materials to spend time trying to track down other products.  It’s in the off seasons that they might have extra time to attempt to find some semi aged treasures.

By the time late Winter/ very Early Spring comes around, puerh buyers have gotten quite board viewing the same years products for the last many long winter months and are eager for some new puerh to look at.  Basically, we get the springtime itch.  I think, it’s only natural to crave tea in the spring time- this is just a natural harmonious craving here.   The problem is that the new springtime puerh won’t be ready for release until Summer.  And they wouldn’t want the release of any semi-aged cakes to interfere with their bread & butter.  So, it is smart, from a vendor’s perspective, to release what semiaged finds they have dug up over the slower winter months in the early spring.

The second release season for semi aged puerh seems to be in the Autumn in Sept/October.  After we buyers have scooped up all the newly pressed vendor puerh that we have been waiting for all year and are feeling just about finished with our puerh buying, out drops a few interesting semi aged things!  This conveniently occurs in the weeks before Black Friday and months before any autumnal pressings are usually released.

Of course there are other vendors, Yunnan Sourcing, who pretty much just release them randomly throughout the year.  There is a giant selection found there at any time of the year which is pretty sweet.

Have you noticed these tends on releasing semi-aged puerh or is it just me?

I think these trends might change in the future as vendors like white2tea and the Essence of Tea make available their own delisted brand products at their liking.


new shelton wet/dry: This is being marketed as “psychedelic soul,” and while it has some rock trappings, I’m having a hard time finding the psych in this

a lot of luck comes from doing things that are interesting, and sort of creating your own luck { Eric Schmidt | Continue reading } image { Bill Arsenault, Nonplussed Some Some More exhibition poster, 1969 }

new shelton wet/dry: Like the days of stopping at the Savoy, now we freak

According to the most comprehensive survey of casualties (both fatal and nonfatal), 21 percent of the casualties in World War II were attributable to friendly fire, 39 percent of the casualties in Vietnam, and 52 percent of the casualties in the first Gulf War. { Wikipedia | Continue reading } photo { Jason Florio | The Metropolitan [...]

OUR VALUED CUSTOMERS: To his friend...

( (Order the COMPLETE Our Valued Customers at:

things magazine: Random noises

The Sonic Boom Acid Fuzz / illustrations by Tim Easley / drawings and watercolours by Miles Thistlethwaite – see also Washing-Line Portraits / photographs by Thorsten Klapsch / The Bus, by Paul Kirchner (via This Isn’t Happiness) / building the … Continue reading

OCaml Planet: First Open-Source Release of TzScan

In October 2017, after the Tezos ICO, OCamlPro started to work on a block explorer for Tezos. For us, it was the most important software that we could contribute to the community, after the node itself, of course. We used it internally to monitor the Tezos alphanet, until its official public release in February 2018, as TzScan. One of TzScan main goals was to make the complex DPOS consensus algorithm of Tezos easier to understand, to follow, especially for bakers who will contribute to it.  Since its creation, we have been improving it every day, rushing for the Betanet in June 2018, and still now, monitoring all the Tezos networks, Mainnet, Alphanet and Zeronet.

So we are pleased today to announce the first release of TzScan OS, the open-source version of TzScan!

The project contains:TZScan architecture schema

  • The blockchain crawler, used to monitor the blockchain, and fill a PostgreSQL database
  • The web interface, requesting information using a REST API
  • The API server, using the PostgreSQL database to reply to API requests

It can be used in two different modes:

  • Remote Use: if you are not running a Tezos node, you might want to only run the web interface, using the official TzScan API server
  • Local Use: if you are running a Tezos node, you can use the crawler and the API server to serve information on your node, to a locally running web interface


If you are interested in contributing to TzScan OS, a first step could be to translate TzScan in your language : check the file lang-en.json for a list of strings to translate, and lang-fr.json for a partial translation!

OCamlPro’s services around TzScan

TzScan OS can be used to monitor private/enterprise deployments of Tezos. OCamlPro is available to help and support such deployments.


We are thankful to the Tezos Foundation and Ryan Jesperson for their support!

All feedback is welcome!


Fabrice Le Fessant: Fabrice is the founder of OCamlPro, and a member of the TzScan development team. Fabrice contributed to multiple projects around Tezos, in particular the first version of Liquidity, and its Michelson-to-Liquidity decompiler. Fabrice is a former researcher at INRIA, in peer-to-peer systems and programming languages, and developed several open-source projects, such as MLdonkey, JOCaml or the LAMP movie player.



Tea Masters: The ultimate tea ware collection of Chinese emperors eBook is available!

I'm happy to announce that I have published my third eBook. As you can tell from its cover above, it is about the tea ware collected by Chinese emperors and displayed in Taiwan at the National Palace Museum (in Taipei and Chiayi). This book follows a similar structure as my second eBook 'TeaMastersBlog at the British Musem'. I tried to avoid repeating the same information by focusing more on the context of China's history in this new book.

Here are the first pages to give the others an idea of what this new eBook is about:
Then comes my presentation for those who don't know me well:
And the introduction to the book:
To read the entire eBook, go here. The price of this eBook is 8 USD. But it's FREE if you make a purchase of 200 USD (or more) on ! And, if you make such a 200 USD purchase and have not received my other 2 eBooks, I will also add them FREE of charge! So you'd get 3 free eBooks about Oolong brewing and imperial tea ware with your purchase!

But why is this imperial tea ware collection so important? How can this knowledge add to today's tea brewer's experience?
These tea ceramics at the National Palace Museum (NPM) have a clear origin and meet the highest standards, because they once were made or selected for the emperors of China. In the world tea ware fakes, imitations and replicas are plenty! Museums are the best places to see genuine antiques, and the reputation of the NPM for Chinese art is second to none.

Besides, this collection includes tea ware that is over 1000 years old. Tea was prepared very differently then. This is an opportunity to learn how the wares fit the way tea was enjoyed.
The meaning of the saying "Those who don't know history are doomed to repeat it" is that those who don't know tea history are destined to make lots of mistakes. However, one way to learn from history is to try to repeat, to imitate the way tea was (correctly) brewed in the past! In these pictures, for instance, I'm brewing my sheng puerh in Ming dynasty style: I'm using a large Yixing teapot and large celadon cups (or small bowls).
This method is a good fit for green tea or for lightly brewed sheng puerh. That's the way countless Ming dynasty literati, officials and court members were enjoying their tea 500 years ago. It's good and necessary to know the tradition before you want to change and improve it!
See how much fun it is to mix the old and the new in my tea ware and in my clothes, to follow some traditions and break others (my hot water came from an automatic water dispenser, for instance), to brew Ming style in a Qing dynasty garden...! This eBook isn't about finding antique tea ware, it's about finding knowledge and beauty, and turning it into inspiration!

CreativeApplications.Net: Manus – Exploring pack behaviours in autonomous robots

Manus – Exploring pack behaviours in autonomous robots
Created by Madeline Gannon for the 2018 Annual Meeting of New Champions at the The World Economic Forum, in Tianjin, China, Manus is a set of ten industrial robots that are programmed to behave like a pack of animals.

The Shape of Code: Practical statistics books for software engineers

So you have read my (draft) book on evidence-based software engineering and want to learn more about the statistical techniques used, but are not interested lots of detailed mathematics. What books do I suggest?

All the following books are sitting on the shelf next to where I write (not that they get read that much these days).

Before I took the training wheels off my R usage, my general go to book was (I still look at it from time to time): “The R Book” by Crawley, second edition; “R in Action” by Kabacoff is a good general read.

In alphabetical subject order:

Categorical data: “Categorical Data Analysis” by Agresti, the third edition is a weighty tomb (in content and heaviness). Plenty of maths+example; more of a reference.

Compositional data: “Analyzing compositional data with R” by van den Boogaart and Tolosana-Delgado, is more or less the only book of its kind. Thankfully, it is quite good.

Count data: “Modeling count data” by Hilbe, may be more than you want to know about count data. Readable.

Circular data: “Circular statistics in R” by Pewsey, Neuhauser and Ruxton, is the only non-pure theory book available. The material seems to be there, but is brief.

Experiments: “Design and analysis of experiments” by Montgomery.

General: “Applied linear statistical models” by Kutner, Nachtsheim, Neter and Li, covers a wide range of topics (including experiments) using a basic level of mathematics.

Machine learning: “An Introduction to Statistical Learning: with Applications in R” by James, Witten, Hastie and Tibshirani, is more practical (but not dumbed down, like some) and less maths (a common problem with machine learning books, e.g., “The Elements of Statistical Learning”). Watch out for the snake-oil salesmen using machine learning.

Mixed-effects models: “Mixed-effects models in S and S-plus” by Pinheiro and Bates, is probably the book I prefer; “Mixed effects models and extensions in ecology with R” by Zuur, Ieno, Walker, Saveliev and Smith, is another view on an involved topic (plus lots of ecological examples).

Modeling: “Statistical rethinking” by McElreath, is full of interesting modeling ideas, using R and Stan. I wish I had some data to try out some of these ideas.

Regression analysis: “Applied Regression Analysis and Generalized Linear Models” by Fox, now in its third edition (I also have the second edition). I found this the most useful book, of those available, for a more detailed discussion of regression analysis. Some people like “Regression modeling strategies” by Harrell, but this does not appeal to me.

Survival analysis: “Introducing survival and event history analysis” by Mills, is a readable introduction covering everything; “Survival analysis” by Kleinbaum and Klein, is full of insights but more of a book to dip into.

Time series: The two ok books are: “Time series analysis and its application: with R examples” by Shumway and Stoffler, contains more theory, while “Time series analysis: with applications in R” by Cryer and Chan, contains more R code.

There are lots of other R/statistics books on my shelves (just found out I have 31 of Springer’s R books), some ok, some not so. I have a few ‘programming in R’ style books; if you are a software developer, R the language is trivial to learn (its library is another matter).

Suggestions for books covering topics I have missed welcome, or your own preferences (as a software developer).

explodingdog: Photo

Disquiet: The Webcam as Instrument

“Ghost Line” is a thoroughly compelling audio-video performance by Sideband (Lainie Fefferman, Jascha Narveson, Seth Cluett, and Mika Godbole) of music by Jeff Snyder, from Snyder’s forthcoming album, Concerning the Nature of Things. The album is due on November 9th on the Carrier Records label, with one preview track, the title cut, already up on Snyder’s Bandcamp page. But the real way to experience “Ghost Line” arguably isn’t the audio on its own; it’s the audio as a component of the video (on In most music videos, the video part of the equation is either a complement (whether a narrative or just associative imagery) or a document (of the performance, whether simulated or live). In the case of “Ghost Line,” the 12-minute video is, quite literally, both performance and score. And while the images may tend toward abstraction, those abstractions directly inform the music we hear.

In Snyder’s creation, each of the members of Sideband creates sound by adjusting aspects of one of four parallel frames. Each individual is seen within their frame, sometimes rendered as through x-ray specs, sometimes as if colored in during one of Andy Warhol’s more flamboyant phases (say, circa his album covers for Billy Squier and the Rolling Stones). At times the figures disappear entirely, replaced by raster concoctions straight out of a Ryoji Ikeda installation. Throughout, the music is heard to draw directly from the consequences of those images: alternately strident and subtle, buzzy and tonal.

A brief liner note clarifies the goings-on:

Ghost Line … uses webcams as instruments, with the pixel data from the cameras interpreted as audio waveforms. The performers alter the sound by moving within the frame, or by processing the video stream (altering the x and y resolution, adjusting the focus, or changing the speed or direction of the image scan). Resonant just-tuned sonorities devolve into aggressive clusters of noise, producing a masterful mix of patient harmonic changes and dense, frenetic timbral shifts.

Snyder’s previous album was to Sunspots, performed by him on vintage Buchla synthesizers equipment. Concerning the Nature of Things is concert music, performed by a variety of ensembles. It’s available at Snyder is based in Princeton, New Jersey.

MattCha's Blog: 2017/2018 Spring The Essence of Tea Drinking Report

In an attempt at replenishing my dwindling stash of puerh, I really appreciated seeing the drinking reports that James drafted at TeaDB.  With that being said, I really am happy with my older style of tea review that I used for many many years here on MattCha’s Blog.  The reviews really focused on simply reviewing the tea itself- the isolated and intimate experience with it, without comparisons, opinions, and value overshadowing the tea experience. 

However enjoyable those old reviews are, I realized that this style of review is not very good at helping my readers both understand the tea, make judgments of its value, and give them any idea if it’s something they would want to purchase.  Many years ago we knew a lot less about puerh than we know now and I thought it would be pretty foolish of me, at that time, to make sweeping authoritative statements about the tea I was drinking.  If you look back at other bloggers old reviews that are very opinionated, they sound quite silly now that we know a lot more about puerh.  I essentially dogged that bullet.

I too have sometimes relied on the reviews of other bloggers to guide my puerh buying in the past and to some extent and more so over the last few years.  It is impossible to sample all puerh so reading reviews, especially of someone who you feel enjoys a similar style of tea, is one way you can at least narrow things down.  In my return to blogging, I promised myself that my reviews would give my readers something a bit more tangible.  I personally found James’ drinking reports the most useful in analyzing a bunch of reviews without having to go through hundreds of single reviews.  My first report was on the Zheng Si Long from Tea Encounter.  This one is on some of the new spring pressings from the Essence of Tea and I hope to publish another I am working on soon. 

The following report is based on all the complimentary samples I received in two separate orders from the Essence of Tea.  They represent about 1/3- 1 /2 of their Spring selection of each year so it should give you a good idea of what’s on offer at the Essence of Tea.

2018 Spring Gua Feng Zhi (Sold Out)- not typical Gua Feng Zhi but interesting, nice noticeable depth added with a small amount of huang pian, lots of deeper pumpkin/ nutty/ woody/ bread taste paired with mild returning sweet and pungency, relaxing/ floating body mild-medium qi sensation, slight dry/ constricting throat with not too much stamina

 2018 Spring “Piercing the Illusion” ($128.00 for a 400g cake or $0.32)- first wild tea/ puerh blend from Essence of Tea, tastes like it contains more wild tea than puerh tea, blended likely for qi sensation which has a fairly strong downer/ sleep qi sensation, mind slowing qi, has mild taste characteristics of wild tea fruitiness and minutes long aftertaste, as well as vacuous mouthfeeling, mild puerh tea taste in returning sweetness/ camphor and woodiness

2018 Spring EoT 10 Year Anniversary Yiwu ($560.00 for 400g cake or $1.40/g)- composed of state forest material, very full satisfying astringency which holds flavors very nicely, nuanced sweet woody with a candy-like sweetness at the edges, depth of initial sweet tastes, full mouthfeel and deep throat feeling, penetrating deep, thought slowing Qi, favorite cake I’ve tired from Essence of Tea

2017 Spring Yiwu Gouyoulin (Sold Out)- nice syrupy bready sweetness, fruity-woody-menthol, mild but deep throat feeling and mouthfeeling, mild qi sensation, tastes are very nice, doesn’t compare to 2018 above.

2017 Spring Nancai Ancient- (Currently delisted probably in Malaysian warehouse , $80.00 for 400g cake $0.20/g when last listed) – creamy slowly unraveling sweet taste with top cherry notes, woody base, slight roughness, nice mouthfeeling astringency, not that much stamina, simple puerh tastes, mild head floating qi sensation.  Strength is the mouthfeeling/ astringency but not overly complicated puerh.

2017 Spring Wulang Wild (Currently delisted probably in Malaysian warehouse)- sweet candy-fruity taste without bitterness, buttery cherry and melon notes, very soft flavours, cheerful Qi feeling, recommend as a nice intro to wild tea for those who enjoy Wu Liang puerh.

The whole bunch of these teas are very pure and very agreeable in the body as the Essence of Tea’s puerh exclusively are.  Still haven't been able to seal the deal with a purchase of any of these young puerh though.


OUR VALUED CUSTOMERS: While discussing FUNKO POP figures...

Michael Geist: No Need for New Internet Injunctions: Why Canadian Copyright Law Already Provides Rights Holders with the Legal Tools They Need

As the Industry Committee’s copyright review continues to hear from stakeholders from across the spectrum, a recurring theme has been demands that the government create a new, explicit Internet intermediary injunction that would allow for everything from site blocking to search engine result de-indexing to a ban on payment providers offering services to some sites. For example, earlier this week, the Canadian Chamber of Commerce argued before the Industry Committee:

CIPC encourages the government to enact provisions that expressly allow rights holders to obtain injunctive relief from competent authorities, such as site blocking and de-indexing orders, against intermediaries whose services are used to infringe copyright.

That recommendation was echoed by the Business Coalition for Balanced Copyright, which is comprised of many leading telecom companies. It stated:

The Coalition strongly supports amendments that will make it easier for copyright owners to effectively enforce their rights. The act should allow for injunctive relief against all of the intermediaries that form part of the online infrastructure distributing infringing content. For example, it should be explicit that courts can issue a blocking order requiring an ISP to disable access to infringing content available on preloaded set top boxes or an order prohibiting credit card companies from processing payments for infringing services.

Yet despite the increasingly heated rhetoric for new court injunctions related to Internet intermediaries, the reality is that Canadian law already provides rights holders with the legal tools they need. In fact, injunctions or orders have been obtained against websites, search engines, and many other intermediaries. The power to obtain injunctions for infringement is clear. Section 34(1) of the Copyright Act provides:

Where copyright has been infringed, the owner of the copyright is, subject to this Act, entitled to all remedies by way of injunction, damages, accounts, delivery up and otherwise that are or may be conferred by law for the infringement of a right.

In addition, Section 41.27(1) for information location tool providers, better known as search engines, speaks specifically to injunctions in certain circumstances:

In any proceedings for infringement of copyright, the owner of the copyright in a work or other subject-matter is not entitled to any remedy other than an injunction against a provider of an information location tool that is found to have infringed copyright by making a reproduction of the work or other subject-matter or by communicating that reproduction to the public by telecommunication.

The Copyright Act also contains a provision that targets sites that “enable” infringement, thereby bringing those sites into the scope of injunctive relief found in Section 34(1):

It is an infringement of copyright for a person, by means of the Internet or another digital network, to provide a service primarily for the purpose of enabling acts of copyright infringement if an actual infringement of copyright occurs by means of the Internet or another digital network as a result of the use of that service.

These provisions have been used to do exactly what rights holders say is needed. In fact,  Innovation, Science and Economic Development Minister Navdeep Bains has noted that “Canada’s copyright system has numerous legal provisions and tools to help copyright owners protect their intellectual property, both online and in the physical realm.” These tools have been used to launch lawsuits against set-top box distributors, mod-chip sellers, and websites such as TVAddons. Some of these lawsuits have resulted in injunctions and massive damage awards running into the millions of dollars. In fact, even the Supreme Court of Canada has upheld orders against intermediaries that apply on a global basis as last year’s Equustek decision required Google to remove search results in support of intellectual property rights.

The demand for a duplicate injunction provision is particularly odd given that rights holders have been reluctant to use the powers they already have. As noted, there are several key cases that demonstrate their effectiveness, yet when asked about using the law, rights holders such as Bell have been somewhat evasive in their answers. For example, when asked whether Bell or Rogers had ever even tried to use the existing law to obtain a site blocking order, the companies had to admit they had not:

Mr. David de Burgh Graham: Have Bell or Rogers attempted to get any of these orders to block sites?

Mr. Robert Malcolmson: We have certainly been to court trying to get injunctions against those that sell the set top boxes that disseminate this content. My colleague may want to speak to how long and torturous that process is, but even when you can actually find a defendant in Canada and get proof that that person is engaging in illegal conduct it has taken us, I think, two years to shut down one particular defendant in Montreal. Imagine how difficult it is to tackle an offshore defendant.

Notwithstanding demands for more enforcement powers, Minister Bains was right when he noted that there are already numerous legal provisions and tools to allow rights holders to enforce their rights. The Industry committee should demand evidence that the current set of tools are inadequate based on real-world usage before entertaining the possibility of expanding the already-extensive enforcement toolkit.

The post No Need for New Internet Injunctions: Why Canadian Copyright Law Already Provides Rights Holders with the Legal Tools They Need appeared first on Michael Geist.

Which Lights?: 2018-11-06 - Witch Lights install Westminister CO from Jazz...

2018-11-06 - Witch Lights install Westminister CO from Jazz DiMauro on Vimeo.

OCaml Planet: Liquidity Tutorial: A Game with an Oracle for Random Numbers

A Game with an oracle

In this small tutorial, we will see how to write a chance game on the Tezos blockchain with Liquidity and a small external oracle which provides random numbers.

Principle of the game

Rules of the game are handled by a smart contract on the Tezos blockchain.

When a player decides to start a game, she must start by making a transaction (i.e. a call) to the game smart contract with a number parameter (let’s call it n) between 0 and 100 (inclusively). The amount that is sent with this transaction constitute her bet b.

A random number r is then chosen by the oracle and the outcome of the game is decided by the smart contract.

  • The player loses if her number n is greater than r. In this case, she forfeits her bet amount and the game smart contract is resets (the money stays on the game smart contract).
  • The player wins if her number n is smaller or equal to r. In this case, she gets back her initial bet b plus a reward which is proportional to her bet and her chosen number b * n / 100. This means that a higher number n, while being a riskier choice (the following random number must be greater), yields a greater reward. The edge cases being n = 0 is an always winning input but the reward is always null, and n = 100 wins only if the random number is also 100 but the player doubles her bet.

Architecture of the DApp

Everything that happens on the blockchain is deterministic and reproducible which means that smart contracts cannot generate random numbers securely1 .

The following smart contract works in this manner. Once a user starts a game, the smart contract is put in a state where it awaits a random number from a trusted off-chain source. This trusted source is our random generator oracle. The oracle monitors the blockchain and generates and sends a random number to the smart contract once it detects that it is waiting for one.


Because the oracle waits for a play transaction to be included in a block and sends the random number in a subsequent block, this means that a game round lasts at least two blocks2 .

This technicality forces us to split our smart contract into two distinct entry points:

  1. A first entry point play is called by a player who wants to start a game (it cannot be called twice). The code of this entry point saves the game parameters in the smart contract storage and stops execution (awaiting a random number).
  2. A second entry point finish, which can only be called by the oracle, accepts random numbers as parameter. The code of this entry point computes the outcome of the current game based on the game parameters and the random number, and then proceeds accordingly. At the end of finish the contract is reset and a new game can be started.

The Game Smart Contract

The smart contract game manipulates a storage of the following type:

type game = {
  number : nat;
  bet : tez;
  player : key_hash;

type storage = {
  game : game option;
  oracle_id : address;

The storage contains the address of the oracle, oracle_id. It will only accept transactions coming from this address (i.e. that are signed by the corresponding private key). It also contains an optional value game that indicates if a game is being played or not.

A game consists in three values, stored in a record:

  1. number is the number chosen by the player.
  2. bet is the amount that was sent with the first transaction by the player. It constitute the bet amount.
  3. player is the key hash (tz1…) on which the player who made the bet wishes to be payed in the event of a win.

We also give an initializer function that can be used to deploy the contract with an initial value. It takes as argument the address of the oracle, which cannot be changed later on.

let%init storage (oracle_id : address) =
  { game = (None : game option); oracle_id }

The play entry point

The first entry point, play takes as argument a pair composed of: – a natural number, which is the number chosen by the player – and a key hash, which is the address on which a player wishes to be payed as well as the current storage of the smart contract.

let%entry play (number : nat) storage = ...

The first thing this contract does is validate the inputs:

  1. Ensure that the number is a valid choice, i.e. is between 0 and 100 (natural numbers are always greater or equal to 0).
    if number > 100p then failwith "number must be <= 100";
  2. Ensure that the contract has enough funds to pay the player in case she wins. The highest paying bet is to play 100 which means that the user gets payed twice its original bet amount. At this point of the execution, the balance of the contract is already credited with the bet amount, so this check comes to ensuring that the balance is greater than twice the bet.
    if 2p * Current.amount () > Current.balance () then
      failwith "I don't have enough money for this bet";
  3. Ensure that no other game is currently being played so that a previous game is not erased.
    match with
    | Some g ->
      failwith ("Game already started with", g)
    | None ->
      (* Actual code of entry point *)

The rest of the code for this entry point consist in simply creating a new game record { number; bet; player } and saving it to the smart contract’s storage. This entry point always returns an empty list of operations because it does not make any contract calls or transfers.

let bet = Current.amount () in
let storage = <- Some { number; bet; player } in
(([] : operation list), storage)

The new storage is returned and the execution stops at this point, waiting for someone (the oracle) to call the finish entry point.

The finish entry point

The second entry point, finish takes as argument a natural number parameter, which is the random number generated by the oracle, as well as the current storage of the smart contract.

let%entry finish (random_number : nat) storage = ...

The random number can be any natural number (these are mathematically unbounded natural numbers) so we must make sure it is between 0 and 100 before proceeding. Instead of rejecting too big random numbers, we simply (Euclidean) divide it by 101 and keep the remainder, which is between 0 and 100. The oracle already generates random numbers between 0 and 100 so this operation will do nothing but is interesting to keep if we want to replace the random generator one day.

let random_number = match random_number / 101p with
  | None -> failwith ()
  | Some (_, r) -> r in

Smart contracts are public objects on the Tezos blockchain so anyone can decide to call them. This means that permissions must be handled by the logic of the smart contract itself. In particular, we don’t want finish to be callable by anyone, otherwise it would mean that the player could choose its own random number. Here we make sure that the call comes from the oracle.

if Current.sender () <> storage.oracle_id then
  failwith ("Random numbers cannot be generated");

We must also make sure that a game is currently being played otherwise this random number is quite useless.

match with
| None -> failwith "No game already started"
| Some game -> ...

The rest of the code in the entry point decides if the player won or lost, and generates the corresponding operations accordingly.

if random_number < game.number then
  (* Lose *)
  ([] : operation list)

If the random number is smaller that the chosen number, the player lost. In this case no operation is generated and the money is kept by the smart contract.

  (* Win *)
  let gain = match ( * game.number / 100p) with
    | None -> 0tz
    | Some (g, _) -> g in
  let reimbursed = + gain in
  [ Account.transfer ~dest:game.player ~amount:reimbursed ]

Otherwise, if the random number is greater or equal to the previously chosen number, then the player won. We compute her gain and the reimbursement value (which is her original bet + her gain) and generate a transfer operation with this amount.

let storage = <- (None : game option) in
(ops, storage)

Finally, the storage of the smart contract is reset, meaning that the current game is erased. The list of generated operations and the reset storage is returned.

A safety entry point: fund

At anytime we authorize anyone (most likely the manager of the contract) to add funds to the contract’s balance. This allows new players to participate in the game even if the contract has been depleted, by simply adding more funds to it.

let%entry fund _ storage =
  ([] : operation list), storage

This code does nothing, excepted accepting transfers with amounts.

Full Liquidity Code of the Game Smart Contract

[%%version 0.403]

type game = {
  number : nat;
  bet : tez;
  player : key_hash;

type storage = {
  game : game option;
  oracle_id : address;

let%init storage (oracle_id : address) =
  { game = (None : game option); oracle_id }

(* Start a new game *)
let%entry play ((number : nat), (player : key_hash)) storage =
  if number > 100p then failwith "number must be <= 100";
  if Current.amount () = 0tz then failwith "bet cannot be 0tz";
  if 2p * Current.amount () > Current.balance () then
    failwith "I don't have enough money for this bet";
  match with
  | Some g ->
    failwith ("Game already started with", g)
  | None ->
    let bet = Current.amount () in
    let storage = <- Some { number; bet; player } in
    (([] : operation list), storage)

(* Receive a random number from the oracle and compute outcome of the
   game *)
let%entry finish (random_number : nat) storage =
  let random_number = match random_number / 101p with
    | None -> failwith ()
    | Some (_, r) -> r in
  if Current.sender () <> storage.oracle_id then
    failwith ("Random numbers cannot be generated");
  match with
  | None -> failwith "No game already started"
  | Some game ->
    let ops =
      if random_number < game.number then
        (* Lose *)
        ([] : operation list)
        (* Win *)
        let gain = match ( * game.number / 100p) with
          | None -> 0tz
          | Some (g, _) -> g in
        let reimbursed = + gain in
        [ Account.transfer ~dest:game.player ~amount:reimbursed ]
    let storage = <- (None : game option) in
    (ops, storage)

(* accept funds *)
let%entry fund _ storage =
  ([] : operation list), storage

The Oracle

The oracle can be implemented using Tezos RPCs on a running Tezos node. The principle of the oracle is the following:

  1. Monitor new blocks in the chain.
  2. For each new block, look if it includes successful transactions whose destination is the game smart contract.
  3. Look at the parameters of the transaction to see if it is a call to either play, finish or fund.
  4. If it is a successful call to play, then we know that the smart contract is awaiting a random number.
  5. Generate a random number between 0 and 100 and make a call to the game smart contract with the appropriate private key (the transaction can be signed by a Ledger plugged to the oracle server for instance).
  6. Wait a small amount of time depending on blocks intervals for confirmation.
  7. Loop.

These can be implemented with the following RPCs:

An implementation of a random number Oracle in OCaml (which uses the liquidity client to make transactions) can be found in this repository:

Try a version on the mainnet

This contract is deployed on the Tezos mainnet at the following address:  KT1GgUJwMQoFayRYNwamRAYCvHBLzgorLoGo, with the minor difference that the contract refunds 1 μtz if the player loses to give some sort of feedback. You can try your luck by sending transactions (with a non zero amount) with a parameter of the form Left (Pair 99 "tz1LWub69XbTxdatJnBkm7caDQoybSgW4T3s") where 99 is the number you want to play and tz1LWub69XbTxdatJnBkm7caDQoybSgW4T3s is your refund address. You can do so by using either a wallet that supports passing parameters with transactions (like Tezbox) or the command line Tezos client:

tezos-client transfer 10 from my_account to KT1GgUJwMQoFayRYNwamRAYCvHBLzgorLoGo --fee 0 --arg 'Left (Pair 50 "tz1LWub69XbTxdatJnBkm7caDQoybSgW4T3s")'


  1. In this game, the oracle must be trusted and so it can cheat. To mitigate this drawback, the oracle can be used as a random number generator for several games, if random values are stored in an intermediate contract.
  2. If the oracle looks for events in the last baked block (head), then it is possible that the current chain will be discarded and that the random number transaction appears in another chain. In this case, the player that sees this happen can play another game with a chosen number if he sees the random number in the mempool. In practice, the oracle operation is created only on the branch where the first player started, so that this operation cannot be put on another branch, removing any risk of attack.


  1. Some contracts on Ethereum use block hashes as sources of randomness but these are easily manipulated by miners so they are not safe to use. There are also ways to have participants contribute parts of a random number with enforceable commitments↩
  2. The random number could technically be sent in the same block by monitoring the mempool but it is not a good idea because the miner could reorder the transactions which will make both of them fail, or worse she could replace her bet accordingly once she sees a random number in her mempool.↩

Alain Mebsout: Alain is a senior engineer at OCamlPro. Alain was involved in Tezos early in 2017, participating in the design of the ICO infrastructure and in particular, the Bitcoin and Ethereum smart contracts. Since then, Alain has been developing the Liquidity language, compiler and online editor, and has started working on the verification of Liquidity smart contracts. Alain also contributed some code in the Tezos node to improve Michelson. Alain holds a PhD in Computer Science on formal verification of programs.



OCaml Weekly News: OCaml Weekly News, 06 Nov 2018

  1. (Non-protocol-specific) binary serialization library?
  2. opam 2.0.1
  3. Documentation about the ocaml compiler?
  4. Packaging process
  5. OCaml and LZMA - decompression based on xz-utils and 7zip
  6. New release of odepack
  7. NYC OCaml Meetup
  8. Don't panic that your opam switches recompile from today!
  9. Annoucement of an OCaml book in Chinese
  10. Destructive module substitution: changed in 4.07
  11. First release of bwrap
  12. Ocaml Github Pull Requests
  13. Other OCaml News

things magazine: Art and catastrophe

The Miniature Calendar / dense drawings by Sandow Birk / Tapas, a collection of short videos by Bonella Holloway containing ‘filmed actions edited according to their soundscape and rhythm’ / making a Lego automaton / all the Saturn V launches … Continue reading

Daniel Lemire's blog: Measuring the memory-level parallelism of a system using a small C++ program?

Our processors can issue several memory requests at the same time. In a multicore processor, each core has an upper limit on the number of outstanding memory requests, which is reported to be 10 on recent Intel processors. In this sense, we would like to say that the level of memory-level parallelism of an Intel processor is 10.

To my knowledge, there is no portable tool to measure memory-level parallelism so I took fifteen minutes to throw together a C++ program. The idea is simple: we visit N random locations in a big array. We make sure that the processor cannot tell which location we will visit next before the previous location has been visited. There is a data dependency between memory accesses. We can break this memory dependency by dividing up the task between different “lanes”. Each lane is independent (a bit like a thread). The total number of data accesses is fixed. Up to some point, having more lane should speed things up due to memory-level parallelism. I used the term “lane” so that there is no confusion with “threads” and multicore processing: my code is entirely single-threaded.

  size_t howmanyhits_perlane 
         = howmanyhits / howmanylanes;
  for (size_t counter = 0; 
      counter < howmanyhits_perlane; counter++) {
    for (size_t i = 0; i < howmanylanes; i++) {
      size_t laneindexes = hash(lanesums[i] + i);
      lanesums[i] += bigarray[laneindexes];

Methodologically, I increase the number of lanes until adding one more benefits the overall speed by less than 5%. Why 5%? No particular reason: I needed a threshold of some kind. I suspect that I slightly underestimate the maximal amount of memory-level parallelism: it would take a finer analysis to make a more precise measure.

I run the test three times and check that it gives three times the same integer value. Here are my (preliminary) results:

Intel Haswell 7
Intel Skylake 9
ARM Cortex A57 5

My code is available.

On a multicore systems, there is more memory-level parallelism, so a multithreaded version of this test could deliver higher numbers.

Credit: The general idea was inspired by an email from Travis Downs, though I take all of the blame for how crude the implementation is.

new shelton wet/dry: “Bergman burned down our home,” said Eric W. Ohlsson, a retired doctor, referring to a scene from the 1968 film “Shame,” in which a barn was used as a flaming prop

Try this experiment: Pick a famous movie—Casablanca, say—and summarize the plot in one sentence. Is that plot you just described the thing you remember most about it? Doubtful. Narrative is a necessary cement, but it disappears from memory. { Peter Greenaway | Continue reading } “I almost always remember where I was and I remember the [...]

new shelton wet/dry: The winner takes it all

People often conduct visual searches in which multiple targets are possible (e.g., medical x-rays can contain multiple abnormalities). In this type of search, observers are more likely to miss a second target after having found a first one. { PsyArXiv | Continue reading } The streetlight effect, or the drunkard’s search principle, is a type of observational [...]

Michael Geist: CRTC Chair Opens the Door to Weakening Canadian Net Neutrality Rules

The Canadian government’s strong pro-net neutrality position has served as its telecom policy foundation with Prime Minister Justin Trudeau and other government ministers frequently citing Canada’s commitment to the policy. In fact, the current review of broadcast and telecommunications legislation described net neutrality as “a key Government priority given its importance for freedom of expression and the ‘innovation without permission’ ethos that underpins the success of the Internet.”

Yet despite the emphasis on strong net neutrality rules, CRTC Chair Ian Scott used a keynote speech last week to open the door to watering down Canadian net neutrality rules, noting his desire for “flexibility” with the legislation.

Scott told the International Institute of Communications:

The Telecommunications Act provides the CRTC with the tools and flexibility to establish and enforce a net neutrality framework. The framework we have built over the past 10 years will likely be tested as needs and technology continue to evolve. There may indeed be situations relating to public safety or security, telemedicine or self-driving cars where a certain flexibility will be required and should therefore be maintained in the legislation.

Flexibility in this context is clearly a reference to weakening net neutrality rules to allow for non-neutral applications. Pointing to issues such as telemedicine or autonomous vehicles comes directly out of the Internet provider playbook as U.S. providers used it to support gutting net neutrality rules in 2017 and Canadian providers promoted the issue before a House of Commons committee in 2018. For example, Rogers told the committee that net neutrality rules should not be strictly applied for faster 5G wireless services:

Rogers believes that by virtue of section 27(2) of the Telecommunications Act, the CRTC has all the necessary tools it needs to protect net neutrality in a fast-changing environment, while maintaining the flexibility to adapt to future changes occasioned by new technologies. As an example, the next evolution of wireless service, known as 5G, may require a flexible approach to ensure continued innovation. With 5G, certain services will require different levels of connectivity. For example, connected cars and remote medical services will require higher reliability and lower latency levels than networked parking meters.

The call for greater net neutrality flexibility was not adopted by the committee, as it recommended that net neutrality be enshrined in the law to “prevent any further erosion.” However, it does appear that the CRTC chair has bought into the position that would erode the policy despite considerable reason for skepticism. The latest calls to weaken net neutrality bear a striking resemblance to older campaigns from many of the same companies opposed to a policy that would restrict their ability to establish a two-tier Internet. In fact, researchers have noted that abandoning net neutrality could harm telemedicine, raising the prospect of two-tier tele-health care with faster networks for deeper pocketed providers or patients. Similar doubts have been raised with respect to autonomous cars, with experts noting that such vehicles are likely to use unlicensed spectrum known as the Dedicated Short Range Communications band to communicate.

As these technologies develop, the pressure from large incumbents to water down net neutrality rules is sure to increase. With the CRTC chair citing with approval incumbent talking points without the benefit of a hearing or evidentiary record, it would appear that maintaining Canada’s leadership on net neutrality could face a policy fight at the commission in the years ahead.

The post CRTC Chair Opens the Door to Weakening Canadian Net Neutrality Rules appeared first on Michael Geist.

CreativeApplications.Net: Future Flora – Celebrating Female Biophilia

Future Flora – Celebrating Female Biophilia
Questioning our notions of wellbeing to develop innovative tools in the intersection of medical and social sciences, Giulia Tomasello investigates the potential of biotechnology and living materials, proposing a biological and sustainable alternative for electronic textiles and more.

Disquiet: Stasis Report: Kelly Moran ✚ Classic Isham ✚ More

The latest update to my Stasis Report ambient-music playlist on Spotify and Google Play Music. The following four tracks were added on Sunday, November 4. Three are recent, one dates back to 1989.

✚ “Calm Before” from the album Glowing Pains: Music from the Gardens Between by Tim Shiel of Melbourne, Australia. And, yes, the next track on the album is titled “The Storm”:

✚ “Water Music” from the album Ultraviolet by Kelly Moran:

✚ “Souvenir of Bliss” off the album Reveries by Phillip Wilkerson:

✚ And this week’s archival track is “Part II” of the 1989 album Tibet by Mark Isham:

Some previous Stasis Report tracks were removed to make room for these, keeping the playlist length to roughly two hours. Those retired tracks — from Emily A. Sprague, Brian Eno (solo), and Eno with Kevin Shields — are now in the Stasis Archives playlist (currently only on Spotify).

Tea Masters: My apologies for the Da Yu Ling Oolong of spring 2018

DYL 93K winter 2018
You don't find it in my selection anymore, because is sold too fast!

That's why I'm relieved that I could add this year's latest winter harvest of this amazing high mountain here. And, like this spring, it is either packaged by 25 gr or by 75 gr.
The dry leaves don't look so big as one might expect. The way to brew this DYL in a gaiwan is to use few leaves and just layer the bottom of the vessel.
This is my result after my first brew. See how the leaves have beautifully expanded and filled the gaiwan:
The taste is more powerful than in spring, but the fragrances are a little toned down. This is typical for a winter harvest. It also has this typical cool aroma of DYL, sweetness and a long aftertaste. Second brew here:
 After the third brew, the leaves fill the gaiwan perfectly. If you move the gaiwan around, the leaves stay like they are. They have all opened up and have the same space to open up and release their flavors. This is a good sign that the brewing was well done. The other evidence is the watering in my mouth. Tea bliss!
This open leaf shows that the harvesters didn't take the big fifth leaf. They stopped at 2 buds and 2 leaves only. That's another reason that explains the quality of this Da Yu Ling, a focus on the youngest and freshest leaves. 

Daniel Lemire's blog: Science and Technology links (November 3rd, 2018)

  1. Bitcoin, the cryptocurrency, could greatly accelerate climate change, should it succeed beyond its current speculative state.
  2. Crows can solve novel problems very quickly with tools they have never seen before.
  3. The new video game Red Dead Redemption 2 made $725 million in three days.
  4. Tesla, the electric car company, is outselling Mercedes Benz and BMW while making a profit.
  5. Three paralyzed men are able to walk again thanks to spinal implants (source: New York Times). There are nice pictures.
  6. Human beings live longer today than ever. In the developed world, between 1960 and 2010, life expectancy at birth went up by nearly 20 years. It consistently goes up by about 0.12 years per year. However, it is not yet clear how aging and death have evolved over time. Some believe that there is a “compression” effect: more and more of us reach a maximum, and then we suddenly all die at around the same age. This would be consistent with a hard limit on human lifespan and I think it is the scenario most biologists would expect. There is also the opposite model: while most of us die at around the same age, some lucky ones survive much longer. According to Zuo et al. (PNAS) both models are incorrect statistically. Instead, the curve is advancing as a wave front. This means that as far as death is concerned, being 68 today is much like being 65 a generation ago. This is surprising.

    (…) we find no support for an approaching limit to human lifespan. Nor do our results suggest that endowments, biological or other, are a principal determinant of old-age survival.

    Assuming that Zuo et al. are correct, I do not think we have a biological model at the ready to explain this statistical phenomenon.

  7. Suppose that you gave a cocktail of drugs approved for human consumption to worms. By how much do you think you could extend their lifespan? The answer is at least by a factor of two. They tried their best cocktails with fruit flies and showed benefits there as well. It is much harder to manipulate the lifespan of large mammals like human beings, but these results support the theory that drug cocktails could increase human lifespans. They may already being doing so.
  8. Amazon is hiring fewer workers, maybe because it is getting better at automation. (speculative) It seems that Amazon is mostly denying the story, hinting that they are still creating more and more jobs.
  9. No primate except for human beings, undergoes menopause. Very few animals have menopause: primarily some whales and human beings. I don’t think we know why menopause evolved.
  10. Total direct greenhouse gas emissions from U.S. livestock have declined 11.3 percent since 1961, while production of livestock meat has more than doubled.
  11. Male and female animals respond very differently to anti-aging strategies and they age very differently:

    One particularly odd thing in humans is that though women live longer, they are nonetheless more prone to miserable but non-deadly ailments such as arthritis (…) Lethal illnesses such as heart disease and cancer strike men more often. Although Alzheimer’s strikes women more than men, for unknown reasons.

    We do not know why there is such a sharp difference between males and females regarding health and longevity. However, some believe that the current historical fact that women live many years more than men is due to the fact that antibiotics disproportionally helped the health of women.

  12. Vegans more frequently suffer from bone fractures.
  13. Teaching by presenting worked examples seems to be most efficient. Students get the best grades with the least work.This appears self-evident to me. It is curious why worked examples are not more prevalent in teaching.
  14. A company called Grifols claims to have a drug that can measurably slow down the progression of Alzheimer’s. For context, we currently have no therapy to slow or reverse Alzheimer’s, so even a small positive effect would be a tremendous breakthrough. However, there has been many, many false news regarding Alzheimer’s and this report appears quite preliminary.

MattCha's Blog: Composting Puerh

I have been cleaning up and attempting to better organize my tea storage lately and thought to give these 2 cakes and 1 brick a toss.  One was a gift given to me from someone who was gifted puerh and doesn’t drink it.  That cake tastes horrendously dry and rough and maybe even pesticide sprayed.  The other two were purchased as sample cakes in a search for cheap everyday drinkers last year and I found them intolerable.

I am not a wasteful person nor do I think I am above the taste of cheap tea.  However, these teas exhibit a taste and feel which suggests that something is not quite right about them.  As a result, they will be returned to the earth.  I have a few other puerh cakes that I can’t tolerate but that others have claimed to enjoy and so I intend to send some of these out to those people sometime.


bit-player: Empty nest season

I am past the stage of life when the kids go off to school in the fall, but nonetheless the house is feeling a bit desolate at this time of year. My companions of the summer have gone to earth or flown away.

Last spring a pair of robins built two-and-a-half nests on a sheltered beam just outside my office door. They raised two chicks that fledged by the end of June, and then two more in August. Both clutches of eggs were incubated in the same nest (middle photo below), which was pretty grimy by the end of the season. A second nest (upper photo) served as a hangout for the nonbrooding parent. I came to think of it as the man-cave, although I’m not at all sure about the sex of those birds. As for the half nest, I don’t know why that project was abandoned, or why it was started in the first place.

Three robin nests.

Elsewhere, a light fixture in the carport has served as a nesting platform for a phoebe each summer we’ve lived here. Is it the same bird every year? I like to think so, but if I can’t even identify a bird’s sex I have little hope of recognizing individuals. This year, after the tenant decamped, I discovered an egg that failed to hatch.

Phoebe nest

We also had house wrens in residence—noisy neighbors, constantly partying or quarreling, I can never tell the difference. It was like living next to a frat house. I have no photo of their dwelling: It fell apart in my hands.

Paper wasp nests

Under the eaves above our front door we hosted several small colonies of paper wasps. All summer I watched the slow growth of these structures with their appealing symmetries and their equally interesting imperfections. (Skilled labor shortage? Experiments in noneuclidean geometry?) I waited until after the first frost to cut down the nests, thinking they were abandoned, but I discovered a dozen moribund wasps still huddling behind the largest apartment block. They were probably fertile females looking for a place to overwinter. If they survive, they’ll likely come back to the same spot next year—or so I’ve learned from Howard E. Evans, my go-to source of wasp wisdom.

Another mysterious dwelling unit clung to the side of a rafter in the carport. It was a smooth, fist-size hunk of mud with no visible entrances or exits. When I cracked it open, I found several hollow chambers, some empty, some occupied by decomposing larvae or prey. Last year in the same place we had a few delicate tubes built by mud-dauber wasps, but this one is an industrial-strength creation I can’t identify. Any ideas?

Mud dauber wasp nest cross section 6274

The friends I’ll miss most are not builders but squatters. All summer we have shared our back deck with a population of minifrogs—often six or eight at a time—who took up residence in tunnel-like spaces under flowerpots. In nice weather they would join us for lunch alfresco.

Frog under flowerpot video

As of today two frogs are still hanging on, and I worry they will freeze in place. I should move the flowerpots, I think, but it seems so inhospitable.

May everyone return next year.

Michael Geist: Making Sense of the Canadian Digital Tax Debate, Part 6: Ensuring Internet Companies Pay Their Fair Share of Income Tax

The series on digital tax issues concludes with the most conventional tax issue: how to ensure that large corporations pay their fair share of income tax for profits generated in Canada (series posts on digital sales tax, Netflix tax, Internet access taxes, digital device taxes, and tax in support of newspapers). The income tax issue was raised by the NDP earlier this year, who called on the government to ensure that Internet companies pay taxes on profits made in Canada.

While the income tax issue is an important one, it is not a digital tax issue per se. Rather, it reflects ongoing corporate tax challenges that implicates all multinational companies that strategically structure themselves in the most tax advantageous manner. The debate on the issue is not limited to Canada with countries around the world struggling with the same question. Indeed, the issue was raised at the Senate committee, with a CRA official commenting:

It is also important to understand the current corporate tax system, which is essentially based on the notion of permanent establishment, which is a traditional concept. For example, when a company does business in another country and has employees and plants in that country, it clearly has a permanent establishment. The general concept of taxation is based on these notions.

A company that does business in another country and sells digital products does not necessarily have a physical presence. Consequently, some important questions arise with respect to income taxation. The key question is whether these permanent establishment concepts on which tax treaties are based still represent the best way to tax those businesses and to determine whether value is being created in the source country by those electronic transactions. If that is the case, one must determine the approach that should be used to tax properly, but also to ensure that the ultimate result is not double taxation of the business in question.

This therefore requires discussions at the international level, such as those currently being held at the OECD, for example. I think the OECD communiqués attest to the fact that the various OECD members have agreed to take time to analyze this question. The ideal solution is to come up with joint and coordinated options or new standards to prevent double taxation.

In other words, the income tax question is not limited to Canada nor to technology companies. There is a general consensus on the need to address income tax standards to ensure fair taxation without double payment in multiple jurisdictions.

The post Making Sense of the Canadian Digital Tax Debate, Part 6: Ensuring Internet Companies Pay Their Fair Share of Income Tax appeared first on Michael Geist.

Tea Masters: Qui sait déguster ne boit plus jamais de thé mais goûte des secrets

Cette citation est de Salvador Dali. Il parlait du vin, mais comme dans Chine classique on remplaçait souvent le vin par du thé et qu'on le buvait dans les mêmes coupes, je me suis permis de faire cette petite substitution.

Dans cette citation on comprend que la dégustation peut permettre de percer certains mystères à propos du breuvage. Que boit-on? Quelle famille de thé est-ce? Quel cultivar? De quel pays/région vient-il? Comment fut-il récolté? Dans quelle saison? Quelle année?...

Une autre question essentielle: est-ce un bon thé? Tout est relatif. Cela dépend toujours à quoi on le compare. Et cela dépend comment on le prépare. Pour réussir son thé, il faut connaitre son caractère. Mais si je ne connais pas ce thé, comment puis-je bien le préparer?
Une solution, c'est de faire connaissance avec les feuilles avec la première infusion. Après préchauffage, on y va fort, avec de l'eau bouillante, et une infusion relativement longue. On veut voir ce qu'elles ont dans le ventre et leurs défauts éventuels. Ne me dites pas que c'est de la torture, car les thés d'excellente qualité adorent et en redemandent! (Et si c'est imbuvable, on a tout à fait le droit de ne pas boire!)

Le secret du thé ne se résume pas à trouver des bonnes feuilles, mais de magnifier cette dégustation. C'est si bon quand le thé touche au sublime. Les secrets dont parle Salvator Dali étaient à la frontière de l'art et de la spiritualité. Le goût de certains grands thés nous y amène également, pour qui sait les trouver et les infuser!

Planet Lisp: Eugene Zaikonnikov: Some documents on AM and EURISKO

Sharing here a small collection of documents by Douglas B. Lenat related to design AM and EURISKO that I assembled over the years. These are among the most famous programs of symbolic AI era. They represent so-called 'discovery systems'. Unlike expert systems, they run loosely-constrained heuristic search in a complex problem domain.

AM was Lenat's doctoral thesis and the first attempt of such kind. Unfortunately, it's all described in rather informal pseudocode, a decision that led to a number of misunderstandings in follow-up criticism. Lenat has responded to that in one of the better known publications, Why AM and EURISKO appear to work.

AM was built around concept formation process utilizing a set of pre-defined heuristics. EURISKO takes it a step further, adding the mechanism of running discovery search on its own heuristics. Both are specimen of what we could call 'Lisp-complete' programs: designs that require Lisp or its hypothetical, similarly metacircular equivalent to function. Their style was idiomatic to INTERLISP of 1970s, making heavy use of FEXPRs and self-modification of code.

There's quite a lot of thorough analysis available in three-part The Nature of Heuristics: part one, part two. The third part contains the most insights into the workings of EURISKO. Remarkable quote of when EURISKO discovered Lisp atoms, reflecting it was written before the two decade pause in nuclear annihilation threat:

Next, EURISKO analyzed the differences between EQ and EQUAL. Specifically, it defined the set of structures which can be EQUAL but not EQ, and then defined the complement of that set. This turned out to be the concept we refer to as LISP atoms. In analogy to humankind, once EURISKO discovered atoms it was able to destroy its environment (by clobbering CDR of atoms), and once that capability existed it was hard to prevent it from happening.

Lenat's eventual conclusion from all this was that "common sense" is necessary to drive autonomous heuristic search, and that a critical mass of knowledge is necessary. That's where his current CYC project started off in early 1990s.

Bonus material: The Elements of Artificial Intelligence Using Common Lisp by Steven L. Tanimoto describes a basic AM clone, Pythagoras.

CreativeApplications.Net: Putting The Pieces Back Together Again – The order of chaos

Putting The Pieces Back Together Again – The order of chaos
Created by Ralf Baecker, Putting The Pieces Back Together Again is an artistic investigation and meditation about complex systems and scientific methodology. Consisting of 1250 stepper motors arranged in a two dimensional grid, each motor in the installation moves in a random direction, sometimes intersecting and reversing direction, producing emergent constellations and behaviours.

The Geomblog: What do I work on ?

So, what do you work on? 

As questions go, this is one of the most rudimentary. It's the conference equivalent of "Nice weather we're having", or "How about them Broncos!". It's a throat-clearer, designed to start a conversation in an easy non-controversial way. 

And yet I'm always having to calculate and calibrate my answers. There's a visible pause, a hesitation as I quickly look through my internal catalog of problems and decide which one I'll pull out. On the outside, the hesitation seems strange: as if I don't quite know what I work on, or if I don't know how to explain it. 

It's an occupational hazard that comes from living on the edge of many different areas. I go to data mining conferences, machine learning conferences, theory/geometry conferences, and (now) conferences on ethics, society and algorithms. And in each place I have a different circle of people I know, and a different answer to the question

So, what do you work on?  

It makes me uncomfortable, even though it shouldn't. I feel like I can only share a part of my research identity because otherwise my answer will make no sense or (worse!) seem like I'm trying to impress people with incomprehensible words. 

I don't doubt that most people share some form of this feeling. As researchers, none of us are one-dimensional, and most of us work on many different problems at a time. Probably the easiest answer to the question is the problem that one has most recently worked on. But I sense that my case is a little unusual: not the breadth per se, but the range of topics (and styles of problem solving) that I dabble in. 

So, what do you work on? 

I often joke that my research area is a random walk through computer science and beyond. I started off in geometry, dabbled with GPUs (alas, before they were popular), found my way into information theory and geometry (and some differential geometry), slipped down the rabbit hole into data mining, machine learning, and a brief side foray into deep learning, and then built a nice little cottage in algorithmic fairness, where I spend more time talking to social scientists and lawyers than computer scientists.

Being an academic nomad has its virtues: I don't really get bored with my work. But it also feels like I'm always starting from square one with my learning and that there are always people who know way more about every topic than I do. And my academic roamings seem to mirror my actual nomadic status. I'm a foreigner in a land that gets stranger and less familiar by the day, and the longest time I've spent in any location is the place I'm in right now.

So, what do you work on? 

Maybe, in a way that's so American, "What do you work on" is really a question of "Who are you" in the way we bind together our work and our identity. When my students come and ask me what they should work on, what they're really asking me is to tell them what their research identity is, and my answer usually is, "whatever you want it to be right now". It's a frustrating answer no doubt, but I feel that it lowers the import of the question to a manageable level. 

So, what DO you work on?

I do algorithmic fairness, and think about the ethics of automated decision-making. I bring an algorithmic (and geometric) sensibility to these questions. I'm an amateur computational philosopher, a bias detective, an ML-translator for lawyers and policy folk, and my heart still sings when I see a beautiful lemma. 

Disquiet: Disquiet Junto Project 0357: Clock Work

Each Thursday in the Disquiet Junto group, a new compositional challenge is set before the group’s members, who then have just over four days to upload a track in response to the assignment. Membership in the Junto is open: just join and participate. (A SoundCloud account is helpful but not required.) There’s no pressure to do every project. It’s weekly so that you know it’s there, every Thursday through Monday, when you have the time.

Deadline: This project’s deadline is Monday, November 5, 2018, at 11:59pm (that is, just before midnight) wherever you are on. It was posted in the early afternoon, California time, on Thursday, November 1, 2018.

Tracks will be added to the playlist for the duration of the project.

These are the instructions that went out to the group’s email list (at

Disquiet Junto Project 0357: Clock Work
The Assignment: Base a piece of music on your previous 12 hours.

Step 1: Think about your previous 12 hours as of the moment you begin this project.

Step 2: Note one single thing that best summarizes each of those 12 hours. That is: one thing for each of those 12 hours. Each “thing” should be one strong association with that hour, such as what you did, what you felt, what you thought, where you were, and so forth. This step’s process will result in a list of 12 things in sequence.

Step 3: Record a short piece of music consisting of 12 segments that reflect each of the 12 items that surfaced as a result of Step 2. You might make transitions between the segments, or have them immediately follow one to the next.

Six More Important Steps When Your Track Is Done:

Step 1: Include “disquiet0357” (no spaces or quotation marks) in the name of your track.

Step 2: If your audio-hosting platform allows for tags, be sure to also include the project tag “disquiet0357” (no spaces or quotation marks). If you’re posting on SoundCloud in particular, this is essential to subsequent location of tracks for the creation a project playlist.

Step 3: Upload your track. It is helpful but not essential that you use SoundCloud to host your track.

Step 4: Post your track in the following discussion thread at

Step 5: Annotate your track with a brief explanation of your approach and process.

Step 6: Then listen to and comment on tracks uploaded by your fellow Disquiet Junto participants.

Other Details:

Deadline: This project’s deadline is Monday, November 5, 2018, at 11:59pm (that is, just before midnight) wherever you are on. It was posted in the early afternoon, California time, on Thursday, November 1, 2018.

Length: The length of your track is up to you.

Title/Tag: When posting your track, please include “disquiet0357” in the title of the track, and where applicable (on SoundCloud, for example) as a tag.

Upload: When participating in this project, post one finished track with the project tag, and be sure to include a description of your process in planning, composing, and recording it. This description is an essential element of the communicative process inherent in the Disquiet Junto. Photos, video, and lists of equipment are always appreciated.

Download: Please consider setting your track as downloadable and allowing for attributed remixing (i.e., a Creative Commons license permitting non-commercial sharing with attribution, allowing for derivatives).

Context: When posting the track online, please be sure to include this following information:

More on this 357th weekly Disquiet Junto project (Clock Work / The Assignment: Base a piece of music on your previous 12 hours) at:

More on the Disquiet Junto at:

Subscribe to project announcements here:

Project discussion takes place on

There’s also a Junto Slack. Send your email address to to join in.

Image adapted (cropped, text added) from a photo by Steven Feather, used via Flickr thanks to a non-commercial Creative Commons license (CC BY-NC-SA 2.0):

OCaml Planet: expected downtime on 2018-11-01

The forge and related websites will be down for a few hours on 2018-11-01 starting at around 20:30 CEST. The previous downtime was not enough to do the full migration [1]. I will do my best to keep the downtime as short as possible. In the meantime, you can use the "static" website that has been put in place: [1]:

OCaml Planet: expected downtime on 2018-10-30

The forge and related websites will be down for a few hours on 2018-10-30 starting at around 21:00 CEST. I will do my best to keep the downtime as short as possible. In the meantime, you can use the "static" website that has been put in place:

MattCha's Blog: 2008 Dayi Qui Xiang & Thoughts on Strong Puerh

In a bout of bad luck last year, I both broke my dailyyixing teapot and had a sellout of a puerh at time of checkout!

Wilson (Adventure in Every Cup) turned my bad luck into good by remedying both of these issues!  First he helped me find this beautiful old factoy 1 early 90s/late 80s yixing 200ml teapot (pictured in this post).  Scondly, he sent me a bit of a treat, a sample of this 2008 Dayi Qui Xiang ($85.00 for 500g cake or $0.17/g) - the one that sold out on me at Tuo Cha Tea!  If you are into 10 years factory puerh, its worth checking out Willson’s interesting selection of good drinkers.

There are many many reasons that I had reservations about purchasing this dry stored option at good ol’ Tuo Cha Tea.  First, I had to get over the fact it is an autumnal produced puerh.  This 2008 Day hardly resembles autumnal material to me and will challenge your assumptions about the nature of autumn puerh.  The second reservation I had is, like most factory options, there is usually a lot of it out there with a multitude of storage options and availability online.  This makes for a hard choice if you are looking to buy in volume.  For me I almost want to try it in different storage conditions before deciding on purchase.  Often, if there is a deal to be had, you have to act quick in the face of rising prices. 

The crazy cheap option at Tuo Cha Tea that I just couldn’t complete was the least optimal storage for this cake, I think.  I have bought some of Menghai factory stuff before that pretty much requires/ was really only meant for more humid storage and am currently dosing them with heavy humidity.  Not all Menghai Factory (Daiyi) requires such humid storage but most of it isn’t meant for overly dry storage.  This is one of the reasons I have not owned any Dayi in the past.  This 2008 Dayi QuiXiang is so strong that it really does need many more years of humid storage before it is consumed.  It’s more of a long term buy.  I always have a hard time going down this road due to past advice to just avoid it and buy something that can be enjoyed in some way at time of purchase.

The previous samplings I’ve done with this tea, it kicked the crap out of me so this time I use less leaf!  This infusion I’m using ½ to 1/3 less leaf as I usually do… Let’s see what this Maylaysian stored one is all about…

The dry leaves smell of faint rum, plumb and wheat grains and decaying flowers.

The first infusion has a slight sweet, slightly decomposing leaf taste to it with a long cooling mouthfeel and subtle spicy finish.  There is a nice sticky mouthfeeling distant smoke.

The second infusion has a nice thick rose and wood powdery taste with a nice floral sweet backbone in a more typical Menghai factory feel.  There is a long sweet finish a sticky mouthfeel.  Retuning menthol.  The qi is strong and alerting in the mind, I can feel the intensity behind my eyes and in my stomach.

The third gives me a mild itch sensation but flavors are strong, thick and deep.  Layered woods, slight talc rose, sweet floral, plumb, and sweet potato layered sweetness.  The mouthfeel is dense and the finish is camphorus, slight floral, sweet.  The qi is quite intense, very strongly alerting, it still beats up the stomach pretty good.

The fourth infusion has a leafier, woody layering to it with sweetness and talc rose floral on the edges.  The long menthol finish is nice.  Sweetness pops slightly in the long cooling aftertaste.

The fifth infusion is of woods immediately with sweetness lingering in the distance that stretches its legs in the aftertaste along with menthol like tastes.  In the aftertaste there are faint suggestions of tropical fruits under floral talc tastes and fruity nuances.  The menthol finish is strong and the monthfeel is dense.  The mid throat opens under the threat of abundant menthol.  The Qi black logs in the head and mind and makes me feel like I am levitating a bit.  Strong Qi but a bit too harsh on the stomach, needs to age at least another 5 years.

The sixth and seventh infusions are much the same rose talc, woods, sweetness, thick mouthfeeling, strong qi.  Long menthol.  This tea stays pretty consistent from infusion to infusion but is deep and enjoyable. 

The seventh infusion has a nice mellow woody start, the action is in the aftertaste with long champor and tight aged florals.

The eighth and ninth infusions becomes very smooth, velvety wood and plum with leathery tastes.  The aftertaste is forever cooling.  Mouthfeel is not as strong but present.

The tenth infusion I add 10 seconds to the flash infusion which seems to bring a bit of a thicker mouthfeeling and more of a nuanced initial taste of woods and talc sweetnesses.  The menthol becomes more pronounced but it is not harsher.

The eleventh infusion I add 15 seconds to flash and get a slightly more rough infusion with a mouthfeel that has a drier astringent edge with mainly woody character now with there is a noticeable smokiness now that has gone from being more background to more upfront with the increase dry astringency.

With the 200ml pot and rougher profile, I toss in the towel with this tea early.

This tea is flavorful, has a nice mouthfeel, aftertaste, and powerful qi.  It is economical in the sense that you need about ½-1/3 less leaves to get a strong flavor and that it is a 500g cake ($0.17/g).  It tastes to me like it may have both Menghai and Nannou blended in there. Reminds me in many ways of this older and cheaper but harsher 2005 CNNP Big Yellow Mark but this Menghai Factory option is much cleaner, no smokey mesquite, and has some charms of typical Dayi factory deliciousness.

I would love to see someone who thought they could get away with just using a gaiwan attempt to enjoy this strong tea.  I’m happy I have this pot to curb the harshness, it seems to do a great job at reducing the difficult edges of the 2007 Yang Qing Hao Qi Zhong that I have been most frequently stepping in this pot as of late.

Really this 2008 Qui Xiang needs at least another 5 years to be enjoyed as aged pureh.  I think people in the West are just beginning to understand how to age these stronger factory things out.

In the end, this has got to be one my favorite 2008 Menghai Factory puerh but I’m unsure about a purchase and almost would like to try a few more different storage options before settling on this cake.  Thanks again Wilson for helping to lift me through my streak of mishappenings!  So far, this cake has the best storage I’ve seen on it.


The Shape of Code: The first commercially available (claimed) verified compiler

Yesterday, I read a paper containing a new claim by some of those involved with CompCert (yes, they of soap powder advertising fame): “CompCert is the first commercially available optimizing compiler that is formally verified, using machine assisted mathematical proofs, to be exempt from miscompilation”.

First commercially available; really? Surely there are earlier claims of verified compilers being commercial availability. Note, I’m saying claims; bits of the CompCert compiler have involved mathematical proofs (i.e., code generation), so I’m considering earlier claims having at least the level of intellectual honesty used in some CompCert papers (a very low bar).

What does commercially available mean? The CompCert system is open source (but is not free software), so I guess it’s commercially available via free downloading licensing from AbsInt (the paper does not define the term).

Computational Logic, Inc is the name that springs to mind, when thinking of commercial and formal verification. They were active from 1983 to 1997, and published some very interesting technical reports about their work (sadly there are gaps in the archive). One project was A Mechanically Verified Code Generator (in 1989) and their Gypsy system (a Pascal-like language+IDE) provided an environment for doing proofs of programs (I cannot find any reports online). Piton was a high-level assembler and there was a mechanically verified implementation (in 1988).

There is the Danish work on the formal specification of the code generators for their Ada compiler (while there was a formal specification of the Ada semantics in VDM, code generators tend to be much simpler beasts, i.e., a lot less work is needed in formal verification). The paper I have is: “Retargeting and rehosting the DDC Ada compiler system: A case study – the Honeywell DPS 6″ by Clemmensen, from 1986 (cannot find an online copy). This Ada compiler was used by various hardware manufacturers, so it was definitely commercially available for (lots of) money.

Are then there any earlier verified compilers with a commercial connection? There is A PRACTICAL FORMAL SEMANTIC DEFINITION AND VERIFICATION SYSTEM FOR TYPED LISP, from 1976, which has “… has proved a number of interesting, non-trivial theorems including the total correctness of an algorithm which sorts by successive merging, the total correctness of the McCarthy-Painter compiler for expressions, …” (which sounds like a code generator, or part of one, to me).

Francis Morris’s thesis, from 1972, proves the correctness of compilers for three languages (each language contained a single feature) and discusses how these features may be combined into a more “realistic” language. No mention of commercial availability, but I cannot see the demand being that great.

The definition of PL/1 was written in VDM, a formal language. PL/1 is a huge language and there were lots of subsets. Were there any claims of formal verification of a subset compiler for PL/1? I have had little contact with the PL/1 world, so am not in a good position to know. Anybody?

Over to you dear reader. Are there any earlier claims of verified compilers and commercial availability?

Tea Masters: A puerh class with 6 delicious teas

2018/2017 sheng gushu puerh
Many tea fans consider puerh a very rough tea that benefits a lot from being brewed in an unglazed clay teapot. With most puerhs this is certainly true, but puerh can also be one of the finest and most delicious tea if you select top quality leaves. And I proved it today with this class of 6 puerh we brewed in plain white porcelain competition sets! (Porcelain is neutral for the taste. It's used by professional tasters. It lets you see the color of the brew well.) In terms of methodology, I didn't use the Oolong standard of 3 grams and 6 minutes of brewing time. Since gushu puerh is made very powerful leaves, we used few leaves (see the plates). The brewing time was long, several minutes, but not measured with a stopwatch in order to keep things relaxed.
2018 gushu puerh
We started with 2 very young sheng gushu puerhs coming from the same 500 years old trees:
It was interesting to feel the energy of these teas and how the 2017 already feels much more tamed and mellow than the 2018. My student also found these teas amazing by the little quantity of leaves we used and the powerful brew they made. We used 2 ivory porcelain cups: the large ivory singing cup makes the brew look lighter than the flower shaped cup!
2006 (top). 2003 (below)
Next, we traveled 12-15 years back in time to taste 2 puerhs I have aged in my apartment since they were released:
3. the spring 2006 raw wild Lincang puerh,
4. the spring 2003 raw wild Yiwu puerh.
2003 wild raw puerh from Yiwu
The 2003 wild Yiwu is the tea that started my puerh education 15 years ago! It's nice to see and taste the evolution. There was an awkward time when the tea was 6 to 13 years old, not young, but not aged yet. Right now it's really gaining these aged wood and raw clay (?!) earthy aromas, while keeping most of its energy. The brew also  looks beautiful in the cups.
2003 wild raw puerh from Yiwu
 Since these teas come compressed, it's important to flake the leaves well and use strength with the first pour.
Antonio brewing
 The 2006 Lincang is 3 years younger. This explains the slightly more greenish color of the brew:
 The aromas of these 2 teas are also quite different because they come from 2 different regions in Yunnan.
2006 raw puerh from Lincang
 The next 2 teas transport us a little further in time:
5. The spring 1999 raw '7542' cake from Menghai Tea Factory,
6. The 2001 Xiaguan cooked melon puerh. (I used a little more leaves than the 7542, because cooked leaves loose a lot of their energy).
1999 '7542' raw puerh vs 2001 Xiaguan cooked puerh
 The 1999 spent most of its time in a puerh warehouse in Taiwan. Unlike my home, there's no air conditioning during summer in these warehouses. That and 4 more years of age explain why its brew is much darker than my 2003 Yiwu. 
1999 '7542' raw puerh vs 2001 Xiaguan cooked puerh
 The 2001 Xiaguan is even darker because it's a cooked puerh. But one can still see some transparency and brown shine, especially in the large cup:
2001 Xiaguan cooked puerh
 And the colors of both teas almost look the same if you pour the shu puerh in the large cup and the 1999 sheng puerh in the flower cup! (This shows that cup shape and glaze have a big impact on the color.)
2001 Xiaguan cooked puerh vs 1999 '7542' raw puerh
 Drinking these 2 puerhs side by side showed the similarities and differences in aged shu and sheng puerh. Both taste very tasty, but sheng has more energy and aftertaste. This shu puerh, though, is extremely smooth and soothing. The difference is also in the spent leaves: sheng leaves open up and turn brown, while shu leaves remain shriveled up and very dark.
 2001 Xiaguan cooked puerh vs 1999 '7542' raw puerh
On this cool day of October, these 6 amazing puerhs all felt very welcome and in harmony with the season. This class was a good reminder that if you want to learn tea well, it all starts with good leaves. / 2018-11-14T19:38:12