Bifurcated Rivets: From FB


Bifurcated Rivets: From FB

C Jam

Bifurcated Rivets: From FB

Ella and OP

Bifurcated Rivets: From FB


Bifurcated Rivets: From FB


Open Culture: Meet Henry Darger, the Most Famous of Outsider Artists, Who Died in Obscurity, Leaving Behind Hundreds of Unseen Fantasy Illustrations and a 15,000-Page Novel

In his cheeky invention of a character called Marvin Pontiac, an obscure West African-born bluesman, the avant-garde composer and saxophonist John Lurie created “a wry and purposeful sendup of the ways in which critics canonize and worship the disenfranchised and bedeviled,” Amanda Petrusich writes at The New Yorker. Lurie's satire shows how the critical fetish for outsider artists has a persistent emphasis: a hyperfocus on “misshapen yet perverse ideas” about class, race, education, and ability as markers of primitive authenticity.

The term "outsider art" can sound patronizing and even predatory, laden with assumptions about who does and who does not deserve inclusion and agency in the art world. Outsider art gets collected, exhibited, catalogued, and sold, usually accompanied by a semi-mythology about the artist’s fringe circumstances. Yet the artists themselves rarely seem to be the primary beneficiaries of any largesse. In the case of the fictional Marvin Pontiac, his status as “dead and heretofore undiscovered” makes the question moot. The same goes for the very real and perhaps most famous of outsider artists, whose life story can sometimes make Lurie’s Pontiac seem underwritten by comparison.

Reclusive hospital custodian Henry Darger spent his early years, after both parents died, in an orphanage and the Illinois Asylum for Feeble-Minded Children. He spent his almost completely solitary adult life in a second-floor room on the North Side of Chicago, attending Mass daily (often several times a day), before passing away in 1973 in the same old age home in which his father died. He had one friend, left only four photographs of himself, and his few acquaintances were never even sure how to pronounce his last name (it's a hard "g"). In his last diary entry, New Year’s Day, 1971, Darger wrote, “I had a very poor nothing like Christmas. Never had a good Christmas all my life, nor a good new year, and now… I am very bitter but fortunately not revengeful, though I feel should be how I am.”

So much for “outsider.” As for the label “Artist”—inscribed on his pauper’s grave (along with “Protector of Children”)—Darger shocked the art world, who had no idea he even existed, when his landlord discovered the typescript of an unpublished 15,000-page fantasy novelThe Story of the Vivian Girls, in What is Known as the Realms of the Unreal, of the Glandeco-Angelinian War Storm, Caused by the Child Slave Rebellion. Also in his apartment were a 8,500 follow-up, Further Adventures of the Vivian Girls in Chicago, and several hundred “panoramic ‘illustrations,’” notes the “official” Henry Darger website: “many of them double-sided and more than 9 feet in length.”

These works, we learn in the PBS video at the top, “The Secret Life of Henry Darger,” now regularly sell for hundreds of thousands of dollars. Darger, it seems, never meant for anyone to see them at all. Perhaps for good reason. His work leaves “a set of contradictory impressions,” Edward Gómez writes at Hyperallergic, “a celebration of childhood fulsomeness and a whiff of pedophiliac perversion.” The latter impression seems to have less to do with criminal sexual inclinations than with contemporary cultural perceptions about childhood. Compare Darger's work, for example, with Lewis Carroll's obsession with children, alarming to us now but not at all unusual at the time.

Still, Darger's hundreds of "drawings of naked, prepubescent girls whose bodies prominently include male genitals” have raised all sorts of questions. Critics have pointed to the obvious influence of Victorian children's literature, but perhaps even more pervasive was Darger's own painful childhood, his considerable discomfort with the adult world, and his expressed desire to protect children who might suffer similarly (a preoccupation shared by Charles Dickens). Learn about Darger’s troubled, tragic childhood in the Down the Rabbit Hole video biography above, and in these two portraits, see why his work deserves—despite but not because of his marginality and oddness, his being self-taught, and his desire for his art to disappear—the posthumous acclaim it has received. Like that quintessential outsider artist, William Blake, Darger left behind a daringly original body of work that is as compelling and beautiful as it is disturbing and otherworldly.

To delve deeper into Darger's world, check out the 2004 documentary, The Realms of the Unreal, which can be viewed on Youtube, or purchased on Amazon. The film's trailer appears below.

Related Content:

A Space of Their Own, a New Online Database, Will Feature Works by 600+ Overlooked Female Artists from the 15th-19th Centuries

Nearly 1,000 Paintings & Drawings by Vincent van Gogh Now Digitized and Put Online: View/Download the Collection

Lewis Carroll’s Photographs of Alice Liddell, the Inspiration for Alice in Wonderland

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

Meet Henry Darger, the Most Famous of Outsider Artists, Who Died in Obscurity, Leaving Behind Hundreds of Unseen Fantasy Illustrations and a 15,000-Page Novel 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.

OCaml Weekly News: OCaml Weekly News, 18 Dec 2018

  1. Build-/Installation-Tools - not enough of them?
  2. PyTorch bindings
  3. LablGtk 3.0.beta2 and LablGtk 2.18.7
  4. ~travesty~, monadic traversals, state monads, and suchlike on top of Core's monads
  5. Some feedback on teaching with jbuilder as a build tool
  6. Blog post: A new general computation model for Dune
  7. Ppxlib 0.4.0
  8. opam 2.0.2!
  9. Ocaml Github Pull Requests
  10. Other OCaml News

Recent additions: ngx-export-tools

Added by lyokha, Tue Dec 18 11:53:29 UTC 2018.

Extra tools for Nginx haskell module

MetaFilter: Everybody Has a Box

Santore does not shy away from these questions: He has the word temptation tattooed on his right forearm. It's a reminder, he told me. "What do safecrackers do?" he once asked. "They crack safes. It'd be better if they do it legally, but the game is the fucking game. I'm just saying, it takes a certain mindset to want to do this stuff, to have the patience for it, and some people can channel that in a positive way and other people fucking can't." Meet the Safecracker of Last Resort

Penny Arcade: News Post: PAX South Indie Showcase!

Tycho: Most PAX shows have a space carved out to shine a light on independent talent - and PAX South is even more novel, as it focuses exclusively on heroism in the tabletop space.  What can you expect to see at the show?  Glinting treasure such as this! The Night Cage by Rosswell Saunders, Chris Chan, and Chris McMahon The Search for Planet 9 by Foxtrot Games Kingdom of Aer Kingmaker by Centennial Games Crimopolis by Cheap Sheep Games Hermetica by Iff Studios LLC Eschaton by Archon Games Churrascaria: A Cutthroat Game of Gluttony by Absurdist Productions Congratulations to the teams!…

Slashdot: 'Google Isn't the Company That We Should Have Handed the Web Over To'

Iwastheone shares a report from Ars Technica's Peter Bright: With Microsoft's decision to end development of its own Web rendering engine and switch to Chromium, control over the Web has functionally been ceded to Google. That's a worrying turn of events, given the company's past behavior. Chrome itself has about 72 percent of the desktop-browser market share. Edge has about 4 percent. Opera, based on Chromium, has another 2 percent. The abandoned, no-longer-updated Internet Explorer has 5 percent, and Safari -- only available on macOS -- about 5 percent. When Microsoft's transition is complete, we're looking at a world where Chrome and Chrome-derivatives take about 80 percent of the market, with only Firefox, at 9 percent, actively maintained and available cross-platform. The mobile story has stronger representation from Safari, thanks to the iPhone, but overall tells a similar story. Chrome has 53 percent directly, plus another 6 percent from Samsung Internet, another 5 percent from Opera, and another 2 percent from Android browser. Safari has about 22 percent, with the Chinese UC Browser sitting at about 9 percent. That's two-thirds of the mobile market going to Chrome and Chrome derivatives. In terms of raw percentages, Google won't have quite as big a lock on the browser space as Microsoft did with Internet Explorer -- Internet Explorer 6 peaked at around 80 percent, and all versions of Internet Explorer together may have reached as high as 95 percent. But Google's reach is, in practice, much greater: not only is the Web a substantially more important place today than it was in the early 2000s, but also there's a whole new mobile Web that operates in addition to the desktop Web. Google has deployed proprietary technology and left the rest of the industry playing catch-up, writes Peter. The company has "tried to push the Web into a Google-controlled proprietary direction to improve the performance of Google's online services when used in conjunction with Google's browser, consolidating Google's market positioning and putting everyone else at a disadvantage." YouTube has been a particular source of problems. One example Peter provides has to do with a hidden, empty HTML element that was added to each YouTube video to disable Edge's hardware accelerated video decoding: "For no obvious reason, Google changed YouTube to add a hidden, empty HTML element that overlaid each video. This element disabled Edge's fastest, most efficient hardware accelerated video decoding. It hurt Edge's battery-life performance and took it below Chrome's. The change didn't improve Chrome's performance and didn't appear to serve any real purpose; it just hurt Edge, allowing Google to claim that Chrome's battery life was actually superior to Edge's. Microsoft asked Google if the company could remove the element, to no avail."

Read more of this story at Slashdot.

Recent additions: cloudi 1.7.5

Added by okeuday, Tue Dec 18 09:56:31 UTC 2018.

Haskell CloudI API

Open Culture: See Classic Japanese Woodblocks Brought Surreally to Life as Animated GIFs

Much of the image we have of life in Japan in the 17th through the 19th century, we have because of woodblock prints, or specifically ukiyo-e, or "pictures of the floating world," which vividly capture a great variety of scenes and the people who inhabited them. The once-closed-off Japan has changed a great deal since that era, on most levels even more so than other countries, and the artistic portrayals of Japanese life have also multiplied enormously. Yet even in the 21st century, ukiyo-e continue to provide a compelling image of Japan in its essence.

But that doesn't mean that ukiyo-e prints can't be updated to reflect the present day. Filmmaker and animator Atsuki Segawa, writes Spoon & Tamago's Johnny Waldman, "takes traditional Japanese Ukiyo-e woodblock prints and sets them into motion through digital animation. He began his collection of 'moving ukiyo-e' in 2015 and has been slowly adding to his collection." At those two linked Spoon & Tamago posts you can see a selection of ten of Segawa's creations, which hybridize not just art forms but eras.

Here you can see Segawa's take on, from top to bottom, Kiyochika Kobayashi's Firework Show at Ryogoku, Katsushika Hokusai's Yoshida at T?kaid?, Toshusai Sharaku's Nakamura Konozo and Nakajima Wadayemon ("If anyone has ever eaten oden you’ll know how this man feels," adds Waldman), Hokusai’s Ejiri in Suruga Province, Hokusai’s Great Wave, and Utagawa Hiroshige's Fujikawa. Keep your eye on that last and you'll notice Doc Brown and Marty McFly cruising through the scene, only the most obvious of the anachronistic touches (though as time travelers, what really counts as anachronism?) Segawa has added to these classic ukiyo-e and set into motion.

Segawa's other "moving ukiyo" introduce flying drones into an Osaka marketplace, the multicolored lights of speeding cars down a quiet seaside road, a Shinkansen bullet train passing a resting place full of weary foot travelers, and violent motion to the waves and boats in Hokusai's Great Wave off Kanazawa, quite possibly the most famous ukiyo-e print of them all.

Sheer incongruity — incongruity between the times of the elements depicted and referenced, between the aesthetics of the past and the aesthetics of the present, and between the technologies used to create and display the originals and these light-hearted revisions — has much to do with the appeal of these images, but somehow it all makes them feel much more, not less, like Japan itself.

via Spoon and Tamago

Related Content:

Download 2,500 Beautiful Woodblock Prints and Drawings by Japanese Masters (1600-1915)

The Evolution of The Great Wave off Kanazawa: See Four Versions That Hokusai Painted Over Nearly 40 Years

Download Hundreds of 19th-Century Japanese Woodblock Prints by Masters of the Tradition

What Happens When a Japanese Woodblock Artist Depicts Life in London in 1866, Despite Never Having Set Foot There

Mesmerizing GIFs Illustrate the Art of Traditional Japanese Wood Joinery — All Done Without Screws, Nails, or Glue

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.

See Classic Japanese Woodblocks Brought Surreally to Life as Animated GIFs 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.

s mazuk: sadly,

the internet isn’t a public backstage anymore

Recent additions: unix-time 0.4.1

Added by KazuYamamoto, Tue Dec 18 07:01:31 UTC 2018.

Unix time parser/formatter and utilities

Slashdot: The Most-Distant Solar System Object Discovered

Rick Zeman writes: Astronomers in Hawaii have discovered the furthest object in our solar system, a dwarf planet aptly named "Farout." This planet is 100 times farther than Earth is from the sun (120 AU from the sun) and is thought to be composed of ice. The object is so far away that researchers estimate it probably takes more than 1,000 years to make one trip around the sun. For reference, Pluto is 34 AU away and takes about 248 years to orbit the sun. Eris, the next most distance object know, is 96 AU from the sun.

Read more of this story at Slashdot. Comic for 2018.12.18

New Cyanide and Happiness Comic

Recent additions: waargonaut

Added by schalmers, Tue Dec 18 05:41:45 UTC 2018.

JSON wrangling

MetaFilter: Lass Mich Dein Sklave Sein!

Kraftklub's not particularly new song Sklave , which gloriously lifts from both Die Artze's Bitte Bitte [NSFW] and DOF's Codo [Live-ish TV performance]

One for everyone working over the Christmas period.

German>English translation here for the monolingual like me.

Recent additions: extensible-effects-concurrent 0.18.1

Added by SvenHeyll, Tue Dec 18 03:53:57 UTC 2018.

Message passing concurrency as extensible-effect

Slashdot: US Ballistic Missile Systems Have No Antivirus, No Data Encryption, and No 2FA, DOD Report Finds

An anonymous reader writes from a report via ZDNet: No data encryption, no antivirus programs, no multi-factor authentication mechanisms, and 28-year-old unpatched vulnerabilities are just some of the cyber-security failings described in a security audit of the U.S.' ballistic missile system released on Friday by the U.S. Department of Defense Inspector General (DOD IG). The report [PDF] was put together earlier this year, in April, after DOD IG officials inspected five random locations where the Missile Defense Agency (MDA) had placed ballistic missiles part of the Ballistic Missile Defense System (BMDS) -- a DOD program developed to protect U.S. territories by launching ballistic missiles to intercept enemy nuclear rockets. Here is a summary of the findings: (1) Multi-factor authentication wasn't used consistently. (2) One base didn't even bother to configure its network to use multifactor authentication. (3) Patches weren't applied consistently. (4) One base didn't patch systems for flaws discovered in 1990. (5) Server racks weren't locked. (6) Security cameras didn't cover the entire base. (7) Door censors showed doors closed when they were actually open. (8) Base personnel didn't challenge visitors on bases without proper badges, allowing access to secure areas. (9) One base didn't use antivirus or other security software. (10) Data stored on USB thumb drives was not encrypted. (11) IT staff didn't keep a database of who had access to the system and why.

Read more of this story at Slashdot.

Slashdot: Tumblr Porn Vanishes Today

Earlier this month, Tumblr announced that it would be permanently banning adult content from its platform on December 17th. Well, that day has arrived and the social media site is now hiding all posts that are currently flagged as explicit, as well as posts that users are in the process of appealing. This includes media showing sex acts, exposed genitals, and "female-presenting" nipples. The Verge reports: In addition to what's already gone, more adult content is going to be flagged in coming weeks, Tumblr says, and it hopes that the automated tools will be more accurate at picking out what counts as explicit. In a blog post that went up today, Tumblr apologized to users: "We are sorry that this has not been an easy transition and we know we can do a better job of explaining what we're doing." It said the change would be a slow process that involves "flagging tens of billions of GIFs, videos, and photos." Many users also criticized Tumblr's decision to consider "female-presenting nipples" as explicit, while male-presenting nipples were still okay. Some pointed out that in the case of non-binary, genderfluid, or trans individuals, it would be confusing where the line would be drawn on whose nipples would be considered explicit. In its blog post today, Tumblr has added the caveat, "yeah, we know you hate this term," but maintained the language and distinction. "We understand and agree that there have been too many wrongfully flagged posts since we announced the policy change," says Tumblr. But if users don't appeal their posts, then they're out of luck. That could also be a problem for popular older accounts, which may not have anyone monitoring them to appeal the overly aggressive moderation. Flagged content will be hidden, but not deleted, Tumblr emphasized. That will allow posts to be appealed even after they're removed from public view. On a more positive note, Tumblr says that "all appeals will be sent to a real, live human who can make the appropriate call."

Read more of this story at Slashdot.

Slashdot: Senate Report Shows Russia Used Social Media To Support Trump In 2016

AmiMoJo shares a report from the BBC: Russia used every major social media platform to influence the 2016 US election, the report claims. New research says YouTube, Tumblr, Instagram and PayPal -- as well as Facebook and Twitter -- were leveraged to spread propaganda. Its authors criticize the "belated and uncoordinated response" by tech firms. It is the first analysis of millions of social media posts provided by Twitter, Google and Facebook to the Senate Intelligence Committee. Russia adapted techniques from digital marketing to target audiences across multiple channels, with a particular focus on targeting conservatives with posts on immigration, race, and gun rights. There were also efforts to undermine the voting power of left-leaning African-American citizens, by spreading misinformation about the electoral process. "What is clear is that all of the messaging clearly sought to benefit the Republican Party -- and specifically Donald Trump," the report says. "Trump is mentioned most in campaigns targeting conservatives and right-wing voters, where the messaging encouraged these groups to support his campaign. The main groups that could challenge Trump were then provided messaging that sought to confuse, distract and ultimately discourage members from voting."

Read more of this story at Slashdot.

MetaFilter: Brian!

There is not one of us here who would not gladly suffer death to rid this country of the Romans once and for all. [slyt]

MetaFilter: "Your dragon display is only marginally acceptable at Halloween."

Author Diana Rowland likes dragons. One humorless neighbor, it seems, does not approve. You can imagine the response to someone telling you to take down your dragon display, right? Bored Panda write-up if the images don't come through on the other link. Rowland's twitter thread about the matter.

Penny Arcade: News Post: Arrears

Tycho: Chris Perkins so regularly generates fanciful sums donating his time behind the screen for Charity that we have a good sense, by now, what his time is actually worth - and it’s not looking good for us. Hey!  So, we don’t understand one hundred percent how or why this happened, I would say our lives are like this generally, but we were invited down to Blizzard - yes, that Blizzard - and we can borrow their streaming studio to use on so we’re gonna do it.  Here’s the schedule, all California times: 10am - 12pm: Streaming (We Play…


MetaFilter: Seven of the funniest transport videos

Seven of the funniest transport videos: Australia's Climate Council have rounded up some amusing ads on the subject of transport issues, road safety etc, possibly attempting to go viral with the power of laughter while promoting their newly released report into Australian Transport vs Global Warming. One of the seven is missing but you will find it here.

Disquiet: Season’s Greetings from Michiru Aoyama

As was expressed by the first listener to comment on the new track “4k” by Michiru Aoyama, the piece is “sweet as Christmas.” All that it seems to take to signal the new arrival of the holiday season is a little glistening chime. That metallic yet gentle fluttering signifies passage, perhaps to a magical world, but just as likely to a calendrical instance of celebration and reflection, of a pause before renewal. It’s to the credit of “4k” that the transition could cut either way, to a fictional world of majestic wonder, or to the real world of social duties and inclement weather. Of course, there’s more to Aoyama’s track than a chime on repeat. What’s heard here — what makes the pause feel like a true, year-ending instance — are countless spirals of chimes, layered into the distance and up to the heavens, some sharp as glass, much of it processed into gaseous fumes of ever-shifting micro-particulate.

Track originally posted at More from Aoyama at and

OCaml Planet: ocaml-http--migration-to-github

The ocaml-http project now resides on Github, Further developments and new releases will take place on Github, not on this forge.

OUR VALUED CUSTOMERS: Constructive criticism...

Colossal: Black and White Vortexes Swallow Bits of Data and Smoke-Like Swirls in Looping Animations by Étienne Jacob

French student Étienne Jacob creates optically-charged black and white GIFs that suck the viewer into their repetitious animations like deep black holes. His works are often celestial in nature, appearing like animated stars or invented planets traversing an unknown orbit. Jacob publishes his works to his Tumblr, Necessary Disorder, and provides step-by-step instructions for how to make your own versions of the GIFs on his blog.

Colossal: Classes Begin January 28 at the School of Visual Arts Division of Continuing Education

photo credit: Svetlana Jovanovic

From one-day workshops to semester-long courses, take the opportunity to immerse yourself and be inspired. If you need advice or have questions, our information sessions begin Tuesday, January 8th. Visit for details.

Courses are available in:

For advice on courses, visit To register, visit

About the School of Visual Arts
School of Visual Arts has been a leader in the education of artists, designers and creative professionals for seven decades. With a faculty of distinguished working professionals, a dynamic curriculum and an emphasis on critical thinking, SVA is a catalyst for innovation and social responsibility. Comprising 6,000 students at its Manhattan campus and 35,000 alumni in 100 countries, SVA also represents one of the most influential artistic communities in the world. For information about the College please visit

Daniel Lemire's blog: Sorting strings properly is stupidly hard

Programming languages make it hard to sort arrays properly. Look at how JavaScript sorts arrays of integers:

> v = [1,3,2,10]
[ 1, 3, 2, 10 ]
> v.sort()
[ 1, 10, 2, 3 ]

You need a magical incantation to get the right result:

> v.sort((a,b)=>a>b)
[ 1, 2, 3, 10 ]

Though this bad default can create bugs, it is probably not the source of too many frustrations. However, sorting strings alphabetically is a real problem. Let us see how various languages do it.


> var v = ["e", "a", "é","f"]
> v.sort()
[ 'a', 'e', 'f', 'é' ]
> v = ["a","b","A","B"]
> v.sort()
[ 'A', 'B', 'a', 'b' ]


>>> x=["e","a","é","f"]
>>> x.sort()
>>> x
['a', 'e', 'f', 'é']
>>> x=["a","A","b","B"]
>>> x.sort()
>>> x
['A', 'B', 'a', 'b']


  1> var x = ["e","a","é","f"] 
  2> x.sorted()
$R0: [String] = 4 values {
  [0] = "a"
  [1] = "e"
  [2] = "f"
  [3] = "é"
  1>  var x = ["a","b","A","B"]
  2> x.sorted() 
$R1: [String] = 4 values {
  [0] = "A"
  [1] = "B"
  [2] = "a"
  [3] = "b"

As far as I can tell, by default, these languages apply crude code-point sorting. Human beings understand that the characters e, é, E, É, è, ê, and so forth, should be considered as the same letter (e) with accents. There are exceptions to this rule, but the default which consists in sorting accentuated characters after the letter ‘z’ is just not reasonable. The way case is handled is patently stupid. You might prefer A to come before a, or vice versa, but no human being would ever sort the letters as A,B,a,b or a,b,A,B.

There are standards for sorting strings, such as the Unicode Collation Algorithm.

To get a sensible default, programming languages force you to use complicated code. In JavaScript, it is burdensome but easy enough….

> v.sort(Intl.Collator().compare)
[ 'a', 'e', 'é', 'f' ]

However, I am not sure what the equivalent is in Python and Swift. It does not jump at me in the documentation of the respective standard librairies. I did not even look at it for other popular programming languages like Go, C++, and so forth.

It is unacceptably difficult to do the “right thing”. The net result is that many programmers do not sort strings properly. If you use a natural language with non-English characters, you see the effect in many applications. It looks bad.

Thankfully, most major software products get it right. Microsoft Office, Google Docs, Apple apps… all do the right thing. It creeps up in small budget applications. I have to use one in my daily life as an employee of a public university, and it annoys me.

We should do better.

Open Culture: Pristine Footage Lets You Revisit Life in Paris in the 1890s: Watch Footage Shot by the Lumière Brothers

Pioneering filmmakers Auguste and Louis Lumière, the inventors of the projected motion picture, held their first private screening in Paris in March of 1895. The streets of the French capital would go on to provide the brothers with plenty of life in motion for their new technology to capture in the years thereafter, and you can watch eight such real scenes compiled in the video above. With its startling clarity — and its more recently corrected motion and added sound — this selection of pieces of Lumière footage offers a rich six-minute cinematic time-travel experience to the City of Light between the years of 1896 and 1900.

Guy Jones, the uploader of the video on Youtube, provides the following guide to the locations:

0:08 - Notre-Dame Cathedral (1896)

0:58 - Alma Bridge (1900)

1:37 - Avenue des Champs-Élysées (1899)

2:33 - Place de la Concorde (1897)

3:24 - Passing of a fire brigade (1897)

3:58 - Tuileries Garden (1896)

4:48 - Moving walkway at the Paris Exposition (1900)

5:24 - The Eiffel Tower from the Rives de la Seine à Paris (1897)

These places have continued to provide generation after generation of filmmakers with locations for their urban cinematic visions. (The Eiffel Tower now provides an immediate visual shorthand for the city, though it certainly wouldn't have in this Lumière footage, when it was less than ten years old.) That goes for French filmmakers as well as those of many other nationalities: even the Coen Brothers used Tuileries Garden for their short film Tuileries, previously featured here on Open Culture.

Or at least they used the subway station underneath Tuileries Garden, which wouldn't open until 1900, the same year as the Paris Métro itself — and the year of the Paris Exposition, also known as the Exposition Universelle, which gave Parisians the chance to ride the moving sidewalk seen in the second-to-last Lumière segment.

Anyone familiar with the Paris of the 21st century will be quick to observe the differences between the city now and the city 120 years ago. But a Parisian of the 1890s might well have said they were the ones who lived in a city made unrecognizable to earlier generations, given Georges-Eugène Haussmann's complete revision of the central city commissioned by Napoléon III and carried out between 1853 and 1870. For good or for ill, it's just as much Haussmann's Paris today as it was Haussmann's Paris in the 1890s, and criticisms that the city has remained frozen in time aren't without merit. But to see what has most dramatically changed about modern Paris — that is, what has changed about how people see and interact with modern Paris — we must turn to cinema. Might I suggest the work of Éric Rohmer?

via Boing Boing

Related Content:

Beautiful, Color Photographs of Paris Taken 100 Years Ago—at the Beginning of World War I & the End of La Belle Époque

Immaculately Restored Film Lets You Revisit Life in New York City in 1911

The Oldest Known Footage of London (1890-1920) Shows the City’s Great Landmarks

Time Travel Back to Tokyo After World War II, and See the City in Remarkably High-Quality 1940s Video

Berlin Street Scenes Beautifully Caught on Film (1900-1914)

Dramatic Footage of San Francisco Right Before & After the Massively Devastating Earthquake of 1906

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.

Pristine Footage Lets You Revisit Life in Paris in the 1890s: Watch Footage Shot by the Lumière Brothers 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.

Open Culture: A Short Video Introduction to Hilma af Klint, the Mystical Female Painter Who Helped Invent Abstract Art

It can be both a blessing and curse for an artist to toil at the behest of an influential patron. Financial support and powerful connections are among the obvious perks. Being hamstrung by someone else’s ego and timeframe are some of the less welcome realities on the flip side.

Hilma af Klint, the subject of a high profile exhibition at the Guggenheim, does not fit the usual artist-patron mold. She made her paintings to suit a spirit named Amaliel, with whom she connected in a seance. Amaliel tapped her to convey a very important, as yet indecipherable message to humankind.

Although af Klint was an accomplished botanical and landscape painter who trained at the Royal Academy in Stockholm, “Paintings for the Temple,” 193 works produced between 1906 and 1915 upon order of her spirit guide, are brightly colored abstractions.

As the Guggenheim’s Senior Curator and Director of Collections, Tracey Bashkoff, points out above, af Klint’s work was trading in symbolic, non-naturalistic forms ten years before abstractions began showing up in the work of the men we consider pioneers—Vasily Kandinsky, Piet Mondrian, and Paul Klee. Yet, she was nowhere to be found in MoMA’s 2012 blockbuster show, Inventing Abstraction: 1910-1925. Curator Leah Dickerman implied that the snub was af Klint’s own fault for considering her work to be part of a spiritual practice, rather than a purely artistic one.

In his 1920 essay, Creative Confession, Klee wrote, “art does not reproduce the visible; rather, it makes visible.”

It was a sentiment Klint shared, but the spiritual message encoded in her work was intended for a future audience. She instructed her nephew that her work was to be kept under wraps until twenty years after her death. (She died in 1944, the same year as Kandinsky and Mondrian, but her work was not publicly shown until 1986, when the Los Angeles County Museum of Art organized an exhibition titled The Spiritual in Art.)

Perhaps af Klint did not foresee how dramatically the respectability of spiritualism and seances—a popular pursuit of her time, and one shared by Mondrian and Kandinsky—would decline.

Her dedication to carrying out her spirit guide’s mission may remind some modern viewers of Henry Darger, the Chicago janitor who created hundreds of artworks and thousands of pages of text documenting the Glandeco-Angelinian War Storm, a strange and gory series of events taking place in an alternate reality that was very real to him.

Thus far no one has fully divined the spirit's message af Klint devoted so much of her life to preserving.

As critic Roberta Smith notes in her New York Times review of the Guggenheim show, af Klint, a member of the Swedish Lodge of the Theosophical Society, was well versed in occult spiritualism, Rosicrucianism, Buddhism, Darwinism, and the science of subatomic particles.

Hints of these interests are threaded throughout her work.

Color also helps to unlock the narrative. She used blue and lilac to represent female energy, rose and yellow for male, and green for the unity of the two. The Guardian’s Kate Kellaway reports that the artist may have been influenced by Goethe’s 1810 Theory of Colours.

Moving on to geometry, overlapping discs also stand for unity. U-shapes reference the spiritual world and spirals denote evolution.

Af Klint’s spiral obsession was not confined to the canvas. Roberta Smith reveals that af Klint envisioned a spiral-shaped building for the exhibition of The Paintings for the Temple. Visitors would ascend a spiral staircase toward the heavens, the exact configuration described by architect Frank Lloyd Wright’s interior ramps at the Guggenheim.

Perhaps we are getting closer to understanding.

For further study, check out the Guggenheim’s Teacher’s Guide to Hilma af Klint: Paintings for the Future. See the exhibition in person through mid-April.

Related Content:

Discover Hilma af Klint: Pioneering Mystical Painter and Perhaps the First Abstract Artist

Who Painted the First Abstract Painting?: Wassily Kandinsky? Hilma af Klint? Or Another Contender?

Wassily Kandinsky Syncs His Abstract Art to Mussorgsky’s Music in a Historic Bauhaus Theatre Production (1928)

Ayun Halliday is an author, illustrator, theater maker and Chief Primatologist of the East Village Inky zine.  See her onstage in New York City through December 20th in the 10th anniversary production of Greg Kotis’ apocalyptic holiday tale, The Truth About Santa, and the book-based variety show, Necromancers of the Public Domain. Follow her @AyunHalliday.

A Short Video Introduction to Hilma af Klint, the Mystical Female Painter Who Helped Invent Abstract Art 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.

Open Culture: How Emily Dickinson Writes A Poem: A Short Video Introduction

It became fashionable during the European Renaissance for poets to write what is called an ars poetica, a “meditation on poetry using the form and techniques of a poem.” The form follows Horace’s 19th century, B.C.E. Ars Poetica, in which the Roman writer recommends that poetry should both “instruct and delight.”

Theories of poetry varied from one generation to the next, but the ars poetica persisted throughout modern literary history and into the modernism of Archibald Macleish, Ezra Pound, and Marianne Moore, all of whom issued magisterial dicta about poetry that has stuck to it ever since.

“A poem should be motionless in time / As the moon climbs,” writes Macleish in his “Ars Poetica,” famously concluding, “A poem should not mean / But be.” In Moore’s “Poetry,” which she revised throughout her life, finally whittling it down to just three lines, she writes of “imaginary gardens with real toads in them.”

Such cryptic images and elliptical aphorisms enact ambiguity as they prescribe it, but they make perfectly clear they are making critical judgments about the art of poetry. Then we have Emily Dickinson’s “Tell all the truth but tell it slant” (1263), a poem that serves as her ars poetica, argues Evan Puschak, the Nerdwriter, in his video essay above, but purports on its surface to be about truth, capital "T."

Tell all the truth but tell it slant —
Success in Circuit lies
Too bright for our infirm Delight
The Truth's superb surprise
As Lightning to the Children eased
With explanation kind
The Truth must dazzle gradually
Or every man be blind —

Rarely is Dickinson so “direct,” says Puschak. “Known for ambiguity, odd manipulations in meter and rhyme” and “images that seem mysterious and sometimes out of place,” she wrote “poetry brimming with slant truth, poetry that’s seemingly laid out here, in perfect meter and matching rhymes.” The poem’s message is restated four times, from the thesis in the first line to the simile of the final four. “The meaning could not be more clear,” says Puschak.

But no, of course it's not. A poem is not a manual or manifesto. Like those poems more explicitly about poetry, this one enacts the ambiguity it prescribes. Are we, for example, to “tell all the truth” as in “the whole truth?” or as in “tell everyone the truth”? Does “success” lie "in circuit" like a patient lies on a table? Or does it tell lies, like, well… like poetry? Does the word “circuit” refer to an uncertain, circuitous path? Or, as one critic has suggested, to “circumference” (a term Dickinson used to refer to one’s lifespan or proper sphere)?

The next couplet, whose reference to “infirm Delight” may or may not take Horace to task, pushes us further out to sea when we begin to read it carefully. What is this truth that can be told, slanted, but also comes as a “surprise,” like lightning—terrible, sudden, and blinding? Is this a poem about “Truth” or about poetry?

In the final, heavily truncated, version of “Poetry,” Marianne Moore concedes, grumpily, that “one discovers in / it, after all, a place for the genuine.” As Dickinson’s poem demonstrates, trying to find a “place” in poetry for any stable meaning may be impossible. Still she insists that truth should “dazzle gradually,” an oxymoronic phrase, says Puschak, but it's as evocative, if more abstract, as real toads in made-up gardens—both are paradoxical means of describing what poetry does.

Dickinson realized that her poem “had to be the philosophy... that feeling of the text being destabilized from within, oscillating from meaning to the negation of that meaning.” Truth is inexpressible, perhaps inaccessible, and maybe even fatal. Yet it may strike us, nonetheless, in the dazzling ambiguities of poetry.

Related Content:

The Online Emily Dickinson Archive Makes Thousands of the Poet’s Manuscripts Freely Available

Watch an Animated Film of Emily Dickinson’s Poem ‘I Started Early–Took My Dog’

An 8-Hour Marathon Reading of 500 Emily Dickinson Poems

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

How Emily Dickinson Writes A Poem: A Short Video Introduction 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: Biochemistry Professor Transforms His Research into Bronze Recreations of Ancient Trilobites and Modern Insects

D. Allan Drummond (previously) is an associate professor of biochemistry, molecular biology, and human genetics at the University of Chicago. A few years ago Drummond began turning his extensive research of fossils and prehistoric sea creatures into detailed computer renderings which he then 3D prints and casts in bronze. Although many of his sculptures are inspired by ancient creatures like the trilobite, which existed for over 270 million years before its extinction 250 years ago, he also creates modern-day insects such as praying mantises and large bug-eyed jumping spiders.

Drummond currently has a solo exhibition titled “Curiosity” at Roq La Rue Gallery in Seattle through January 6th, 2019. In addition to several large individual sculptures, the show features a grid of wall-mounted trilobites that pay homage to the work of the 19th-century illustrator and naturalist Ernst Haeckel. Visitors are encouraged to remove the bronze pieces to explore the underside in greater detail—a part of the creature which is often eroded in fossils over time. You can see more of Drummond’s metal recreations of animals past and present on Instagram.

ScreenAnarchy: Blood Window 2018: TERRIFIED (ATERRADOS) Wins Best Latin American Film, And More

On Friday morning the award ceremony was held for the Ventana Sur film market. Of special interest to us at Screen Anarchy were the winners of the awards for the Blood Window program, the genre focused co-production program of VS.    Demian Rugna's Terrified (Aterrados) was awarded the EFFFF Latino Award for the best Latin American film of the year by the European Fantastic Film Festival Federation.    Jimena Monteoliva's follow up to last year's Clementina, To Kill The Dragon, won the Sofia Films Award. She will get color correction and VFX supervision for her film which was presented as a work in progress during this year's market.    Daniel de la Vega and Pablo Pares' throwback to postapocalyptic wasteland films Soy Toxico (I Am...

[Read the whole post on]

Penny Arcade: Comic: Arrears

New Comic: Arrears

ScreenAnarchy: Holiday Gift Guide 2018, Part 1: Boutique Blu-rays

Join myself and Michael Cockerill of the newly launched MindFrame(s) podcast as we create a Holiday Gift Guide for Screen Anarchy. Part 1 looks at home entertainment gifts from boutique labels. Scream Factory offers up an outstanding Candyman special edition, Blue Underground has released a fantastic 4K upgrade of Zombie and Arrow Video gives us an awesome edition of John Landis' little-seen first pic Schlock. Severin pulls Horror of Party Beach, an equally obscure title, into beautifully restored shape, and Cinelicious Pics sent their entire catalog! Belladonna of Sadness, The Last Movie, Private Property, Gangs of Wasseypur, Funeral Parade of Roses, and two from Agnes Varda starring Jane Birkin. All come highly recommended depending on the taste of the cinephile you are buying them for....

[Read the whole post on]

Colossal: A Look Back at Colossal’s Most Eye-Opening Articles in 2018

As 2018 draws to a close we decided to take a look back at the most popular artworks, photographs, and yes, hydraulic press pieces we’ve published over the last 12 months. Although 2018 was the year Banksy shredded a painting in front of a live audience, hundreds of other incredible feats of films, art, and design have also caught our attention, including Julie Gautier’s beautiful choreographed video inside the world’s deepest pool, the concentric earth-based mandalas of James Brunt, or our continued admiration of Reuben Wu’s drone-assisted landscape photography. Take a look below to see see top posts from this past year, from our tenth most viewed piece, to the design object that takes the spot at number one.

10. The Surprising Result of Crushing Non-Newtonian Fluids and Crayons in a Hydraulic Press

This year we discovered our obsession with hydraulic press videos, specifically clips from Finnish factory owners Lauri and Anni’s Hydraulic Press Channel. The pair sets their press to exert over 2,175 pounds of pressure per square inch—smashing crayons, cheese, soap, and other semi-malleable objects into unrecognizable and often colorful tubes that spring out from the every direction.

9. Foods Distorted Through Liquid and Glass in Photographs by Suzanne Saroff

Using glass cylinders and a variety of vessels, photographer Suzanne Saroff fractures the perspective of foods like eggplants, fish, and ripe bananas. The unique viewpoints shorten or elongate the provided edibles, creating distorted scenes that produce a creative glimpse at common fruits and meats.

8. Photographer Jonathan Higbee Discovers a World of Coincidence on the Streets of New York

Street photographer Jonathan Higbee walks the street of New York City prepped to capture unique and coincidental moments. Often graphic elements from vans, murals, and signage will be the key features that interact with everyday passersby, like the wide-mouthed shark and what appears to be a frightened pigeon in the snapshot above.

7. Creative Lego Constructions Bring Fantastical Moments to Life

Although we covered LEGO projects or products five times in 2018, our most popular piece that looked at the stackable bricks was a campaign developed by Asawin Tejasakulsin, a senior art director at Ogilvy & Mather in Bangkok, Thailand. The designer imaged playful scenarios in which LEGO bricks interact with the real world, such as a whale bursting from the side of a bookshelf, or a fire-breathing dragon heating a pot of soup.

6. Nearly Frozen ‘Slurpee’ Waves Surge off the Coast of Nantucket

Our sixth most popular post came just days after the New Year when photographer Jonathan Nimerfroh captured Jamie Briard surfing on partially frozen waves just off the shore of Nantucket. Although the rare phenomenon of slurry-like waves might only be seen once in someone’s lifetime, Nimerfroh has been able to shoot the effect twice over the last few years.

5. James Brunt Organizes Leaves and Rocks Into Elaborate Cairns and Mandalas

British land artist James Brunt arranges and balances rocks, leaves, sticks, and other natural materials he finds within the landscape near his home in Yorkshire, England. After arranging each object into mandala-like spirals and concentric circles, Brunt photographs his creation and allows nature to again take hold of the materials.

4. Banksy Painting Spontaneously Shreds Itself Moments After Selling for $1.4 Million at Sotheby’s

Moments after Sotheby’s sold a previously unseen version of Banksy’s Girl With Balloon for over 1.3 million dollars, the canvas begin to shred itself into strips as it fell through its ornate frame. After the surprising incident, which had been orchestrated by the infamously secretive artist, he took to Instagram for a follow-up statement to the event saying the piece was “Going, going, gone…”

3. Long Exposure Photos Capture the Light Paths of Drones Above Mountainous Landscapes

We are longtime fans of photographer Reuben Wu, who uses the aide of drones as aerial light sources to create incredible images of natural and manmade landscapes across the globe, including the brilliant blue rivers of molten sulfur in Indonesian volcanoes, and the thousands of glistening mirrors that compose Nevada’s SolarReserve. For his ongoing series Lux Noctis, Wu used light from his GPS-enabled drones to create a halo effect around cliffs and crests which are only perceptible in the resulting photograph.

2. Underwater Choreography Performed in the World’s Deepest Pool by Julie Gautier

This year Julie Gautier released AMA, a short film which is directed and performed by the deep sea diver and filmmaker. Gautier dives, twists, and dances within the world’s deepest pool, presenting captivating choreography nearly 130 feet underwater.

1. A Paper Memo Pad That Excavates Objects as It Gets Used

And finally, our most popular post from 2018 was a paper product created by the Japanese company Triad, whose main line of business is producing architectural models. Omoshiroi Blocks are stacks of laser-cut paper that when removed, reveal fantastic sites such as Kyoto’s Kiyomizudera Temple, Tokyo’s Asakusa Temple and Tokyo Tower.

Our editors want to extend a thank you for reading all of the pieces we have explored, obsessed over, and covered in 2018. We look forward to the spectacular artworks, science discoveries, short films, and other intriguing visuals that will be created and discovered in 2019!

Michael Geist: No More Settlement Demands: New Rules for Canadian Copyright Notice-and-Notice System Receive Royal Assent

Bill C-86, the Budget Implementation Act that includes extensive copyright reforms, passed the Senate and received royal assent last week. With little fanfare, the rules for Canada’s copyright notice-and-notice have now changed. The law no longer requires Internet providers to forward notifications that include the following:

(a) an offer to settle the claimed infringement;
(b) a request or demand, made in relation to the claimed infringement, for payment or for personal information;
(c) a reference, including by way of hyperlink, to such an offer, request or demand; and
(d) any other information that may be prescribed by regulation

In short, the law now excludes notices that contains an offer to settle, a payment demand or a link to a payment demand. Any notices that include that information do not need to be forwarded and ISPs will not face any penalties for failing to do so. The key remaining question is whether ISPs will crackdown on non-compliant notices. Since there is no penalty associated with sending non-compliant notices, subscribers are dependent upon ISPs carefully reviewing notices to ensure that they only forward those that fully comply with the law.

The government has been a strong supporter of the notice-and-notice system – it insisted that it remain in place as part of recent trade negotiations on the CPTPP and CUSMA – and has now taken long overdue steps to stop the abuse by establishing requirements that effectively ban the inclusion of settlement demands.

The post No More Settlement Demands: New Rules for Canadian Copyright Notice-and-Notice System Receive Royal Assent appeared first on Michael Geist.

ScreenAnarchy: Blood Window 2018: Takeaways And Standouts From The Pitch Sessions

With this year’s edition of Blood Window, the genre focused program in the larger Ventana Sur production market, all wrapped up we can now sit back and take a moment to reflect on the past week’s events.    This was my first trip down to the tenth annual Latin American film market held in Buenos Aires, Argentina. This was the sixth edition of Blood Window itself and though I have covered co-production markets over the years in the past, specifically Frontieres at Fantasia, Blood Window still managed to be a fresh and new experience for me.   While I had the larger film festival of Fantasia to go to when my market coverage was complete Ventana Sur and Blood Window are all business, baby. It...

[Read the whole post on]

BOOOOOOOM! – CREATE * INSPIRE * COMMUNITY * ART * DESIGN * MUSIC * FILM * PHOTO * PROJECTS: 2018 Booooooom TV Awards: Open for Submissions


A beautiful series by Montréal-based artist Maela Ohana (previously featured here).

Maela Ohana



Maela Ohana



Maela Ohana



Maela Ohana











Maela Ohana



Maela Ohana



Maela Ohana



Maela Ohana



Maela Ohana



Maela Ohana



Maela Ohana



Maela Ohana



Maela Ohana



Maela Ohana



Maela Ohana



Maela Ohana



Maela Ohana’s Website

Maela Ohana on Instagram

CreativeApplications.Net: The Center for Counter-Productive Robotics – Human-centric approach to automation

The Center for Counter-Productive Robotics – Human-centric approach to automation
Created at ECAL during a one week workshop led by Thibault Brevet, The Center for Counter-Productive Robotics is a collection of experiments where a robot was programmed to perform counter-productive tasks, with intention to develop a more human-centric approach to robotics.

Ansuz - mskala's home page: The imagination gap, part 3

This is the final part of a three-part series on the cognitive deficit in hypothetical thinking: some people seem unable to handle thinking about a difference between what is real and what is imagined.

Planet Haskell: Functional Jobs: Software Engineer - Haskell at Capital Match Platform (Full-time)

WHO WE ARE Capital Match is an innovative fintech business with a range of financial solutions to corporate and individual clients, investors and borrowers. Capital Match is the largest marketplace invoice financing platform in Southeast Asia based in Singapore, funded more than US$80 million in Singapore and Hong Kong over the past 3 years. Capital Match is backed by multiple VCs and institutional investors including Dymon Asia Capital, an alternative asset manager with $6bn AUM and Eduardo Saverin's B Capital Group.

THE ROLE We are looking for experienced developers to lead our tech growth in the fintech space, expand into surrounding countries, develop new products and integrations. You will be involved in all aspects of the creation, growth and operations of a secure web-based platform. Experience in front-to-back feature development, distributed deployment and automation in the cloud, build and test automation, is highly desirable.

OUR PLATFORM Our Platform is primarily developed in Haskell with a ClojureScript frontend. We use Docker containers, Nix and standard cloud infrastructure systems to manage our production rollouts. We make heavy use of modern functional programming practices, such as property-based testing and type-driven programming, to improve the quality of our code. We use many popular Haskell libraries such as Lens, QuickCheck, Servant, Scotty, Aeson, Attoparsec and Pandoc. We use continuous testing, integration and deployment wherever possible.


  • 5 years (or more) of software engineering experience.
  • Knowledge and passion for Haskell.
  • Strong foundation in data structures, algorithms, and software design.
  • Experience in developing both server and web applications.
  • Experience with modern software engineering practices such as TDD, CI, Emergent Design, Refactoring, Peer Review and Continuous Improvement.
  • Familiarity with Linux systems, command-line environments and cloud-based deployments.
  • A background in fintech and especially the lending space would be an advantage but is not essential.


  • Salary of SGD 5,000-10,000 / month (depending on experience and qualifications).
  • Attractive equity options for outstanding candidates.
  • Foreigners who relocate from most countries do not need to pay their country income tax and for the proposed remuneration income tax in Singapore is <10%.
  • Singapore is a great place to live, a vibrant city rich with diverse cultures, a very strong financial sector and a central location in Southeast Asia.
  • Visa sponsorship can be provided to the right candidate.


Send your CV and github link to careers [at] capital-match [dot] com

Get information on how to apply for this position. Comic for 2018.12.17

New Cyanide and Happiness Comic

Which Lights?: Forward, away from the dead and towards the enemy. To ruin, and the world’s ending!

Forward, away from the dead and towards the enemy. To ruin, and the world’s ending!

Which Lights?: spookylink: spookylink: i have no explanation



i have no explanation

Which Lights?: My hobby Reporting all non-pornographic posts on my dashboard as inappropriate

My hobby

Reporting all non-pornographic posts on my dashboard as inappropriate

Which Lights?: boiclitty: Hey @staff Suck my fucking girly dick End of the world, darling. @staff better...


Hey @staff

Suck my fucking girly dick

End of the world, darling. @staff better chapstick those lips because I’m next.

Perlsphere: Grant Proposals Nov/Dec 2018

The Grants Committee has received the following grant proposal for the Nov/Dec round.

Before the Committee members vote on any proposal, we like to solicit feedback from the Perl community.

Review the proposals at their individual links and please comment there by December 22nd, 2018. The Committee members will start the voting process following that and the conclusion will be announced shortly after.

Perlsphere: Grant Proposal: Improve Perl 6 Networking Support

The Grants Committee has received the following grant proposal for the Nov/Dec round. Before the Committee members vote, we would like to solicit feedback from the Perl community on the proposal.

Review the proposal below and please comment here by December 22nd, 2018. The Committee members will start the voting process following that.

Improve Perl 6 Networking Support

  • Name:

    Ben Davies

  • Amount Requested:

    USD $7200


Perl 6 lacks many features when it comes to networking in comparison to other languages. The aim of this is to give Perl 6 networking support equivalent to that of other languages, such as Python.

Benefits to the Perl Community

This will allow users to do more advanced networking without having to depend on NativeCall and will make the API for IO::Socket::Async and IO::Socket::INET more consistent. IO::Socket::UNIX will also be introduced to provide support for IPC with UNIX sockets.

Some of the reasons I am proposing this are that:

- SO_OOBINLINE is required for TELNET protocol

- Even after adding support for getsockopt/setsockopt, there's no way to use options that need to be set before connect/bind is called on both synchronous and asynchronous sockets, like SO_REUSEADDR

- Raw sockets are currently unusable without using NativeCall. This makes it impossible to write anything that depends on raw sockets, like ICMP, purely in Perl 6

- IPC is possible to do with TCP/UDP sockets, but UNIX sockets would allow users to share file descriptors between processes and would bypass the networking stack for faster IPC


This grant will allow Perl 6 to support:

- getting the file descriptors of IO::Socket::Async instances

- setsockopt/getsockopt on networking sockets

- setting options on IO::Socket::INET and IO::Socket::Async instances before bind/connect is called

- creating raw and UDP IO::Socket::INET sockets across all OSes

- sending/receiving data over raw and UDP IO::Socket::INET sockets

- creating UNIX sockets and being able to send and receive data, get/set options, etc. over them

Some of these features are breaking changes and will need to wait until 6.e.

Project Details

I have already started working on implementing .native-descriptor for IO::Socket::Async and getsockopt/setsockopt support.


- Implement .native-descriptor for getting the file descriptors of IO::Socket::Async sockets

- Implement getsockopts op to get getsockopt/setsockopt option constants

- Implement getsockopt/setsockopt ops

- Implement asyncsocket op

- Refactor IO::Socket::Async to use nqp::asyncsocket

- Add a .new method to IO::Socket::Async

- Refactor IO::Socket::INET to allow creating sockets without having bind/connect called immediately

- Refactor IO::Socket::Async's UDP methods to allow using getsockopt/setsockopt on UDP sockets before they are bound

- Make initializing raw and UDP IO::Socket::INET sockets work across all OSes

- Implement sendto/recvfrom ops

- Implement unixsocket, unixopen, unixlisten, unixconnect ops

- Create IO::Socket::UNIX

- Implement unixsendfd/unixreadfd ops and support sending/receiving file descriptors over unix sockets

Project Schedule

I imagine this would take a few months to complete. I've already begun work on implementing .native-descriptor and getsockopt/setsockopt support, so I'm ready to start as soon as possible. I will be working around 6 hours a day on this.

3 months * 4 weeks * 5 days * 6 hours * $20 = $7200

Completeness Criteria

Whenever my code gets merged into MoarVM/nqp/rakudo's master branch.


I am a 22 year old self-taught programmer with 6 years experience. I know C, Perl 6, node.js, as well as some Python, Java, Rust, and Go. I've been working with networking-related code for around 5 years, particularly with TELNET and WebSockets. I've been contributing to Perl 6 core since December 2017 and have already made some changes to its networking features, like .native-descriptor for IO::Socket::INET.

OUR VALUED CUSTOMERS: The warmth of the holidays!

Planet Haskell: Michael Snoyman: Kids Coding Interlude: the function game

Since the kids have been back at school and we’ve been busy with work and some home renovations, I unfortunately haven’t had a chance to continue much with the kids coding training. However, when discussing the general topic of education at Functional Conf, the topic of “the function game” came up, and I wanted to share what we did. I found this a great—and perhaps vital—pre-training for Haskell.

The function game is simple: I pretend to be a function, let the kids give me input, and I give them output. They need to try to figure out what the function is. Here’s an example conversation:

Me: When you give me 1, I give you 2. When you give me 2, I give you 3.
Them: What if I give you 5?
Me: 6
Them: 8
Me: 9
Them: You’re just adding 1!

With each kid, I’ve always started off with addition. I’ll later get into identity, but that one is (perhaps surprisingly) more confusing for them. Multiplication by 2 is a good follow-up to addition. Then, when they get comfortable with discovering a few of these, I’ll throw in:

  • f x = x * 2 + 3
  • f x = x (identity)
  • f x = 5 (constant)

We’ll typically play this game at the dinner table. At some point I’ll also actually define a function for them, after they’ve already experienced some success at guessing what I’m doing:

It always gives the same output for the same input

The next curveball I introduce is different types:

Me: When you give me “apple”, I give you 5
Them: What?
Me: Functions don’t just work on numbers
Them: OK…
Me: When you give me “book”, I give you 4
Them: It’s the number of letters!

After that, each time I tell them I have a new function, they’ll ask me the type of the input. As a Haskeller father, I couldn’t be more proud :).

I’ll also teach them about functions of multiple inputs:

Me: When you give me 2 and 3, I give you 5
Them: What?
Me: Functions can take more than 1 input.

And after a few more examples, they figure out that I’m just doing addition.

I think I tried demonstrating partial function application by saying “when you give me 2, I give you a new function you can play with.” But I don’t remember if I actually did this, or if I just planned it. And since I’m sitting in a hotel lobby waiting for a cab, I can’t test out the theory on them right now.

Anyway, I hope this proves useful for others trying to teach their kids (or maybe non-kids!) either math or functional programming. If you try it out, please let me know how it goes.

Perlsphere: Maintaining Perl 5 (Tony Cook): November 2018 Grant Report

This is a monthly report by Tony Cook on his grant under Perl 5 Core Maintenance Fund. We thank the TPF sponsors to make this grant possible.

Approximately 34 tickets were reviewed, and 6 patches were

[Hours]         [Activity]
  7.90          #123638 review existing patch, work on fixes, testing
                #123638 review test results, debugging, research
                #123638 more research, work on a fix, debugging, testing
                #123638 debugging, partial fix
                #123638 debugging
  3.15          #123724 (sec) review, work out extra work needed, work on
                #123724 (sec) fix a related problem in blead, comment with
                #123724 (sec) research
  0.40          #125760 testing, comment
  0.63          #126706 retest, apply to blead
  1.68          #131065 (sec) review, research
                #131065 (sec) more research, look for related ticket
 12.74          #132147 (sec) apply security warning patch, work on trying
                to reproduce
                #132147 (sec) debugging
                #132147 (sec) debugging, work on a fix, polish, write
                tests, testing
                #132147 (sec) fuzz testing, fix an issue, more testing
                #132147 (sec) add more validation, improve and extend fuzz
                testing, more fuzz testing runs, testing
                #132147 (sec) polish, comment with patches, fuzz tools
                #132147 rebase, testing, skip on mismatched architecture
                for test data
                #132147 more testing, apply to blead
                #132147 ticket clean up
  1.00          #133440 research, re-work
  0.45          #133511 review, test, apply to blead
  0.17          #133640 briefly comment
  0.72          #133643 review, make public and link to meta ticket
  8.96          #133659 comment
                #133659 research, comment
                #133659 work on finishing in-place edit on non-error exit
                #133659 updates to tests, work on fix within die/eval vs
                normal scope exit
                #133659 try to break scope cleanup detection, rethink
                #133659 review scope handling code, try to work up a
                #133659 more work on possible solution, comments with work
                to date
                #133659 retest and apply to blead
  0.58          #133662 review patch, testing, apply to blead
  0.58          #133668 review patch, testing, apply to blead
  0.17          #133670 comment
  2.00          #133673 research, comment
                #133673 research
  2.70          #133686 work on tests for the numeric.c conversions,
                review other patches, research comments
  0.42          #133688 research, briefly comment
  0.83          Configure alignment probe testing
  2.10          diagnose cygwin build issues, format issue in utf8.c
  1.25          lgtm, lint research
  3.30          more security issue backport
                more security issue backport
  1.50          more security issue backport, debugging
  2.00          more security issue backport, finally find problem, work
                on another backport
  2.10          more security issue backport, give up on 133423, since I
                don’t think it’s applicable
  1.92          more security issue backport, test failures 
  1.41          more utf8-readline re-work
                more utf8-readline re-work
  0.92          perldelta updates
  1.17          security backports – discussion with khw
  2.07          security backports, testing, email to downstream
  1.47          security issue backport checks for downstream
  1.25          security ticket admin: make some tickets public, add
                reproducers for next batch, emails
  2.20          upstream bug reports, testing, apply to blead
  0.97          utf8 readline – restructure
  0.88          utf8-readline more re-work
 71.59 hours total Comic for 2018.12.16

New Cyanide and Happiness Comic

Perlsphere: Nominate Perl heroes for the 2018 White Camel Awards

It's the 20th anniversary of the White Camel Awards!

We're looking for nominations for the 2018 White Camel Awards that recognize significant non-technical achievement in Perl and its community. Each year we recognize work in the broad categories of community, advocacy, and user groups. These people keep the Perl community going and deserve to be recognized!

White baby camel

To nominate someone, you can send me a name and your reasoning through any means you like. Reply here, post on Twitter (note @briandfoy_perl or use the #whitecamelaward tag so I'll find it), send me email, hold up a banner at the a famous sporting event where someone breaks a record and all the news covers it (I know, hard to plan), or something more creative. Note, however, that the method of nomination does not factor into our decision!


(Check out the OVC Store!

OUR VALUED CUSTOMERS: Check out the Our Valued Customers store!

Framed prints, books, shirts and comics! Last chance to order before Christmas!

Daniel Lemire's blog: Science and Technology links (December 15th 2018)

  1. Academic excellence is not a strong predictor of career excellence. There is weak correlation between grades and job performance. Grant reviews the evidence in details in his New York Times piece.When recruiting research assistants, I look at grades as the last indicator. I find that imagination, ambition, initiative, curiosity, drive, are far better predictors of someone who will do useful work with me. Of course, these characteristics are themselves correlated with high grades, but there is something to be said about a student who decides that a given course is a waste of time and that he works on a side project instead. Breakthroughs don’t happen in regular scheduled classes, they happen in side projects. We want people who complete the work they were assigned, but we also need people who can reflect critically on what is genuinely important. I don’t have any need for a smart automaton: I already have many computers.I have applied the same principle with my two sons: I do not overly stress the importance of good grades, encouraging them instead to pursue their own interests and to go beyond their classes.
  2. Our hearts do not regenerate. Thus a viable strategy might to transplant brand new hearts from pigs. This is much harder than it appears, however. But progress is being made. Researchers are now able to keep baboons alive for months with transplanted pig hearts. To achieve this good result, the scientists had to use an immunosuppressant drug to prevent unwanted growth in the pig’s heart. With some luck, some of us could benefit from transplanted heart pigs in the near future.
  3. Cataract is the most common cause of blindness. It can be “cured” by removing your natural lens and replacing them with artificial lenses called IOL (intraocular lenses). This therapy was invented in the 1940s, but it took 40 years before it became widespread in wealthy countries. It is still out of reach in many countries. Yet the cost of intraocular lenses is less than 10$ and the procedure is inexpensive (it costs less than 25$ in total in some countries). Even today, in many rich countries, access to this therapy is restricted. Finally, in 2017, a government agency in UK recommended that we stop rationing access to cataract surgery.
  4. Physically fit middle-age women are much less likely to develop dementia (e.g., Alzheimer’s).
  5. You might expect that research results published in more prestigious venues would also be more reliable. Brembs (2018) suggests it works the other way around:

    an accumulating body of evidence suggests the inverse: methodological quality and, consequently, reliability of published research works in several fields may be decreasing with increasing journal rank

    My own recommendation to colleagues and students has been that if peer-reviewed publications are warranted, then it is fine to target serious well-managed venues, irrespective of their “prestige”.

    It is hard enough to do solid research, if you also have to tune it so that it outcompetes other proposals in a competition for prestige, I fear that you may discourage good research practices. Scientists care too little about modesty, it is their downfall.

  6. Lomborg, a reknown economist, writes about climate change:

    Using the best individual and collectively peer-reviewed economic models, the total cost of Paris – through slower GDP growth from higher energy costs – will reach $1-2 trillion every year from 2030. (…) It’s so expensive because green energy isn’t ready to replace fossil fuels at scale. Nations are using expensive subsidies and other policies to force immature green technologies on consumers and businesses. We need to change course. The smart option, backed by economic science, is to adopt a technology-led policy. This means investing far more into green energy research and development. Rather than forcing the rollout of immature energy sources, we need to ensure that green energy can out-compete fossil fuels.

    I really like the term “technology-led policy”. If you want to change the world for the better, then making the good things cheap using technology and science is the golden path.

  7. About 60% of all scientists never lead a research project of their own which indicate that they always play a supporting role. In fields like astronomy, ecology and robotics, half of all researchers leave the field every five years, a consequence of the fact that there are many more aspiring scientists than there are good jobs. Though this sounds bad, but one must consider that the number of scientists doubles every 15 years. Thus even though the job prospects for scientists look poor in relative terms, we must consider that we never had so many gainfully employed scientists.
  8. The state of Louisiana is adopting digital drive licenses. Meanwhile, in Montreal, I still can’t take the subway without constantly recharging a stupid card.
  9. Lack of copper might lead to heart disease. Copper is found in shiitake mushrooms, oysters, dark chocolate, sesame seeds, cashew nuts, raw kale, beans and avocados.
  10. The diabetes drug Metformin is under study as an anti-aging drug. It is believed to be very safe yet Konopka et al. suggests that it may lower the benefits due to exercise.
  11. Over time, our bodies accumulate a small fraction of “senescent cells”. It is believed that these disfunctional cells contribute to the diseases of old age. For the last few years, researchers have been looking for senolytics, drugs that can kill senescent cells. It turns out that two antibiotics approved for medical use are potent senolytics.
  12. The first autonomous vehicule (the ancestor of the self-driving car) was built in 1961.
  13. Billions of dollars have been spent on clinical trials to try to cure Alzheimer’s, all in vain. Golde et al. propose that the problem might have to do with poor timing: we need to apply the therapy at the right time. Wadmam suggests that Alzheimer’s might spread like an infection.
  14. China is introducing far reaching penalties for researchers who commit scientific fraud:

    Chinese leaders have been increasingly focused on scientific misconduct, following ongoing reports of researchers there using fraudulent data, falsifying CVs and faking peer reviews. In May, the government announced sweeping reforms to improve research integrity. One of those was the creation of a national database of misconduct cases. Inclusion on the list could disqualify researchers from future funding or research positions, and might affect their ability to get jobs outside academia. (Source: Nature)

    We need to recognize that the scientific enterprise is fundamentally on an honor-based system. It is trivial to cheat in science. You can work hard to collect data, or make it up as you go. Except for the most extreme cases, the penalty for cheating is small because there is almost always plausible deniability.

Planet Haskell: JP Moresmau: 1, 2, 3, Go!

OK, the title is an easy joke, but that's what happens when you give a silly name to a language… So I've started looking at Golang, since it seems to be the newish (ok, ok, not that new) kid on the block. And in fact the name is not an issue: I usually type "golang" to prefix my searches on the web and it works pretty well.

- I installed Go and the first striking thing are the instructions to read "how to write Go code". Having one way to structure the code (one workspace containing source control repositories, each containing packages) makes it very easy to get started - compared say to Java where different IDEs may have different approaches to what a "project" is. I wonder how this structure works when you write Go professionally, and you want to distinguish open sources dependencies from proprietary code. Also coming from Java where you're used to structure classes into packages, seeing Go repositories with a huge number of files inside one folder makes me shudder, but we'll see over time.
- I started of course with the Tour of Go. In a couple of evenings I went through it, proving how easy and small the base language is. Encouraging!
- I then started to get my hands dirty by writing a little app that hooks together JSON web services, Cassandra, Elastic Search and Docker. It was fairly easy to find libraries and manage to put them to use. I'll probably push that code to Github at some stage after some cleaning up.

So Go delivers on the promise to be a language easy to pick up and easy to get started. You can get from zero to productive in a few hours.

These are the features that stood up for me:

- Lack of generics. It's a trope in the computing world "Go doesn't have generics, ha ha ha". Of course straight away you see that arrays/slices and maps are typed, so already the basic use case for generics (safety in collections) is taken care of. Then you have functions as first-class citizens and interfaces, so there are plenty of techniques you can use to go around the lack of generics, so I'm not sure it's such a huge problem.
- Interfaces. It's interesting that there is no explicit declaration that a type implements an interface. If you define a Duck interface with a Quack method, every type that you use as the receiver for an implementation of a Quack function is considered a Duck. This is nice, but still tooling support to find out all types that implement a given interface will be a must ("OK, this function expects anything implementing Duck, what implementation can I use?").
- Pointers. I'm at the core a Java developer, so the idea of pointers makes me a bit uneasy. But I breathed easier when I saw "no pointer arithmetic". In fact, pointers in Go just make explicit if you pass a struct by value or by reference. I feel this adds a level of clarity that is worth the extra syntax and the initial repulsion the word "pointer" may awake in some.
- Errors. Go recommends a style where a function that may fail should return a tuple: normal value, error. The calling code can decide to ignore the error or deal with it. This is reminiscent of Either in Haskell. I'm still not sold that this is a better system than checked exceptions (but I seem to be the only one liking checked exceptions it seems), but I'll need more practice before I make my mind up.

So all in all I like a lot of design decisions that were made in Go, and it certainly makes for a pleasant programming experience. I ran into a few gotchas that I'll cover maybe in later posts, but nothing too stressful. So far, I have to say I enjoyed the experience!

Happy Go Hacking!

s mazuk: tumblr was where I had the most direct source to unfiltered jumbled garbage into my eyeballs and I’m...

tumblr was where I had the most direct source to unfiltered jumbled garbage into my eyeballs and I’m really gonna miss that Comic for 2018.12.15

New Cyanide and Happiness Comic

Penny Arcade: News Post: Switcharoo 2

Tycho: Hades is sick with the fever. They just dropped a patch for it too, stuffed with the collated Wisdom of Crowds regarding a number of issues, and there’s a little note ticking down at the bottom toward the next big update.  It’s funny; I know these guys fairly well, I was a fan of Greg Kasavin from way back - gaze ye upon this 2002 act of worship in the strip for more - but I usually try to grab a bite to eat with them if they’re working a PAX.  I’ve given them a ton of unsolicited advice, for example: - Pyre was really cool.  I think it’s…

Disquiet: Eivind Aarset and His Layers

No music journalist covers the expanded guitar quite like Michael Ross, who writes regularly at his website about performers currently pushing the six-string (and twelve- and eight- …) beyond its traditional territories. A mutual favorite of Ross’ and mine is the Norwegian guitarist Eivind Aarset, who is perhaps best known for his work alongside trumpeter Nils Petter Molvaer, though Aarset is long into his own deserved recognition for work as a leader, collaborator, and soloist.

About a month ago, Ross singled out video of a trio date Aarset had played in Prague, which led me, as usual, down a rabbit hole orchestrated by the guitarist’s penchant for highly reverberant spaciousness.

One highlight was a trio of live solo performances recorded in Istanbul, Turkey, back in February of 2015. Part one includes some discussion of his techniques, and part two is a song-like treat, packed with sharp contrasts, and rich with held tones reminiscent of Robert Fripp’s soloing. The highlight is part three (embedded up above), in which Aarset slowly layers a rhythm, and noise of his scraped and plucked strings, before venturing into deep explorations of various modes, his lush chords lingering like smoke.

This is the latest video I’ve added to my YouTube playlist of recommended live performances of ambient music. Video originally posted at YouTube. More from Aarset at

ScreenAnarchy: What's the best Shakespeare movie adaptation?

I recently watched a bunch of film adaptations from Shakespeare plays as I was about to play in a contemporary retake on Othello. Here's my pick of some international masterpieces - which would have never existed if it weren’t for the man (or the woman after all...). What are your thoughts?       RAN RAN - When warlord Hidetora Ichimonji passes his power to his eldest son, his entire values and life achievements fall apart in a soumptuously tragic manner. If you haven’t watched a Kurosawa movie yet, I absolutely urge you to! This legendary Japanese director (The Seven Samourai, Ikiru, and many more) has inspired Asian and Western cinema since the 1950s. In his 1985 multi-awarded movie Ran, Kurosawa pays tribute to Shakespeare’s King Lear. This...

[Read the whole post on]

Colossal: New Paintings and Sculptures by Seth Globepainter Explore the Psychological Depths of Childhood

“Scientia Potestas Est,” Painted resin and a collection of books, installation in situ at DCG London

French street artist Julien Malland, known as Seth Globepainter (previously), currently has two solo exhibitions collectively titled Chambrum Rangeam, or “clean up your room,” at Dorothy Circus Gallery’s locations in London and Rome through December 24, 2018. The title references the common phrase uttered by ones’ parents in childhood in order to present a space of youthful freedom in the two concurrent shows. The exhibitions include new sculptures, like Malland’s piece “Scientia Potestas Est” (above) which presents a young boy on a stack of used books.

Malland also recently released a lithograph print that fuses the precision of printing with the often messy medium of spray paint. The piece, titled “The Ladder,” features a boy sitting on top of a singular cloud looking off into the distance. Propped against his resting place is a multi-colored ladder, produced by the artist in dripping lines of spray paint. For the limited edition, which was released on December 7th and has already sold out, Malland collaborated with the Parisian printing house Idem Paris. Although the base of each work will be uniform, his added hand-painted gestures make each completely unique.

You can see more documentation of his new works included in the exhibition on the gallery’s website, and follow Malland on Instagram.

"E Fructu Arbor Cognoscitur," Acrylic, spray paint, and rags on canvas, 114 x146 cm

“E Fructu Arbor Cognoscitur,” Acrylic, spray paint, and rags on canvas, 114 x146 cm

"Aut Viam Inveniam Aut Faciam," Acrylic and spray paint on canvas, 114 x 146 cm

“Aut Viam Inveniam Aut Faciam,” Acrylic and spray paint on canvas, 114 x 146 cm

"Temet Nosce," Acrylic and spray paint on canvas, 97 x 130 cm

“Temet Nosce,” Acrylic and spray paint on canvas, 97 x 130 cm

OUR VALUED CUSTOMERS: Old school fan...

Get a FRAMED, SIGNED mini print of ANY Our Valued Customers comic for only $20!

ScreenAnarchy: LET ME BE FRANK: Episode 11 "Workshop of Demands"

“Workshop of Demands”, the eleventh episode in the LET ME BE FRANK web documentary series, focuses on the early days of Frank’s Berkeley workshops on intimacy and relationships, and the community and early performances that grew out of them.  This chapter explores how the freedom, honesty and vulnerability of the workshops set the stage for innocent, outrageous and erotic public performances, parades and rehearsals, including Frank’s first performances at the late 1970s San Francisco punk mecca, The Mabuhay Gardens.  Readings by Russell Shuttleworth and Linda Mac.  The episode also features “The Beginning of the Outrageous Period”, the 5th installment of “How To Handle An Anthropologist”, a recurring animated feature in the Let Me Be Frank series, from the soon-to-be-published book by the same name.  Episode...

[Read the whole post on]

The Shape of Code: Growth of conditional complexity with file size

Conditional statements are a fundamental constituent of programs. Conditions are driven by the requirements of the problem being solved, e.g., if the water level is below the minimum, then add more water. As the problem being solved gets more complicated, dependencies between subproblems grow, requiring an increasing number of situations to be checked.

A condition contains one or more clauses, e.g., a single clause in: if (a==1), and two clauses in: if ((x==y) && (z==3)); a condition also appears as the termination test in a for-loop.

How many conditions containing one clause will a 10,000 line program contain? What will be the distribution of the number of clauses in conditions?

A while back I read a paper studying this problem (“What to expect of predicates: An empirical analysis of predicates in real world programs”; Google currently not finding a copy online, grrr, you will have to hassle the first author:, or perhaps it will get added to a list of favorite publications {be nice, they did publish some very interesting data}) it contained a table of numbers and yesterday my analysis of the data revealed a surprising pattern.

The data consists of SLOC, number of files and number of conditions containing a given number of clauses, for 63 Java programs. The following plot shows percentage of conditionals containing a given number of clauses (code+data):

Percentage of conditions containing a given number of clauses in 63 large Java programs.

The fitted equation, for the number of conditionals containing a given number of clauses, is:

conditions = 3*slen^pred e^{10-10pred-1.8 10^{-5}avlen^2}

where: slen={SLOC}/{sqrt{Number of Files}} (the coefficient for the fitted regression model is 0.56, but square-root is easier to remember), avlen={SLOC}/{Number of Files}, and pred is the number of clauses.

The fitted regression model is not as good when slen or avlen is always used.

This equation is an emergent property of the code; simply merging files to increase the average length will not change the distribution of clauses in conditionals.

When slen = e^{10} = 22,026, all conditionals contain the same number of clauses, off to infinity. For the 63 Java programs, the mean slen was 2,625, maximum 11,710, and minimum 172.

I was expecting SLOC to have an impact, but was not expecting number of files to be involved.

What grows with SLOC? Number of global variables and number of dependencies. There are more things available to be checked in larger programs, and an increase in dependencies creates the need to perform more checks. Also, larger programs are likely to contain more special cases, which are likely to involve checking both general and specific values (i.e., more clauses in conditionals); ok, this second sentence is a bit more arm-wavy than the first. The prediction here is that the percentage of global variables appearing in conditions increases with SLOC.

Chopping stuff up into separate files has a moderating effect. Since I did not expect this, I don’t have much else to say.

This model explains 74% of the variance in the data (impressive, if I say so myself). What other factors might be involved? Depth of nesting would be my top candidate.

Removing non-if-statement related conditionals from the count would help clarify things (I don’t expect loop-controlling conditions to be related to amount of code).

Two interesting data-sets in one week, with 10-days still to go until Christmas :-)

Penny Arcade: Comic: Switcharoo 2

New Comic: Switcharoo 2

Planet Haskell: Holden Karau: Validating Big Data Jobs - Stopping Failures before Production (w/ Spark, BEAM, & friends!) -- now with Scooters @ Scala eXchange 2018

Come join me on Friday 14 December @ 16:00 at Scala eXchange 2018 London, UK for Validating Big Data Jobs - Stopping Failures before Production (w/ Spark, BEAM, & friends!) -- now with Scooters.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

OCaml Planet: opam 2.0.2 release

We are pleased to announce the release of opam 2.0.2.

As sandbox scripts have been updated, don’t forget to run opam init --reinit -ni to update yours.

This new version contains mainly backported fixes:

  • Doc:
    • update man page
    • add message for deprecated options
    • reinsert removed ones to print a deprecated message instead of fail (e.g. --alias-of)
    • deprecate no-aspcud
  • Pin:
    • on pinning, rebuild updated pin-depends packages reliably
    • include descr & url files on pinning 1.2 opam files
  • Sandbox:
    • handle symlinks in bubblewrap for system directories such as /bin or /lib (#3661). Fixes sandboxing on some distributions such as CentOS 7 and Arch Linux.
    • allow use of unix domain sockets on macOS (#3659)
    • change one-line conditional to if statement which was incompatible with set -e
    • make /var readonly instead of empty and rw
  • Path: resolve default opam root path
  • System: suffix .out for read_command_output stdout files
  • Locked: check consistency with opam file when reading lock file to suggest regeneration message
  • Show: remove pin depends messages
  • Cudf: Fix closure computation in the presence of cycles to have a complete graph if a cycle is present in the graph (typically ocaml-base-compilerocaml)
  • List: Fix some cases of listing coinstallable packages
  • Format upgrade: extract archived source files of version-pinned packages
  • Core: add is_archive in OpamSystem and OpamFilename
  • Init: don’t fail if empty compiler given
  • Lint: fix light_uninstall flag for error 52
  • Build: partial port to dune
  • Update cold compiler to 4.07.1

Installation instructions (unchanged):

  1. From binaries: run
    sh <(curl -sL

    or download manually from the Github “Releases” page to your PATH.
    In this case, don’t forget to run opam init --reinit -ni to enable sandboxing if you had version 2.0.0~rc manually installed or to update your sandbox script.

  2. From source, using opam:
    opam update; opam install opam-devel

    (then copy the opam binary to your PATH as explained, and don’t forget to run opam init --reinit -ni to enable sandboxing if you had version 2.0.0~rc manually installed or to update you sandbox script)

  3. From source, manually: see the instructions in the README.

We hope you enjoy this new minor version, and remain open to bug reports and suggestions.

NOTE: this article is cross-posted on and Please head to the latter for the comments!

BOOOOOOOM! – CREATE * INSPIRE * COMMUNITY * ART * DESIGN * MUSIC * FILM * PHOTO * PROJECTS: Instagram of the Day: Agoraphobic Traveller

Tea Masters: Christmas light and colors

Let Oolong bring warmth and joy to your Christmas season!

BOOOOOOOM! – CREATE * INSPIRE * COMMUNITY * ART * DESIGN * MUSIC * FILM * PHOTO * PROJECTS: Booooooom TV Best of the Week: Music Videos, Short Films & Animation

Planet Haskell: Holden Karau: Holden @ Kiwi Code Mania: talk title TBD @ Code Mania

Come join me on Wednesday 15. May 2019 at Code Mania 2019 Auckland, New Zealand for Holden @ Kiwi Code Mania: talk title TBD.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 Comic for 2018.12.14

New Cyanide and Happiness Comic

Disquiet: Disquiet Junto Project 0363: Gymnopédie Rats

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, December 17, 2018, at 11:59pm (that is, just before midnight) wherever you are on. It was posted in the morning, California time, on Thursday, December 13, 2018.

Tracks are added to the above playlist for the duration of the project.

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

Disquiet Junto Project 0363: Gymnopédie Rats

The Assignment: Make over Erik Satie’s “Gymnopédie No. 1” in your chosen genre.

Many thanks to Peggy Nelson and Alex Hawthorn for having proposed this project, at the tail end of last week’s project.

Just one step this week: Make over Erik Satie’s “Gymnopédie No. 1” in your chosen genre: metal gymnopédie, britpop gymnopédie, R&B gymnopédie, high school choir gymnopédie, slowed-down-800% gymnopédie, …

Six More Important Steps When Your Track Is Done:

Step 1: Include “disquiet0363” (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 “disquiet0363” (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, December 17, 2018, at 11:59pm (that is, just before midnight) wherever you are on. It was posted in the morning, California time, on Thursday, December 13, 2018.

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

Title/Tag: When posting your track, please include “disquiet0363” 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 363rd weekly Disquiet Junto project — Gymnopédie Rats: Make over Erik Satie’s “Gymnopédie No. 1” in your chosen genre — at:

Many thanks to Peggy Nelson and Alex Hawthorn for having proposed this project, at the tail end of last week’s project.

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 from the International Music Score Library Project:

MattCha's Blog: 2008 Menghai “Big Classic”, Oldish, and Kinda Drinkable

I have a history with this cake from years ago.  My puerh drinking buddy in Victoria, once brought this one over for us to drink in 2010, I think.  He was looking for a suitable cheap everyday drinker puerh and wanted to know what I thought about it.  After the session, I convinced him to buy a tong of the famous 2001 (aka 90s) Ding Xing  through the original Taobao dealer.  I think the Ding Xing was $40.00 a cake back then and this "Big Classic" cake was around $25.00? I paid $38.00 ($0.11/gr) from Tuo Cha Tea last year (it also had 10% discount applied for bulk orders on top of that) the price has gone up to $45.00 ($0.13/g).  Years back my rationale was that the 2001 Ding Xing is just a much better value so why bother with this Menghai.  He agreed a bought a tong for everyday drinking.  At that time this Menghai "Big Classic" was not quite ready to drink even.

An interesting thing about the 2008 Big Classic is that everyone still has this cake sitting around (and the famous Ding Xiang is hard to track down these days)!  … Tuo Cha Tea, Puerhshop, Yunnan Sourcing, King Tea Mall… they all have it.  That really says a lot.  If it was good, surely there wouldn’t be any left… would there?

From what I’ve read about this one is that Menghai used a blend of older leaves to make this recipe. That means that some of the actual tea material is older than the date stamp. I read somewhere that the average leaf grade in this recipe is “3” but I can't remember where I read that.  Seems like a Menghai factory tea that is truly ready to drink.  So let’s crush this one with a meditative mind…

The dry leaves smell of sweet plum and slight malted sweetness.

First infusion is a warming broth of heavier, grounding mellow tastes.  It has a soft full feeling.  There are woody slightly cinnamon tastes that greet the mouth initially then slowly traverse into a creamy barely sweetness and coolness.  This tea has a complete, round, fullish, mellow feeling right off the bat.  A nice slight sweet cinnamon tastes lingers on the breath.

The second infusion presents more now with a sweet round deep wood and slight cinnamon taste.  The taste is such that it pushes saliva onto the tongue.  This infusion has a pronounced returning sweet coolness.  This tea has a complete taste and is ready to drink now semi-aged without a need to age further.  It has a nice warming comforting feeling that I used to get from 10 years old Menghai factory tea that was more humidly stored than this very dry Kunming stored one.  However this tea almost lacks everything else which would identify it as Menghai Factory.  However, this tea is also sufficiently alerting as well, it has that typical and welcome factory Qi.

The third infusion presents now with a more woody-slightly malty raison taste.  The wood taste extends itself into the mid-profile and aftertaste.  The sweetness and cinnamon taste is much less here as the mouthfeel fills out and is just barely drying on the tongue.  The taste of this puerh is not exciting nor complex but rather stable, round, and reassuring.  The qi pushed me into a high state now- I feel like I am a tiny tiny bit floating here.  The qi is quite a relaxing, in the head type qi but also is sufficiently alerting.  I like the Qi of this tea for the price, even if a bit typical, at least it has some gas in this aspect.

The fourth infusion flattens out a bit more with the wood note now predominating and the sweeter notes of raison and cinnamon now being delegated to the aftertaste or breath.  The taste is comforting on this very cloudy morning but lacks anything interesting or complex.  The simple tastes are enjoyed.

The fifth infusion has resorted back to that more balanced creamy sweet raisin wood taste.  The sweetness feels more rounded here now.  The mouthfeel remains just a touch dry and the throatfeel is open but not significantly stimulating.

The sixth infusion is a nice smooth mix of slightly sweet creamier notes and deeper woody notes over a nice full slightly drying mouthfeel.  Different fruit notes of watermelon pop up on the breath in this infusion which I enjoy.

The seventh infusion feels a bit more watered down now but still flavours exist.  There is still a mild cooling in the aftertaste and still a sweet creamy edge on the mainly woody taste.

The eighth starts to flatten out but still significant flavors are still there echoing the earlier infusion.

The ninth and tenth still have a nice slightly cool finish and woody slightly sweetness to them.

This tea is long steeped and pushes out another few infusions of woody raison notes.  This tea has decent stamina and tastes good for a longer time.  But the flavors are a bit muted throughout.

My overall thoughts on this tea are much more favorable than my run in with this tea years before.  It has seemed to improve with a bit more age.  Years before I had previously thought this tea to be too typical puerh taste and too weak with not enough vitality.  Years later it hasn’t really gained strength or that much interesting depth but it is easy enough to drink.

There is something about the way this one feels that I quite like but can’t really put a finger on it.  It's like factory Menghai Qi that is curbed down a notch.  I am quite found of the storage of this tea which shows signs that the older material was aged in more humid Xishuangbana for the first few years before being pressed into a cake.  Then it undergone drier Kunming storage for 9 years.  This tea has this storage feeling and really feels like a dry stored tea that has had its sourness and harshness chopped right off.

Due to the above reasons and because the price at Tuo Cha tea is really low (remember that you are getting 2005ish material here),  I can recommend this tea for its simplicity and easiness to drink.  It is not terribly exciting tea but nor is it offensive in any way.  There is some beauty in its simplicity but nobody finds the mundane worth it, really.  Its possible that I would be buying more of these as easy everyday drinkers if it weren't for the fact that I have another handful of Menghai Factory cakes from this order (link).  This is my favorite, by far, out of the order but only due to the fact that it is really the only one out of the bunch that is actually ready to drink.  I ended up drinking the whole cake up already.  That at least says something.

However, I have learned from recent orders that if it wasn't good enough for you to buy then you probably shouldn't buy it now, at least not in any sort of volume.  The simplicity of this cake and easiness to drink also reminds me of this 2010 Fangmingyuan 0842 Anniversary (which is $0.11/g)  in its mild hay drinkable Menghai charms.  They are both around the same price and both pretty easy, don't think too much about it, kind of puerh.

Early reviews of this tea by other bloggers include this review from Hobbes of the Half-Dipper.


Michael Geist: Telecom Train Wreck: Why It Is Time for the Government to Address the Mess That Is The CRTC

The continuing consumer group boycott of the CRTC’s Internet code proceeding was raised directly with Prime Minister Justin Trudeau during Question Period in the House of Commons yesterday. NDP MP Brian Masse noted “the CRTC says it wants to establish a consumer Internet code of conduct, but has failed to provide sufficient time for consumer groups and the public. The result is a boycotted and broken system.” Trudeau’s responded that the government was proud of working with the CRTC and included a parting shot at the NDP, commenting on its support of a taxes on Internet usage. Regardless of the NDP position on an Internet tax (Masse says he opposes one), what is notable is that it is the CRTC that has emerged as a vocal supporter of an ISP tax. CRTC Chair Ian Scott’s decision to back an ISP tax as part of a larger scheme to regulate Internet-based services not only runs counter to Trudeau’s opposition to an Internet tax but it also points to a regulator that is increasingly anti-consumer in approach.

The consumer group boycott of an Internet code ostensibly designed for consumers is a case in point. Soon after the launch of the proceeding, the Public Interest Advocacy Centre wrote to the CRTC to request that the Commission delay it until after completion of a review on deceptive telecom sales practices (which itself only occurred after the CRTC rejected a call for an investigation and the government stepped in to order an inquiry). In practice, that would mean moving the comment period to April 2019. The PIAC request was supported by several groups, including the Forum for Research and Policy in Communications, Union des consommateurs, CNOC, and the Consumers’ Association of Canada – Manitoba Branch. The CRTC denied the request, concluding that 40 days (which includes weekends) was sufficient time to provide comments regardless of other activities.

The CRTC denial has sparked a groundswell of opposition from consumer groups with many announcing that they will boycott or not participate in the CRTC proceeding (including PIAC, FRPC, Concordia University’s ACT, and the Consumers’ Association of Canada – Manitoba Branch, CIPPIC, Open Media). Indeed, as Concordia’s ACT told the Commission:

The CRTC’s denial of PIAC’s reasonable request perpetuates digital divides in Canada as it prevents non-profit and research organizations – many of whom represent older and vulnerable populations – from participating in public proceedings that are foundational to a healthy democracy and fair media policy.

The boycott has been joined by Canada’s leading telecom academics and has been the subject of repeated debate on the floor of the House of Commons. Given the Canadian government’s emphasis on consultation – it has been the hallmark of the government since the Liberal election in 2015 – it is hard to think of a more out-of-touch approach for the CRTC.

In fact, the CRTC’s antipathy toward consumer groups is not limited to effective exclusion from the Internet code proceeding. As the Forum for Research and Policy in Communications recently documented, its cost-orders process, which consumer groups rely upon to participate in CRTC proceedings, has been marked by increasing delays that have left some in a desperate financial situation. The FRPC research notes:

An analysis of 135 orders issued by the CRTC in response to applications for costs made by public-interest participants found that from 2013 to November 10, 2017 the time between the filing of costs applications and the CRTC’s publication of costs orders more than doubled, from an average of 3.7 months in 2013, to an average of 8.6 months in 2017.

The situation is particularly troubling for PIAC, which in recent years has experienced lengthier delays than any other consumer group.  Earlier this week, PIAC sent out a notification warning that its ability to operate has been put at risk by the CRTC cost order delays.

Not only has the CRTC’s approach toward consumer groups under Scott imperiled the ability to ensure that the public interest in adequately considered as part of the policy process, but its substantive approach has also evidenced a marked shift away from consumer concerns. In addition to supporting an ISP tax that would invariably raise access costs and initially rejecting an investigation into misleading sales tactics, the Commission has weakened its support for ambitious broadband targets in its broadband fund decision, mused about flexible approaches to net neutrality consistent with telecom talking points that support exceptions to the principle, and rejected a mandated MVNO system to support greater wireless competition. With a decision due on low-cost data plans before the end of the year, it would not surprise if the CRTC adopted the latest proposals from the wireless companies that many consumer groups deemed inadequate.

The CRTC operates at arms-length to the government, but with the caveat that the government can issue policy directions or require reconsideration of Commission decisions. The government has already been forced to step in on affordable wireless services and deceptive telecom practices. Given the government’s emphasis on wireless competition, consumer interests, and robust public consultation, it is time for the responsible ministers – including Innovation, Science and Economic Development Minister Navdeep Bains and Canadian Heritage Minister Pablo Rodriguez – to take a closer look at the CRTC in an effort to fix a mess that has rekindled fears of a industry-captured regulator with little regard for consumers or the public interest.

The post Telecom Train Wreck: Why It Is Time for the Government to Address the Mess That Is The CRTC appeared first on Michael Geist.

Tea Masters: Quand le thé descend de la montagne et arrive en ville

Heureux les dégustateurs citadins d'Oolongs de haute montagne: la montagne vient exceptionnellement à nous sans que nous ayons à nous déplacer! Mais ce trajet n'est pas à sens unique. Si la montagne vient à nous, son thé nous remplit de ses arômes, de son souffle, c'est toute notre âme qui est transportée chez elle!
Ces feuilles d'Oolongs aux reflets sombres verts, bleus et jaunes nous rappellent la couleur des sommets Taiwanais. Leur parfum insaisissable et évanescent est un concentré des senteurs de la montagne. Le paradoxe est que ce parfum est d'autant plus fin et sa fraicheur périssable que la montagne est une force brute dont l'âge se compte en millions d'années. On résoud ce paradoxe en se rappelant que cet Oolong ne vient pas des entrailles de la montagne, mais de la rencontre entre sa surface et le ciel. Entre l'obscurité minérale et la lumière céleste. 
Oolong de BiLuXi du printemps 2017
L'eau de source a fait le même chemin de la montagne vers nous. Elle aussi retournera à la montagne sous forme de nuage après s'être évaporée de la mer. Mais avant cela, la réunion de l'eau minérale avec les feuilles de montagne crée une infusion façonnée deux fois par l'homme.

D'abord, il y a le fermier de thé, l'homme de la montagne, celui qui vit dans la durée. Après des mois d'attention à sa plantation, il a cueilli, transformé et séché ces feuilles en l'espace d'un jour et d'une nuit.

Puis vient l'homme pressé, l'homme (ou la femme) de la ville, qui vit dans le stress des multiples tâches du quotidien. Les firmes d'électro-ménager aimeraient lui vendre une machine qui prépare le thé par pression d'un bouton, sans perdre de temps, en quelques secondes. Mais l'homme de la ville résiste encore, car il sent bien que le temps qu'il consacre à la préparation du thé n'est pas perdu. C'est un repos de l'esprit, un éveil des sens, un recentrage sur l'essentiel, une balade en montagne. Après les plaisirs du nez et de la vue, les sensations en bouche font toute leur place à la montagne. On sent la douceur de l'air sur le bout de la langue et sa fraicheur dans le palais. Puis, la salive sourd sous la langue comme une source d'eau. Et un écho lointain résonne au fond de la gorge: en chinois, on l'appelle huigan (retour doux) ou, plus joli, yun (la rime poétique). Le corps ressent la force de la montagne qui s'exprime au travers du thé. Et l'esprit, si on le laisse libre, s'élève vers les sommets silencieux retrouver la beauté harmonieuse de la lumière printanière qui se marie avec la montagne. 
Tant de bonté de la nature et des hommes au temps long mérite d'être appréciée et partagée. Se donner le temps de faire ce voyage intérieur, de voir s'élever son âme, conduit au thé le plus sublime. La beauté jaillit de cet élan vers le sublime. C'est une beauté vivante, en action. Et tout comme cet Oolong est à la jonction de la montagne et du ciel, ce moment de thé est à la fois éphémère et éternel.

Ansuz - mskala's home page: TeXLiveからMediaWikiのために最小のインストールは何ですか?

MediaWikiは有名とポピュラーなソフトです。 もちろんWikipediaがMediaWikiを使っています。 その上、多数のサイトはMediaWikiを使っています。 たとえば、僕のタロットサイト「」でMediaWikiが使われます。 MediaWikiはLaTeXのプラグインあります。 プラグインとLaTeXのインストール時Wikiで数学の植字が出来ます。 でもTeXLiveの全部インストールなら5.7Gが使われます。 小さいウェブサーバのでTeXLiveが大き過ぎるのようです。 このブログでMediaWikiのためにTeXLiveの最小のインストールを考えましょう。

これは「TeX and LaTeX Advent Calendar 2018」の13日目の記事です。 12日目はkn1chtさんです。 14日目はMizukiSonokoさんです。 外の年も記事を書きました。 2014 2015 2016 2017

Ansuz - mskala's home page: The imagination gap, part 2

This is the second part of a three-part series on the cognitive deficit in hypothetical thinking: some people seem unable to handle thinking about a difference between what is real and what is imagined. In the first part, I discussed this deficit as an abstraction. In this second part, I'll look at some legal and political examples.

Quiet Earth: The Only Blu-ray to get this week is WATERWORLD

The best movie ever made is getting a very special 4K re-release from Arrow video this week.

The Waterworld: Two-Disc Limited Edition Blu-ray features a new 4K restoration and 3 VERSION OF THE FILM!

First it will have the original theatrical cut, the extended US TV cut (which runs over 40 minutes longer), and the extended European “Ulysses” cut which includes censored shots and dialogue.

For special features it will have an all-new feature-length documentary called "Maelstrom: The Odyssey of Waterworld".


[Continued ...]

Michael Geist: In Support of Evidence-Based Copyright Reform: My Industry Committee Copyright Review Submission

Earlier this week, I submitted my copyright review brief to the Industry Committee. The brief tracks my opening comments to the committee closely, focusing on the data arising from five issues: educational copying, site blocking, the so-called value gap, the impact of the copyright provisions of the CUSMA, and potential reforms in support of Canada’s innovation strategy. Due to a 2,000 word limit, the committee version will be a slightly condensed version of my original. I’ve posted both online (original version, submitted version).

The brief relies extensively on the many posts and articles I’ve written in recent years on copyright issues in Canada. Those posts are listed in an appendix and posted below:

Educational Copying and Fair Dealing

Website Blocking

Value Gap

The Effect of CUSMA

Pro-Innovative Reforms

The post In Support of Evidence-Based Copyright Reform: My Industry Committee Copyright Review Submission appeared first on Michael Geist.

OCaml Planet: opam 2.0.2 release

We are pleased to announce the release of opam 2.0.2.

As sandbox scripts have been updated, don't forget to run opam init --reinit -ni to update yours.

This new version contains mainly backported fixes:

  • Doc:
    • update man page
    • add message for deprecated options
    • reinsert removed ones to print a deprecated message instead of fail (e.g. --alias-of)
    • deprecate no-aspcud
  • Pin:
    • on pinning, rebuild updated pin-depends packages reliably
    • include descr & url files on pinning 1.2 opam files
  • Sandbox:
    • handle symlinks in bubblewrap for system directories such as /bin or /lib (#3661). Fixes sandboxing on some distributions such as CentOS 7 and Arch Linux.
    • allow use of unix domain sockets on macOS (#3659)
    • change one-line conditional to if statement which was incompatible with set -e
    • make /var readonly instead of empty and rw
  • Path: resolve default opam root path
  • System: suffix .out for read_command_output stdout files
  • Locked: check consistency with opam file when reading lock file to suggest regeneration message
  • Show: remove pin depends messages
  • Cudf: Fix closure computation in the presence of cycles to have a complete graph if a cycle is present in the graph (typically ocaml-base-compiler ⇄ ocaml)
  • List: Fix some cases of listing coinstallable packages
  • Format upgrade: extract archived source files of version-pinned packages
  • Core: add is_archive in OpamSystem and OpamFilename
  • Init: don't fail if empty compiler given
  • Lint: fix light_uninstall flag for error 52
  • Build: partial port to dune
  • Update cold compiler to 4.07.1

Installation instructions (unchanged):

  1. From binaries: run

    sh <(curl -sL

    or download manually from the Github "Releases" page to your PATH. In this case, don't forget to run opam init --reinit -ni to enable sandboxing if you had version 2.0.0~rc manually installed or to update your sandbox script.

  2. From source, using opam:

    opam update; opam install opam-devel

    (then copy the opam binary to your PATH as explained, and don't forget to run opam init --reinit -ni to enable sandboxing if you had version 2.0.0~rc manually installed or to update you sandbox script)

  3. From source, manually: see the instructions in the README.

We hope you enjoy this new minor version, and remain open to bug reports and suggestions.

NOTE: this article is cross-posted on and Please head to the latter for the comments!

new shelton wet/dry: Baloo: [tugging on Bagheera’s tail] C’mon, Baggy, get with the beat!

The Chinese made 50 times more mobile payments in 2016 than U.S. consumers did, tripling to $5.5 trillion in China while U.S. payments only grew 39 percent, to $112 billion. […] David Rennie, Beijing bureau chief for The Economist, gets somewhat closer to the truth in his forecasting exercise, projected to 2024. Like Rolland, Rennie starts [...]

CreativeApplications.Net: NORAA (Machinic Doodles) – A human/machine collaborative drawing

NORAA (Machinic Doodles) – A human/machine collaborative drawing
Created by Jessica In, Machinic Doodles is a live, interactive drawing installation that facilitates collaboration between a human and a robot named NORAA - a machine that is learning how to draw. The work explores how we communicate ideas through the strokes of a drawing, and how might a machine also be taught to draw through learning, instead of via explicit instruction

50 Watts: Vaka Valo’s Dream Diary 3

[Show your support for 50 Watts here.]

Vaka Valo, from the Dream Diary series, 2018

Vaka Valo has just unleashed new works in his "Dream Diary" series, and for the first time he is making prints available. Sign up for notice of the very limited-edition prints here.

Previously: Vaka Valo on 50watts.

A note about the series: "All of my works involve chance, contextual change, and strict limitations. For this project, the pieces begin as tiny collages from old instructional manuals I have meticulously mined. After sorting through thousands of images, I scan the hundreds of individual components, then create the collages digitally, revamping the colors completely, then have the compositions digitally printed and stretched onto canvas VERY large (adding a few more touch-ups by hand), as the dot gain patterns in the colors are clearly discernible upon viewing. There is only a single tangible canvas for each composition."

Vaka Valo, from the Dream Diary series, 2018

Vaka Valo, from the Dream Diary series, 2018

Vaka Valo, from the Dream Diary series, 2018

Vaka Valo, from the Dream Diary series, 2018

Vaka Valo, from the Dream Diary series, 2018

Vaka Valo, from the Dream Diary series, 2018

Vaka Valo, from the Dream Diary series, 2018

Vaka Valo, from the Dream Diary series, 2018

Vaka Valo, from the Dream Diary series, 2018

Vaka Valo, from the Dream Diary series, 2018

Vaka Valo, from the Dream Diary series, 2018

This post first appeared on Dec 11, 2018 on 50 Watts

Planet Lisp: Quicklisp news: December 2018 Quicklisp dist update now available

New projects:
  • agutil — A collection of utility functions not found in other utility libraries. — MIT
  • aserve — AllegroServe, a web server written in Common Lisp — LLGPL 
  • cl-batis — SQL Mapping Framework for Common Lisp — MIT
  • cl-dbi-connection-pool — CL-DBI-Connection-Pool - connection pool for CL-DBI — LLGPL
  • cl-json-pointer — A JSON Pointer (RFC6901) implementation for Common Lisp. — MIT
  • cl-punch — Scala-like anonymous lambda literal — MIT
  • definitions-systems — Provides a simple unified extensible way of processing named definitions. — Public Domain
  • easy-bind — Easy-bind - easy local binding for Common Lisp — MIT
  • first-time-value — Returns the result of evaluating a form in the current lexical and dynamic context the first time it's encountered, and the cached result of that computation on subsequent evaluations. — Public Domain
  • hyperspec — A simple library for looking up common-lisp symbols in the hyperspec. — LLGPLv3+
  • its — Provides convenient access to multiple values of an object in a concise, explicit and efficient way. — Public Domain
  • mra-wavelet-plot — Plot MRA-based wavelets (scaling function and mother wavelet) with given coefficients of the dilation equation — 2-clause BSD
  • openid-key — Get OpenID keys from issuer. — MIT
  • pjlink — A library for communicating with PJLink-compatible projectors over TCP/IP. see for information on PJLink and compatible devices. — CC0 1.0 Universal
  • poler — Infix notation macro generator — LLGPL
  • rpcq — Message and RPC specifications for Rigetti Quantum Cloud Services. — Apache 2
  • shadowed-bindings — Establishes a new lexical context within which specified bindings are explicitly shadowed, making it clear that they are not referenced within, thereby reducing cognitive load. — Public Domain
  • static-dispatch — Static generic function dispatch for Common Lisp. — MIT
  • trivial-jumptables — Provides efficient O(1) jumptables on supported Common Lisp implementations and falls back to O(log(n)) on others. — Public Domain
  • trivial-sockets — trivial-sockets — MIT
  • utility — A collection of useful functions and macros. — MIT
  • wild-package-inferred-system — Introduces the wildcards `*' and `**' into package-inferred-system — MIT
Updated projectsalexandriaaprilarchitecture.builder-protocolarchitecture.hooksasdf-vizbstcamblcari3scarriercavemancffichronicitycl-anacl-bibtexcl-cffi-gtkcl-charmscl-cognitocl-collidercl-conllucl-dbicl-digraphcl-environmentscl-epochcl-hamcrestcl-json-helpercl-ledgercl-markdowncl-patternscl-pythoncl-quickcheckcl-strcl-tetris3dcl-tiledcl-tomlcl-unificationclazyclipcloser-mopclxcodexcovercroatoandbusde.setf.wilburdefinitionsdocparserdufyeclectorevent-emitterf2clfemlispfiascoflarefloat-featuresfunction-cachefxmlgamebox-mathgendlgenhashglsl-toolkitgolden-utilsharmonyhelambdaphttp-bodyhu.dwim.web-serverip-interfacesironcladjonathanjsonrpclacklisp-binarylisp-chatlocal-timemaidenmcclimmmapopticloverlordparachuteparenscriptparser.common-rulespetalisppgloaderplexippus-xpathplumpplump-sexppostmodernprotestprotobufqbase64qlotquriracerregular-type-expressionsafety-paramssc-extensionsserapeumshadowsimple-tasksslysnakessnoozestaplestealth-mixinstefilstumpwmthe-cost-of-nothingtime-intervaltrivial-benchmarktrivial-utilitiesumbrautilities.binary-dumpvgplotwebsocket-driverwith-c-syntaxwoozacl.

To get this update, use (ql:update-dist "quicklisp")


Michael Geist: The State of Canadian Copyright: My Copyright Review Appearance Before the Industry Committee

With the Industry committee’s copyright review winding down, I appeared yesterday before the committee to discuss the state of Canadian copyright. The wide ranging two hour discussion focused on everything from fair dealing to crown copyright to concerns that publishers don’t fairly compensate authors for their digital licensing revenues. My opening statement placed the spotlight on five issues: educational copying, site blocking, the so-called value gap, the impact of the copyright provisions of the CUSMA, and potential reforms in support of Canada’s innovation strategy. An audio version and transcript of the opening statement is posted below.

Appearance before the House of Commons Standing Committee on Industry, Science and Technology, December 10, 2018

Good afternoon. 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 as an independent academic representing only my own views.

I have been closely following the committee’s work and have much to say about copyright reform in Canada. Given limited time, I’d like to quickly highlight five issues: educational copying, site blocking, the so-called value gap, the impact of the copyright provisions of the CUSMA, and potential reforms in support of Canada’s innovation strategy. My written submission includes links to dozens of articles I’ve written on these issues.

Educational Copying

First, the issues associated with educational copying. Notwithstanding the oft-heard claim that the 2012 reforms are to “blame” for current educational practices, the reality is the current situation has little to do with the inclusion of “education” as a fair dealing purpose. You need not take my word for it. Access Copyright was asked in 2016 by the Copyright Board to describe the impact of the legal change. It told the Board that the legal reform did not change the effect of the law. Rather, it said, it merely codified existing law as interpreted by the Supreme Court.

Further, the claim of 600 million uncompensated copies – which lies at the heart of the allegations of unfair copying – is the result of outdated guesswork using decades-old data and deeply suspect assumptions. The majority of the 600 million – 380 million – involve K-12 copying data that goes back to 2005. The Copyright Board warned years ago that the survey data is so old that it may not be representative. The remaining 220 million comes from a York University study, much of which as old as the K-12 data. Regardless of its age, however, extrapolating some old copying data from a single university to the entire country does not provide a credible estimate.

In fact, the committee has received copious data on the state of educational copying. It is unequivocal: the days of printed coursepacks have largely disappeared in favour of digital access. As universities and colleges shift to digital course management systems, the content used changes too. An Access Copyright study at Canadian colleges found that books comprised only 35% of materials. Moreover, the amount of copying that occurs with CMS is far lower than with print.

Most importantly, CMS allows for the incorporation of licensed e-books, open access materials, and hyperlinks to other content. At the University of Ottawa, there are now 1.4 million licensed e-books, many of which involve perpetual licences that require no further payment and can be used for course instruction. Further, governments have invested tens of millions in open educational resources and educational institutions spends millions annually on transactional, pay-per-use licences, even where those schools have a collective licence.

What this means is that the shift away from the Access Copyright licence is not grounded in fair dealing. Rather, it reflects the adoption of licences that provide both access and reproduction rights. These licences provide universities with access to the content and the ability to use it in their courses. The Access Copyright licence offers far less, granting only copying rights for previously acquired materials.

Therefore, efforts to force the Access Copyright licence on educational institutions by restricting fair dealing or by implementing statutory damages reforms should be rejected. The prospect of restricting fair dealing would represent an anti-innovation, anti-education step backward and run counter to the experience over the past six years of increased licensing, innovation, and choice for both authors and educational users.

With respect to statutory damages, supporters argue that a massive escalation in potential damage awards is needed for deterrence and to promote settlement negotiations. Yet there is nothing to deter: educational institutions are investing in licensing in record amounts. Promoting settlement negotiations amounts to little more than increasing the legal risk to students and educational institutions so that they have no other viable alternative than to pay for an unnecessary licence.

Site Blocking

Second, site blocking. This committee has heard from several witnesses who have called for the inclusion of an explicit site blocking provision in the Copyright Act. I believe this would be a mistake. First, the CRTC proceeding into site blocking earlier this year led to thousands of submissions that identified serious problems with the practice including from the UN Special Rapporteur for Freedom of Expression who raised freedom of expression concerns and technical groups who cited risks of overblocking and net neutrality violations. Second, even if there is support for site blocking, it already exists under the law with much-needed oversight as the Supreme Court’s Google v. Equustek decision demonstrates.

Value Gap

Third, the so-called value gap. Two issues are not in dispute: the music industry is garnering record revenues from Internet streaming and subscription streaming services pay more to creators than ad-based ones.

The question for the copyright review is whether Canadian copyright law has anything to do with this.  The answer is no. The notion of a value-gap is premised on some platforms or services taking advantage of the law to negotiate lower rates. Those rules – such as notice-and-takedown – do not exist under Canadian law. That helps explain why industry demands to this committee focus instead on taxpayer handouts such as new taxes on iPhones. Those demands should be rejected.


Fourth, the impact of the CUSMA. The copyright provisions in this new trade agreement significantly alter the copyright balance by extending the term of copyright by additional 20 years, a reform Canada has rightly long resisted. By doing so, the agreement represents a major windfall that could run into the hundreds of millions for rights holders and creates the need to recalibrate Canadian copyright law to restore the balance.

Pro-Innovative Reforms

Fifth, there are important reforms that would help advance Canada’s innovation strategy. For example, greater fair dealing flexibility – adopting the “such as” approach – would make the current list of fair dealing purposes illustrative rather than exhaustive and would place Canadian innovators on a level playing field with fair use countries such as the U.S. That reform would still maintain a full fairness analysis along with longstanding jurisprudence to minimize uncertainty. In the alternative, an exception for informational analysis is desperately needed by the AI sector.

Canada should also establish new exceptions for our digital lock rules, which are among the restrictive in the world. Canadian business is at a disadvantage relative to the U.S., including in the agriculture sector, where Canadian farmers do not have the same rights as those found in the U.S.

Moreover, given the government’s support for open government – including its recent funding of Creative Commons licensed local news and support for open source software – the committee should recommend addressing a open government  copyright barrier by removing the crown copyright provision from the Copyright Act.

I look forward to your questions.

The post The State of Canadian Copyright: My Copyright Review Appearance Before the Industry Committee appeared first on Michael Geist.

OCaml Weekly News: OCaml Weekly News, 11 Dec 2018

  1. ppx_yojson 0.2.0
  2. New release of fix
  3. Interesting OCaml Articles
  4. bs-platform 4.0.8 is released
  5. LablGtk3 beta1
  6. Other OCaml News

Quiet Earth: Impressive First Look at Animated Sci-Fi Thriller THE SEED OF JUNA [Trailer]

Writer/director Álvaro García really impressed with his post-apocalyptic short film debut Sumer (see the film) and now García is back with his highly anticipated follow-up The Seed of Juna.

Unfolding in a new universe, The Seed of Juna follows Juna, a rebellious young woman who has been reborn into a different part of the universe after being killed on Earth by the ruling religious sect. In her new, reborn life, she experiences some unexpected revelations which lead her to think that perhaps staying dead was a better option.

Though currently shaping up as a short film, García has developed an entire universe and back-story to t [Continued ...]

Quiet Earth: Godzilla Rises Again in GODZILLA: KING OF THE MONSTERS [Trailer]

Godzilla is back in a really big way. Admittedly, it's never really gone away but over the last few years, it seems that the famous monster has been making more appearances than usual.

Since the Gareth Edwards release in 2014, we've had the excellent Godzilla: Planet of Monsters (trailer), Shin Godzilla, Godzilla Resurgence (trailer) and now another live-action release from Hollywood: Godzilla: King of the Monsters.

Michael Dougherty (Trick 'r Treat) is onboard to direct the latest entry into the English-language Godzilla movies. [Continued ...]

The Shape of Code: Impact of group size and practice on manual performance

How performance varies with group size is an interesting question that is still an unresearched area of software engineering. The impact of learning is also an interesting question and there has been some software engineering research in this area.

I recently read a very interesting study involving both group size and learning, and Jaakko Peltokorpi kindly sent me a copy of the data.

That is the good news; the not so good news is that the experiment was not about software engineering, but the manual assembly of a contraption of the experimenters devising. Still, this experiment is an example of the impact of group size and learning (through repeating the task) on time to complete a task.

Subjects worked in groups of one to four people and repeated the task four times. Time taken to assemble a bespoke, floor standing rack with some odd-looking connections between components was measured (the image in the paper shows something that might function as a floor standing book-case, if shelves were added, apart from some component connections getting in the way).

The following equation is a very good fit to the data (code+data). There is theory explaining why log(repetitions) applies, but the division by group-size was found by suck-it-and-see (in another post I found that time spent planning increased with teams size).

There is a strong repetition/group-size interaction. As the group size increases, repetition has less of an impact on improving performance.

time = 0.16+ 0.53/{group size} - log(repetitions)*[0.1 + {0.22}/{group size}]

The following plot shows one way of looking at the data (larger groups take less time, but the difference declines with practice), lines are from the fitted regression model:

Time taken (hours) for various group sizes, by repetition.

and here is another (a group of two is not twice as fast as a group of one; with practice smaller groups are converging on the performance of larger groups):

Time taken (hours) for various repetitions, by group size.

Would the same kind of equation fit the results from solving a software engineering task? Hopefully somebody will run an experiment to find out :-)

Trivium: 10dec2018

Perlsphere: The advent blogs roundup

Well hello there, and happy holidays to you! Every December Perl bloggers come together and write new posts for the advent. This year is no different, and if you haven’t seen them already, here are three blogs to check out.

Probably the merriest of all the advent blogs, Mark Fowler’s has been running since 2000, and has a collection of general-purpose Perl programming articles, this year, including How to run Perl in a browser.

Perl 6 Advent

The Perl 6 Advent has been going since 2009, and covers general-purpose Perl 6 programming. Nigel Hamilton’s article about his command line searcher/launcher jmp should be interesting to Perl 5 and Perl 6 programmers.


Recently celebrating its version 8 release, the Mojolicious team are running an advent for the second year in a row on their blog. It’s not simply a web framework though: Sebastian Riedel and the Mojo team have created Mojo modules which are useful in their own right, such as for parsing HTML. There is also the async job queue app, Minion.

All three blogs will have new articles each day through December 24th. You can also jump to new articles in our convenient community article sidebar --->

Ansuz - mskala's home page: The imagination gap, part 1

A deficit in hypothetical cognition

In The World As If, Sarah Perry gives "an account of how magical thinking made us modern." She discusses how to define "magical thinking" and suggests that the diverse things to which people apply that label form "a collection of stigmatized examples of a more general, and generally useful, cognitive capacity." Namely, the capacity to entertain false, "not expected to be proven," or otherwise not exactly true propositions as if they were true.

Although magical thinking may often be called a behaviour of children or of those in primitive cultures, what Perry calls the "as if" mode of thought (I want to also include "what if") is in no way primitive. The view that magical thinking is for children and the uneducated can and should be inverted: mastery of hypothetical "as if" cognition is necessary for functioning as an adult in a literate technological society, and characteristic of the most sophisticated thinking human beings ever do.

new shelton wet/dry: Said I wouldn’t mention Sisqo, fuck he’s a bum

After 4 hours of training, AlphaZero became the strongest chess entity of the planet with an estimated ELO of around 3,400. { AlphaZero vs Stockfish 8 | ELO ratings of chess players } more { How AlphaZero quickly learns each game [chess, shogi, and Go] to become the strongest player in history for each } related { [...]

A Neighborhood of Infinity: Why is nuclear fusion so hard?

Why does water fall out of an inverted cup?

Before considering nuclear fusion, let's consider something much more familiar. If you turn a cup full of water upside down, the water falls out. Why is this? It seems obvious: with nothing supporting the water from below, gravity pulls the water out of the cup. But let's look a little closely at the left side of Figure 1. We have water in an inverted cup under the influence of gravity. But there is air pressure at the surface of the water. At sea level, atmospheric pressure is about the weight of 1kg per cm2, easily enough to keep the water in the cup. So now we still have our question: why does it come out?

Consider the diagram on the right of Figure 1. I have drawn some ripples on the surface of the water. Air pressure provides a force perpendicular to the water surface which means that around the ripples we no longer have a force pointing straight up. The force points partly sideways and this serves to deform the shape of the water surface. But as the water surface becomes even more deformed the forces become even more distorted away from vertical causing a feedback loop. So we can expect even the tiniest of ripples to grow to the point where the water completely changes shape and it eventually deforms its way out of the glass.
Figure 1

This is an example of an instability - in this case it's called the Rayleigh-Taylor instability. And this suggests an approach to keeping water in an inverted cup - suppress the ripples. One way to do this is to fill the cup to the top and place a piece of paper over the surface. Here is an example on YouTube:

Another approach is to apply thickening agents to the water to dampen the ripples. Here's an example showing how hard it is to get jello out of a bowl:

Nuclear fusion

And now I can discuss one of the challenges facing controlled nuclear fusion. When two suitable atomic nuclei are made to fuse they release energy. But nuclei are positively charged and repel. So in order to cause nuclei to fuse we need to overcome this repulsion, typically by making them collide at very high velocities. To achieve this in useful numbers one way is to heat a suitable fuel to a high temperature in a small enough volume. Temperatures of at least 10,000,000K are required, and possibly orders of magnitude higher. We know how to do the heating, but we also have to confine the fuel - which at these temperatures takes the form of a plasma because its nuclei and electrons become separated. We can't simply use a solid container to hold the plasma as no container can survive such temperatures. Instead we need some other confinement method such as magnetic confinement, where we use magnetic fields to control the plasma, or inertial confinement where we use explosions around the fuel to drive the fuel into a small volume. Both of these suffer from the same problem: we're using a force to control a fluid and this is subject to instabilities. Confining a plasma is like trying to keep water in an inverted cup by blowing on the water with fans. It's really hard. What's more, plasma has incredibly complex dynamics that is subject to many different kinds of instability. Around fifty named instabilities are listed on Wikipedia. Here is an example of one in a real plasma. It is a kink instability that causes a line of plasma with a current through it to start acquiring a corkscrew shape so that it eventually tears itself apart:

And that's one of the biggest challenges facing fusion energy today: we don't know how to keep a plasma stable for long enough.

Is there any hope for fusion?

The description above is qualitative. To determine how severe any particular instability is we need to run experiments or use some theory. Some kinds of instability are slow enough that we can control them. For example bicycles are unstable, but many of us eventually learn to ride them. In a thermonuclear weapon stability is only required for a short amount of time, something that was achievable back in the 50s. And sometimes the feedback loops in the physics are less troublesome than might be expected so that Tokamaks (and other configurations) have operating modes that turn out to be relatively stable, for example the "H-mode". So maybe we'll have working fusion reactors in 20 years, or 30 years, or is it 50?

Daniel Lemire's blog: Science and Technology links (December 8th 2018)

  1. The energy density of lithium-ion batteries doubled between 1995 and 2005 but only increased by about 15% between 2005 and 2015. It is estimated that there is relatively little further gains in energy density possible with lithium-ion batteries. However, our mobile devices typically consume far less power than they did only a few years ago while offering faster processing.
  2. In China, 78% of all research institutes focus on science and engineering, and only 12% focus on the humanities. A quarter of the top universities have a science and engineering focus.
  3. In the US, if I know your zip code, your gender and your birthdate, I can nearly uniquely identify you.
  4. In wealthy countries, happier people are more likely to have children.
  5. It is sometimes stated that beyond physical differences, the brains of men and women are identical. Rosenblatt (2016) disagrees: “Brains are indeed typically male or typically female.” Falk and Hermle (2018) further observe that the more that women have equal opportunities, the more they differ from men in their preferences. Zhang et al. (2018) have a related finding:

    On average, women show stronger preferences for mates with good earning capacity than men do, while men show stronger preferences for physically attractive mates than women do (…) we found little evidence that these sex differences were smaller in countries with greater gender equality.

  6. It seems that very large mammals co-existed with the dinosaurs.

Planet Lisp: Nicolas Hafner: About Making Games in Lisp - Gamedev

Recently there's been a bit of a storm brewing about a rather opinionated article about game development with Lisp. After reading Chris Bagley's very well done response, I thought I'd share my perspective on what it's like to actually make games with Lisp. I'm not writing this with the intent on convincing you of any particular arguments, but rather to give some insight into my process and what the difficulties and advantages are.

I'll start this off by saying that I've been working with games in some capacity as long as I can remember. My programming career started out when I was still a young lad and played freeware games on a dinky Compaq laptop with Windows 95. Making really terrible games is almost all I did in terms of programming all throughout primary school. I branched out into other software after that, but making games is something that has always kept sticking around in my mind.

Naturally, when it came to having learnt a new programming language, it didn't take too long before I wanted to make games again. And of course, because I'm a stubborn idiot, I decided to build an engine from scratch - it wasn't my first one, either. This is what lead to Shirakumo's Trial engine.

Since then, the team and I have built a couple of "games" with Trial:

  • LD35 Supposed to be a sort of farming game, due to massive engine problems ended up being just a test for animations and basic 3d rendering.
  • LD36 A very basic survival game that lets you build fire places and eat stuff. Based on the tech from the previous game.
  • LD38 An experiment in non-linear storytelling. The idea was to have a dialog based mystery game, but we ran out of time.
  • Rush A 2D platformer with a lighting mechanic. This one is actually a game that can be played for some time.
  • Shootman An excuse to stream some gamedev. Mostly modelled after "Enter the Gungeon," it's an isometric bullet hell shooter.

None of these are big, none of these are great. They're all more experiments to see what can be done. What I've learned most of all throughout all my time working on games is that I'm not good at making games. I'm decent at making engines, which is a very, very different thing.

If you're good at making games, you can make an engaging game with nothing more than format, read-line, and some logic thrown in. If you're bad at making games like I am, you build a large engine for all the features you imagine your game might need, and then you don't know how to proceed and the project dies. You may notice that this also has a bit of an implication, namely that for making the game part of a game, the choice of language matters very little. It matters a lot for the engine, because that's a software engineering problem.

I'm writing this because this is, to me, an important disclaimer: I don't well know how to make games. I can write code, program mechanics, make monkeys jump up and down on your screen, but that's not the meat of a game and usually not why people play games either. Thus my primary difficulty making games has absolutely nothing to do with the technology involved. Even if I were using Unity or Unreal, this problem would not go away. It was the same when I was last writing games in Java, and it was the same when I was using GameMaker.

Now, why am I not using a large, well made engine to make games? Is it because I've been tainted by Lisp and don't want to use other languages in my free time anymore? Is it because the game making problem would persist anyway so what's the point? Is it because I like making engines? Is it because I'm stupid? Well, the answers are yes, yes, yes, and yes.

Alright, so here we are: Lisp is the only choice left, I like making engines and don't know how to make games, so what are the difficulties and advantages of doing that?

As you might know, I'm currently working on a game, so I have a lot of immediate thoughts on the matter. What seems to bother me the most is that currently I don't have a built in, usable scene editor in Trial. For every game so far we had to either build an editor from scratch, or place things manually in code. Both of these things suck, and making an editor that isn't a huge pain to use takes a long, long time. Part of the issue with that is that Trial currently does not have a UI toolkit to offer. You can use it with the Qt backend and use that to offer a UI, but I really don't want to force using Qt just for an editor. Not to mention that we need in-game UI capabilities anyway.

All of the UI toolkits I've seen out there are either a giant blob of foreign code that I really don't want to bind to, or they're McCLIM which won't work with OpenGL in what I project to be the next decade or more. So, gotta do it myself again. I have some nice and good ideas for making a design that's different and actually very amenable towards games and their unique resolution constraints, but making a UI toolkit is a daunting effort that I have so far not felt the energy to tackle.

Aside from the lack of an editor and UI toolkit, I actually have very few complaints with the current state of Trial for the purposes of my game. It handles asset management, shaders and effects pipelines, input and event delivery, and so forth. A lot of the base stuff that makes OpenGL a pain in the neck has been taken care of.

That said, there's a lot of things I had to implement myself as well that could be seen as something the engine should do for you: map save and load, save states, collision detection and resolution, efficient tile maps. Some of the implementations I intend to backport into Trial, but other things that might seem simple on first look like maps and save states, are actually incredibly domain specific, and I'm currently unconvinced that I can build a good, generic system that can handle this.

One thing that I think was a very good decision for Trial that I still stand by is the idea to keep things as modular and separate as possible. This is so that, as much as possible, you won't be forced to use any particular feature of the engine and can replace them if your needs demand such. If you know anything at all about architecture, this is a very difficult thing to do, and something that I believe would be a huge lot more difficult if it weren't implemented in Lisp. Modularity, re-usability, and extensibility are where Lisp truly shines.

Unfortunately for us, games tend to need a lot of non-reusable, very problem-specific solutions and implementations. Sure, there's components that are re-usable, like a rendering engine, physics simulations, and so forth. But even within those you have a tremendous effort in implementing game-specific mechanics and features that can't be ported elsewhere.

But, that's also great for me because it means I can spend a ton of time implementing engine parts without having to worry about actually making a game. It's less great for the chances of my game ever being finished, but we'll worry about that another time.

Right now I'm working on implementing a quest and dialog system in the game, which is proving to be an interesting topic on its own. Lisp gives me a lot of nifty tools here for the end-user, since I can wrap a lot of baggage up in macros that present a very clean, domain-geared interface. This very often alleviates the need to write scripting languages and parsers. Very often, but not always however. For the dialog, the expected amount of content is so vast that I fear that I can't get away with using macros, and need to implement a parser for a very tailored markup language. I've been trying to get that going, but unfortunately for reasons beyond me my motivation has been severely lacking.

Other than that, now that all the base systems for maps, saves, chunks, tiles, and player mechanics are in place the only remaining part is UI stuff, and we already discussed the issue with that. This also means that I really need to start thinking about making a game again because I've nearly run out of engine stuff to do (for now). We'll see whether I can somehow learn to shift gears and make an actual game. I really, really hope that I can. I want this to work.

I've talked a lot about my own background and the kinds of problems I'm facing at the moment, and very little about the process of making these games. Well, the process is rather simple:

  1. Decide on a core idea of the game.
  2. Figure out what the player should be able to do and the kinds of requirements this has on the engine.
  3. Implement these requirements in the engine.
  4. Use the features of the engine to build the game content. This requires the most work.
  5. As you develop content and the vision of the game becomes clearer, new ideas and requirements will crystallise. Go back to 3.
  6. Your game is now done.

Again, the bulk of the work lies in making content, which is rather orthogonal to the choice of your language, as long as the tools are mature enough to make you productive. I believe Lisp allows me to be quicker about developing these tools than other languages, but making an actual game would be even quicker if I didn't have to make most of these tools in the first place.

So if there's anything at all that I want for developing games in Lisp, it wouldn't be some magical engine on par with Unreal or whatever, it wouldn't even be more libraries and things. I'm content enough to build those myself. What I'd really like is to find the right mindset for making game content. Maybe, hopefully, I will at some point and I'll actually be able to publish a game worth a damn. If it happens to have been developed with Lisp tools, that's just a bonus.

If you've made it this far: thank you very much for reading my incoherent ramblings. If you're interested in my game project and would like to follow it, or even help working on it, hang out in the #shirakumo channel on Freenode.

Quiet Earth: Nacho Vigalondo's POOKA! Hits Hulu [Tralier]

Hulu’s “Into the Dark” is off to a strong start. The series, co-produced by Blumhouse, features brand new feature film every single month for an entire year with wach episode is holiday-themed, with the first two tackling Halloween and Thanksgiving.

In Nacho Vigalondo's (Open Windows, Time Crimes) POOKA!, a struggling actor gets a holiday season job as a Christmas character in a plush suit to promote the hottest toy of the year, “Pooka.” At first, it’s a fun and friendly distraction, but he slowly develops two personalities–one when he’s in the [Continued ...]

Quiet Earth: Alex Pettyfer Delivers Memorable Directorial Debut in BACK ROADS [Review]

With each new project, Alex Pettyfer has been moving further from his early days in Hollywood as a teen heartthrob. With last year's The Strange Ones (review), and The Last Witness earlier this year, he has re-emerged as a more mature performer and Back Roads presents yet another side to the actor: director.

Adapted from Tawni O'Dell's best-selling novel of the same name by O'Dell herself and acclaimed writer/director Adrian Lyne (Fatal Atraction, Jacob's Ladder, Unfaithful), Back Roads stars Pettyfer as Harley Altmyer, a young 20-something who has been left to care for his three younger sisters after his mother is convicted of murderi [Continued ...]

Tea Masters: Musings about tea and beauty

 After the BiLuoChun, this Italian chef and I brewed my 2018 gushu puerh in this Qing dynasty garden with a Qing dynasty Yixing teapot!
We had an amazing experience of beauty. But not a superficial kind of beauty, but an experience that resonated deep. It's not the first time I had puerh with one or several guests there, but each time it feels different. That's because the connection to each person goes beyond the mere platitudes about the weather. Here, I share one of the most harmonious Chaxi I can perform. With great tea, an antique Yixing teapot, handmade cups and jar. In a wonderfully well preserved garden built during the Qing dynasty, with rich colors and bright light. And accompanied by a person who has a real passion for tea. 
 And the energy we create and experience is caught on camera and shared with other tea lovers! An event that was meant to be short lived becomes eternal!
 The tea had a pure and bright presence. It coated the mouth and its aftertaste kept on giving new sensations.
 The scent is evanescent. And yet, once you've had it, it remains and can't be erased from our memory. It connects the physical and invisible world: a link between the present and eternity...

things magazine: Stopping motion

Time Lapse of the Sushi Scene in Isle of Dogs / errors on the Tube map at Diamond Geezer. You could do worse than nose around their Flickr sets as well / Germans like the word ‘shitstorm‘ / a fact … Continue reading

Tea Masters: Apprentissage et non agir

"La vérité que l'on veut exprimer n'est pas la vérité absolue". C'est par ces mots que commence le Tao Te King de Lao Tseu, l'un des plus anciens textes philosophique chinois. Il nous invite à la modestie et à une certaine retenue dans nos propos, car personne ne détient la vérité absolue. Il y a toujours plusieurs interprétations pour le même événement et les points de vue varient en fonction justement du point d'où on les les observe. Le recul et l'expérience permettent souvent de faire des remarques plus originales et pertinentes. Mais la complexité du monde ne nous permet jamais d'arriver à la vérité absolue.

Si je prends ces pincettes, c'est que je vais m'avancer en terrain miné et que je ne veux heurter personne. Le thé est un moment de bonheur consensuel où l'on accueille l'autre (ou soi-même si on boit seul) avec bienveillance. Mais ce bonheur qu'on recherche, peut-on le trouver quand son pays va mal? Même à des milliers de km de la France, je ressens la détresse de mon pays au plus profond de mon être. J'ai même eu besoin d'écrire quelques articles pour aider à comprendre sa situation et proposer des solutions.
Les principes qu'il faudrait appliquer pour aider les Français sont ancestraux et universels. Le Tao Te King nous parle de voie (tao ou dao) et de non agir. On peut simplifier ces concepts par l'expression 'If it isn't broken, don't fix it': si tout va bien, ne change rien. On est dans cette situation si l'éducation d'une personne a été bien faite. Un dicton chinois dit: "Donne un poisson à quelqu'un et il aura à manger pour un jour. Apprends-lui à pêcher et il aura à manger chaque jour." Ainsi, une seule action en amont nous dispense d'agir souvent en aval. C'est pourquoi l'éducation de la jeunesse est si importante. Si tous les jeunes sont bien instruits, ils travailleront tous au service les uns des autres et la prospérité apparaitra.

Ces mêmes principes de préparation et d'éducation s'appliquent à  tous les domaines. Dans le thé, le succès d'un Chaxi dépend de notre connaissance des feuilles, de choisir nos accessoires en fonction du caractère du thé, du choix d'une bonne eau, de notre pratique régulière de nos accessoires... Si tout est en harmonie avec le thé choisi, on n'a plus grand chose à faire. Il suffit de se laisser porter par la voie, l'habitude, l'expérience. Les gestes coulent de plus en plus de source avec le temps. On peut alors même se passer d'objets et d'actes superflus, si on se sent prêt. On va alors à l'essentiel, on tend vers le non agir. Ainsi, je me passe de pichet et de coupes à sentir. Par contre, je garde le Chabu, cette nappe sous mes accessoires, et mes plantes afin de jouer avec les couleurs et de créer un élan vers la beauté et la nature. Car la beauté c'est le souffle de la voie, c'est ce qui donne envie de vivre.
J'en reviens au Tao Te King, chapitre 75: "Le peuple a faim quand les impôts sont trop lourds. Le gouvernement a du mal à diriger le peuple quand il intervient sans cesse dans ses affaires." Et dans le chapitre 57: "Plus il y a d'interdits, plus le peuple est pauvre (...) Je reste calme et le peuple se rectifie de lui-même. Je n'intrigue pas et le peuple prospère de lui-même. Je suis libre de désir et le peuple de lui-même atteint la simplicité."
Le gouvernement agit donc rien qu'en montrant l'exemple. Ce non agir demande de la retenue, de la probité. Le travail sur soi que le non agir demande est énorme.
Dans le chapitre 30: "L'homme juste doit se montrer résolu sans user de forces"
Si vous êtes curieux de lire mes articles sur la situation en France vu de Taiwan, allez sur ce blog. Je sais mon point de vue très minoritaire, mais j'espère que vous ne m'en voudrez pas de m'exprimer avec bienveillance dans l'espoir d'un avenir meilleur pour tous les Français.

Michael Geist: A Failure of Enforcement: Why Changing the Law Won’t Fix All That Ails Canadian Privacy

Canadian Privacy Commissioner Daniel Therrien renewed his call for an overhaul of Canada’s private-sector privacy legislation this week. Responding to a national data consultation launched by Innovation, Science and Economic Development Minister Navdeep Bains, Therrien recommended enacting a new law that would include stronger enforcement powers, meaningful consent standards and the extension of privacy regulations to political parties. My Globe and Mail op-ed argues that while the need for a modernized privacy statute has been evident for some time, Canada’s privacy shortcomings are not limited to a decades-old legal framework struggling to keep pace with technological change.

Therrien has been increasingly focused on legislative reform, but too often his office fails to fully utilize the existing powers found in the law. For example, the Privacy Commissioner does not have order-making power, but does have the right to ask the federal court to issue binding orders. The extra step may be time consuming and inconvenient, but effective enforcement frequently depends upon going beyond issuing non-binding findings.

Therrien is not unique in shying away from confrontational enforcement. Previous commissioners were reluctant to name names in investigations and the office was only willing to investigate foreign companies after the federal court ruled that it could do so. Yet despite mounting public concern about privacy, complaints under the law have steadily declined during his tenure. There were were 426 accepted complaints (complaints that proceed to the investigation stage) in Therrien’s first annual report in 2013 under the Personal Information Protection and Electronic Documents Act. That has dropped every year since: 402 for 2014, 381 for 2015, 325 for 2016 and only 297 in the latest report for 2017.

A consistent decline in the number of complaints could mean that the public is satisfied with the protection of their privacy and has fewer issues to complain about. Polling data suggest otherwise, however, making it just as likely the public is either unaware of the law or left with the impression that the complaint system is ineffective.

Frustration with privacy enforcement is typified by a case involving Jet Airlines discussed in Therrien’s most recent annual report. The airline removed two passengers with physical disabilities after a disagreement with a member of the flight crew over the handling of service animals. The passengers used Canadian privacy law to request access to their personal information held by the airline, including details about the incident. Jet Airlines refused to disclose the information, initially advising the Privacy Commissioner that it treats all incidents as potential sources of litigation and therefore refuses to comply with any related access requests on the grounds that it could be subject to litigation privilege in the future.

Therrien rightly concluded that this interpretation of the law was far too broad and that the airline was in violation of the law. Rather than seeking to enforce the law through the federal courts, however, the office merely “encouraged” Jet Airlines to disclose the documents. While the Privacy Commissioner might argue that it would be easier if the law included order-making power that the office could use to compel disclosure, a blatant refusal to comply with the law cries out for a trip to the federal court. The unwillingness to pursue a court order is a failure of enforcement, not a shortcoming in the statute.

In fact, Therrien has already put the public on notice that he does not believe his office can effectively enforce the mandatory data-breach disclosure rules that took effect last month. He warns in his annual report that “with no funding for this activity and an already full plate, it will not be possible for us to devote the time necessary to properly review breaches and investigate.”

The situation seems little better with enforcement of the Privacy Act, which governs public-sector privacy issues. The privacy commissioner’s office is visible on legislative reform proposals with frequent appearances before parliamentary committees, but seems reactive rather than pro-active on key issues. For example, the office was notified months before the media reports on the recent proposal involving Statistics Canada and the collection of banking records, but only responded with an investigation once public outrage emerged.

Therrien unquestionably faces an enormous challenge. The days of a Canadian privacy commissioner staring down Facebook (as the office did in 2009) seem like a bygone era. Meanwhile, large Canadian companies such as Bell still adamantly refuse to issue transparency reports detailing their disclosures of personal information to law enforcement and pursuant to court orders years after the office negotiated a standardized approach with government and the private sector.

Meeting the privacy needs of Canadians requires a privacy commissioner willing to stand up to the government and corporate giants, ready to back up its demands by deploying every enforcement tool at his or her disposal. A modernized privacy law is necessary, but it is not sufficient.

The post A Failure of Enforcement: Why Changing the Law Won’t Fix All That Ails Canadian Privacy appeared first on Michael Geist.

MattCha's Blog: When Puerh Vendors Offer Free Shipping...

You should always consider the cost of shipping into the price of tea per gram but most of us don't.  No bloggers include shipping in the $/g but we probably should.  I guess it could be confusing to some.  I like to pay less per gram so I prefer China Ground Shipping if I'm paying for it.  This is because I like to pay less for my tea.


Disquiet: Disquiet Junto Project 0362: Operational Surrealism

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, December 10, 2018, at 11:59pm (that is, just before midnight) wherever you are on. It was posted in the morning, California time, on Thursday, December 6, 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 0362: Operational Surrealism
The Assignment: Make a piece of music informed by a key text from the art movement.

Just one step this week: Make something as “beautiful as the chance meeting on a dissecting-table of a sewing-machine and an umbrella.”

Many thanks to Peggy Nelson for having proposed this project. Here’s some background: This week’s phrase originated in Les Chants de Maldoror, an experimental novel by the Comte de Lautréamont, a French poet from Uruguay who died in 1870 at age 24. In Les Chants, Lautréamont describes a young boy as “beautiful as the chance meeting on a dissecting-table of a sewing-machine and an umbrella,” but when André Breton, the self-styled head of the Surrealist movement, came across Lautréamont’s novel (prose-poem /unbridled rant / giant run-on sentence) in 1918, he seized upon the phrase as the perfect slogan, and drafted it into wider cultural service. Despite being dreamed up in the late 19th century, the phrase’s unnerving and perhaps prescient inclusion of both mechanical and medical metaphors was surely not lost on Breton, who had served in French psychiatric hospitals during the First World War. There have been any number of (re)statements and (mis)translations of the phrase since, but the basic idea remains: none of these things go together, and so, they do.

Six More Important Steps When Your Track Is Done:

Step 1: Include “disquiet0362” (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 “disquiet0362” (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, December 10, 2018, at 11:59pm (that is, just before midnight) wherever you are on. It was posted in the morning, California time, on Thursday, December 6, 2018.

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

Title/Tag: When posting your track, please include “disquiet0362” 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 362nd weekly Disquiet Junto project — Operational Surrealism / The Assignment: Make a piece of music informed by a key text from the art movement — at:

Thanks to Peggy Nelson, for having proposed this project.

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, etc.) from a Flickr photo by Audrey Un Riz, thanks to a Creative Commons license:

Daniel Lemire's blog: Asking the right question is more important than getting the right answer

Schools train us to provide the right answers to predefined questions. Yet anyone with experience from the real world knows that, more often than not, the difficult part is to find the right question.

To make a remarkable contribution, you need to start by asking the right question. I will go further than this: the questions you are asking might define who you are.

What is a good question?

  • The great questions are tractable and fruitful. They lead you on a path of discovery. It is easy to ask how to cure cancer, but that’s not a good question because it does not help anyone do medical research.
  • Secret questions are the best: if you are the only one with this question in mind, then you may be holding a gold mine. Questions that everyone is having are proportionally worthless. (E.g., see Zero to One by Peter Thiel)

You may think that by studying hard, by learning all the answers, you will get better at asking great questions. I am not sure it works.

In fact, knowing too much can harm you. I would take a B student who has fresh questions as a Ph.D. student over a typical overeager A+ student who frets about getting everything right. It is a poorly held secret that some of the very best researchers and innovators were average students.

Do the following experiment. Pick a scholarly field, any field, then spend two weeks reading everything about it that you can. Next, write down 5 questions. I can almost guarantee you that these 5 questions will be already covered by sources you read. They will be “known” questions.

So to find good questions, you have to maintain some distance from the material. This should be uncontroversial if you consider that I define “good questions” to be “secret” or “highly original”.

Our minds tend to frame everything in terms of the patterns we have learned. Spend two years studying Marxism and every single problem will feel like a Marxist problem to you. It becomes difficult for you to come up with new questions outside of the frame.

Don’t get me wrong: smart people who know more tend to be more creative, everything else being equal… but there is a difference between being knowledgeable and having been locked into a frame of mind.

Yet here is how many researchers work. They survey the best papers from the last major conference or journal issue in their field. Importantly, they make sure to read what everyone is reading and to make sure to make theirs the frame of minds of the best people. They make sure that they can repeat the most popular questions and answers. They look at the papers, look for holes or possibilities for improvement and work from there. What this ensures that there are a few leaders (people writing about genuine novel ideas) followed by a long and nearly endless stream of “me too” papers that offer minor and inconsequential variations.

It is easier to judge these things in retrospect. In computer science, we had the XML craze at the turn of the century. Dozens of XML papers appeared each year at each of the top database conferences. I wrote about the untold story of the death of this idea. How could so many people get so excited at the same time by what was a dead-end?

I believe that people are happy to be handed out questions and will often rush out to provide highly sophisticated thorough answers… whether or not the question is the right one.

My claim is that the people leading are not unnaturally smart, knowledgeable or creative. The people who answer other people’s questions are not dumb or unimaginative. The main difference is one of focus. You either focus on asking good questions or you focus on providing good answers.

The world would be better if we had more people asking better questions.

How might we ask better questions?

  • Pay attention to what is around you and violates your worldview. How did Fleming discover penicillin? He noticed that some mold that had invaded his dirty lab appeared to kill bacteria. He asked the right question at that time.
  • Be patient. Reportedly, Einstein once stated, “It’s Not That I’m so Smart, It’s Just That I Stay with Problems Longer.” The longer you work on a problem, the more likely you are to find interesting questions. (See Forthmann et al. 2018) The easiest way to miss the great questions is to dismiss the problems as uninteresting and move on too quickly.
  • Be physically active, go for a walk. Chaining yourself to a desk is likely counterproductive. I used to think that being an all-out intellectual was the best route, but I now believe that I was grossly mistaken. I personally take a walk outside almost every morning on weekdays. (See Oppezzo and Schwartz, 2014).
  • Don’t be too social. Social pressure toward conformity trigger intense instinctive reactions. It is simply hard to go against the herd. Thus you are better off not know too much about where the herd is. In concrete terms, spend entirely days by yourself.
  • Ask a lot of questions. If you want to become good at providing the right answers, train yourself to answer lots of questions. If you want to become good at asking questions, ask a lot of them.
  • Always question your own thoughts and work.

The scientific mind does not so much provide the right answers as ask the right questions. (attributed to Levi-Strauss)

new shelton wet/dry: ‘Live fo’ her life and die fo’ her life.’ –R. Kelly

BBC Music Magazine surveyed 151 conductors working across the world to come up with a top 20 great symphonies. The Eroica, Beethoven’s Third Symphony, came in at No 1, followed by his Ninth, the “Choral”, in second place. Mozart’s last symphony, No 41, the “Jupiter”, was in third place while Mahler occupied the next two places [...]

new shelton wet/dry: Every day, the same, again

Poo found on every McDonald’s touchscreen tested London bans junk food advertising on public transportation Major dark web drug dealers have started to voluntarily ban the synthetic opioid fentanyl When cryptocurrency issuers want positive coverage for their virtual coins, they buy it It claims to be, in short, a next-generation lie detector. Polygraph tests are a $2 billion [...]

The Geomblog: The theoryCS aggregator

As you all might now, the cstheory blog aggregator is currently down. Many people have been wondering what's going on and when it will be back up so here's a short summary.

The aggregator has been thus far maintained by Arvind Narayanan who deserves a HUGE thanks for setting up the aggregator, lots of custom code and the linked twitter account. Arvind has been planning to hand it over and the domain going down was a good motivator for him to do that.

Currently I have all the code that is used to generate the feed, as well as control over the twitter feed. Arnab Bhattacharyya has kindly volunteered to be the co-manager of the aggregator. What remains to be done now is

  • set up a new location to run the aggregator code from
  • set up hosting for the website
  • link this to the twitter account. 
None of these seem too difficult and the main bottleneck is merely having Arnab and I put together a few hours of work to get this all organized (we have a domain registered already). We hope to have it done fairly soon so you can all get back to reading papers and blogs again. 

MattCha's Blog: Storage Issues: “Shelf Fatigue”

Recently, James of TeaDB published an excellent article on storage comparisons.  He compared 3 of the same Yang Qing Hao cakes from different storage conditions.  One of his findings is something that is already well understood among puerh drinkers.  It’s something I refer to as “shelf fatigue”.

“Shelf Fatigue” refers to a cake that decreases in quality as it sits on the shelf waiting to be consumed, usually alone in a sealed plastic Ziploc/ Mylar bag or in the open air out of its regular storage conditions.  Many people will have some other more intricate storage system for larger qualities of puerh that is not always super easy or convenient to access but that keeps the puerh much better.  So for convenience, they bring a few cakes of puerh out of this deeper storage into a more accessible drinking storage set up close to their tea table.  The most common are in a tea caddy, ziplock/ mylar, or open shelf storage.

Of course, one way to prevent this in the first place is to limit how long your drinker puerh is exposed to shelf storage.   You can do this two ways.  The first way is to have less cakes available to drink at once.  For me I don’t like this option because I feel that “variety is the spice of life” and I commonly have 5 or 6 cakes going at once.  The second method is to just take smaller portions of puerh from the deeper storage.  This has its downside as well as it as it takes more time and energy to access my deeper stored puerh and it is pretty inconvenient for me.  Also, it exposes the deeper stored puerh to the natural climate on a more frequent basis which is not the purpose of most storage setups.

I have found that tea caddies are the best way to prevent shelf fatigue in puerh.  I remember trying experiments from teamasters in Korea using Korean ceramics comparing shelf, ceramic tea caddy (see some beauties here and here), and Ziplock bags.  The tea caddy was the clear winner in that climate and I believe it would also be a possible good solution in Western climates.  I think it’s also a beautiful esthetic that adds to the tea drinking experience.  The clay reconnects the qi of the leaf to the earth once again… So harmonious... Wilson also is a fan of the tea caddy for this purpose .

However, there are many practical considerations which prevents me from using this type of everyday/accessible storage.  First, is a space consideration, those caddies do take up a lot of surface space (x6) which I don’t have in my modest living space.  Second, is a price consideration, as these caddies can be a bit pricey.  The third consideration is that I keep the puerh on the cake and pry it off just before consuming it.  Others like to break up a whole cake or portion of a puerh cake for consumption, the caddy would be maybe better fit for them.  In the desolate climate I age puerh in nowadays, I am more uncertain about the benefits of a tea caddy.  This is the reason why I don’t own a large enough one to store puerh.  Some people in very very humid and warm climates might find open shelf storage adequate but most in the west will find this to be the worst for shelf fatigue.

I choose to go the route of the Ziplock/ Mylar bag.  This method works for the above reasons also because the sealed storage of the Ziplock works along with theory that sealed storage is superior.  However, shelf fatigue in this type of drinker storage is common as evidence by James’ findings.  I postulate that shelf fatigue of puerh is due to two possible factors. 

The first possible theory of shelf fatigue is that, with repeated opening and closing of the Ziplock/ Mylar, the puerh cake eventually loses moisture and dries out.  The dried out puerh tastes less dynamic compared to the more humidly stored puerh.  To remedy this, I have experimented with just wiping the plastic ziplock with a moist cloth or paper towel.  This seems to help a bit but I find it not as effective as using the steam from the kettle to add warm moisture to the bag.  I have experimented with actually holding the paper wrapped cakes over the steam at a distance as well, this works alright because really it is just the paper wrapping that gets hit with the steam but I have settled with steaming the bag instead these days.  I have been doing this for a few years now and think it is the most effective way of maintaining the puerh when in shelf storage.

I usually put my hand a few feet above the steam of the kettle so that the steam is not scalding and will not melt the plastic but is just warm.  Then I tip the bag on its side and let the steam collect in the Ziplock.  It will fog up the plastic. Then I press out the air and seal up the zipper seal on the bag.  Use caution here people, and air on the side of safety else you will get a steam burn or melt the plastic.  This technique adds both humidity and a touch of heat and doesn’t add any plastic smells if the steam is cool enough.

The second possible theory of shelf fatigue is that, as a puerh cake is consumed in a bag and the bing gets smaller and smaller, more surface area is exposed to air and less to other puerh.  The idea is that puerh tastes better when aged with other puerh.  To remedy this I suppose you could put the puerh in increasingly smaller Ziplock bags.  I tired that but didn’t notice as much difference in maintaining the puerh and it was a little annoying to me to have all these little baggies around.  What I do, and seems to work much better, is that when my puerh cake is about 1/3 to 1/4 consumed, I throw it in with a bunch of other puerh that are about 1/3 or more consumed.
I wonder if you have ever experienced shelf fatigue and I wonder what you do to remedy this storage issue? I hope these little tips help you in consuming better tasting puerh.  After all, what is the point of all the storage fuss if you end up consuming less optional puerh in the end?


explodingdog: #minotaur #labyrinth...

#minotaur #labyrinth

OCaml Planet: MirageOS, towards a smaller and safer OS

Presentation about MirageOS in Lambda World Cadìz on October 26th

Disquiet: Playing the Quiet at Full Volume

Kent Sparling has long been a master of quiet music. He often explores field recordings as source material, and ekes out small sounds from synthesizers and acoustic instruments alike. That work has reached a new phase with his forthcoming full-length release, two preview tracks of which are currently streaming on his Bandcamp page. The album, Mount Larsen, is due out on December 18. It is both Sparling’s quietest and, in many ways, his loudest album yet.

Sparling’s music has always explored spaciousness, the way sounds suggest scope, scale, and dimensionality, and that work has benefited from his extensive experience in sound for motion pictures (his IMDB page lists 175 sound-department credits to date). On the new album, the only sounds are those that surface as feedback in the closed acoustic system of a Skywalker Sound scoring stage. The results, as heard on the tracks “Gorda Plate” and “Tephra,” are haunting drones and ringing tones, ghostly whistles and soft hums, all left to coagulate and circulate — and to build, as well, occasionally dialed back when they seem likely to pierce the listener’s comfort. That is when Sparling’s music enters a new realm for him — music that has so long explored the fog now plays with fire.

He describes the album’s composition in a note accompanying its release:

Mount Larsen is a record of feedback music, recorded live on a large film scoring stage. Electronic and acoustic sounds were used to “excite” the room, whose natural reverb decay is over 4 seconds; these sounds were picked up by an array of 10 microphones which were fed to a small mixing console and then back out to large speakers the room, the sounds from which were in turn picked up by the original microphones, creating an acoustic feedback loop of rich and evolving tones. The performance of the pieces involved the composer mixing the sounds back into the room live, bringing the system to the edge of collapse, then carving away energy to create hollows of near-silence. The object was music with a wide dynamic range between billowing waves of heavy sound and very, very quiet lingering filaments of clear feedback. The result is both loud and quiet, energetic and relaxing, complicated and simple and pure.

Available for pre-order at More from Sparling, who lives in Berkeley, California, at

The Shape of Code: Coding guidelines should specify what constructs can be used

There is a widespread belief that an important component of creating reliable software includes specifying coding constructs that should not be used, i.e., coding guidelines. Given that the number of possible coding constructs is greater than the number of atoms in the universe, this approach is hopelessly impractical.

A more practical approach is to specify the small set of constructs that developers that can only be used. Want a for-loop, then pick one from the top-10 most frequently occurring looping constructs (found by measuring existing usage); the top-10 covers 70% of existing C usage, the top-5 55%.

Specifying the set of coding constructs that can be used, removes the need for developers to learn lots of stuff that hardly ever gets used, allowing them to focus on learning a basic set of techniques. A small set of constructs significantly simplifies the task of automatically checking code for problems; many of the problems currently encountered will not occur; many edge cases disappear.

Developer coding mistakes have two root causes:

  • what was written is not what was intended. A common example is the conditional in the if-statement: if (x = y), where the developer intended to write if (x == y). This kind of coding typo is the kind of construct flagged by static analysis tools as suspicious.

    People make mistakes, and developers will continue to make this kind of typographical mistake in whatever language is used,

  • what was written does not have the behavior that the developer believes it has, i.e., there is a fault in the developers understanding of the language semantics.

    Incorrect beliefs, about a language, can be reduced by reducing the amount of language knowledge developers need to remember.

Developer mistakes are also caused by misunderstandings of the requirements, but this is not language specific.

Why do people invest so much effort on guidelines specifying what constructs not to use (these discussions essentially have the form of literary criticism)? Reasons include:

  • providing a way for developers to be part of the conversation, through telling others about their personal experiences,
  • tool vendors want a regular revenue stream, and product updates flagging uses of even more constructs (that developers could misunderstand or might find confusing; something that could be claimed for any language construct) is a way of extracting more money from existing customers,
  • it avoids discussing the elephant in the room. Many developers see themselves as creative artists, and as such are entitled to write whatever they think necessary. Developers don’t seem to be affronted by the suggestion that their artistic pretensions and entitlements be curtailed, probably because they don’t take the idea seriously.

things magazine: Lost in the mists of time

Fancy a modernist hotel in Žvrynas, Vilnius? From the eccentrically translated blurb: ‘The residence was built in 1980 like a hotel for the top level officials. In this villa, presidents Mikhail Gorbachev, Richard Nixon, Lech Walesa, the Queen of Denmark … Continue reading

OCaml Planet: Fixin' your automata

There are several ways of compiling a regular expression (RE) down to a deterministic finite-state automaton (DFA). One such way is based on Brzozowski derivatives of regular expressions. In this post, I describe a concise OCaml implementation of this transformation. This is an opportunity to illustrate the use of fix, a library that offers facilities for constructing (recursive) memoized functions and for performing least fixed point computations.

From REs to DFAs, via Brzozowski derivatives

Suppose e denotes a set of words. Then, its derivative delta a e is the set of words obtained by keeping only the words that begin with a and by crossing out, in each such word, the initial letter a. For instance, the derivative of the set { ace, amid, bar } with respect to a is the set { ce, mid }.

A regular expression is a syntactic description of a set of words. If the set e is described by a regular expression, then its derivative delta a e is also described by a regular expression, which can be effectively computed.

Now, suppose that I am a machine and I am scanning a text, searching for a certain pattern. At each point in time, my current state of mind is described by a regular expression e: this expression represents the set of words that I am hoping to read, and that I am willing to accept. After I read one character, say a, my current state changes to delta a e, because I have restricted my attention to the words of e that begin with a, and I am now hoping to recognize the remainder of such a word.

Thus, the idea, in a nutshell, is to build a deterministic automaton whose states are regular expressions and whose transition function is delta.

The main nontrivial aspect of this apparently simple-minded approach is the fact that only a finite number of states arise when one starts with a regular expression e and explores its descendants through delta. In other words, a regular expression e only has a finite number of iterated derivatives, up to a certain equational theory. Thanks to this property, which I won’t prove here, the construction terminates, and yields a finite-state automaton.

For more details, please consult the paper Regular-expression derivatives re-examined by Scott Owens, John Reppy and Aaron Turon. In particular, Definition 4.1 in that paper gives a number of equations that must be exploited when deciding whether two regular expressions are equal. In the following, I refer to these equations collectively as EQTH, for equational theory. Among other things, these equations state that disjunction is associative, commutative, and idempotent. In other words, a disjunction must be viewed as a set of disjuncts. The empty regular expression can be viewed as an empty disjunction.

An alphabet

Throughout, I assume that the alphabet is given by a module Char whose signature is as follows:

Char : sig
  type t
  val equal: t -> t -> bool
  val hash: t -> int
  val foreach: (t -> unit) -> unit
  val print: t -> string

The fact that this alphabet is finite is witnessed by the existence of the function Char.foreach, which enumerates all characters.

As an exercise for the reader, this can be used to define an auxiliary function exists_char of type (Char.t -> bool) -> bool.

Regular expressions, hash-consed

The syntax of regular expressions (expressions, for short) is naturally described by an algebraic data type regexp.

It is the same syntax as in Owens et al.’s paper, except I use n-ary disjunctions and conjunctions. As explained above, this is dictated by the need to take EQTH into account. The data constructors EDisj and EConj carry a list of subexpressions. This list is normalized in such a way that, if two lists are equal as sets, then they are equal as lists, too. This list is never a singleton list. It can be empty: EDisj [] is the empty expression zero, while EConj [] is the universal expression one.

type regexp =
  skeleton HashCons.cell

and skeleton =
  | EEpsilon
  | EChar of Char.t
  | ECat of regexp * regexp
  | EStar of regexp
  | EDisj of regexp list
  | EConj of regexp list
  | ENeg of regexp

A slight twist is that expressions are hash-consed. That is, every expression is decorated with an integer identifier. (A record of type skeleton HashCons.cell is a pair of an integer identifier and a skeleton.) These identifiers are unique: two expressions are equal if and only if they carry the same identifier. (This notion of equality takes EQTH into account.) This allows testing very quickly whether two expressions are equal. This also allows building efficient dictionaries whose keys are expressions, or in other words, efficient memoized functions of type regexp -> .... This is heavily exploited in the code that follows: the functions nullable, delta, and nonempty are three examples, and there are more.

The module HashCons, which is part of fix, provides facilities for hash-consing. (The reader is encouraged to take a look at its implementation: it is very short.) It is used as follows:

let make : skeleton -> regexp =
  let module H = HashCons.ForHashedType(struct
    (* Define equality and hashing of skeletons. *)
    type t = skeleton
    let equal = ...
    let hash = ...
  in H.make

let skeleton : regexp -> skeleton =

The function make is where the magic takes place: whenever one wishes to construct a new expression, one constructs just a skeleton and passes it to make, which takes care of determining whether this skeleton is already known (in which case an existing integer identity is re-used) or is new (in which case a fresh integer identity is allocated). The function skeleton, which converts between an expression and a skeleton in the reverse direction, is just a pair projection.

Here are two basic examples of the use of make:

let epsilon : regexp =
  make EEpsilon
let zero : regexp =
  make (EDisj [])

Still using make, one can define several smart constructors that build expressions: concatenation @@, disjunction, conjunction, iteration, negation. These smart constructors reduce expressions to a normal form with respect to the equational theory EQTH. In particular, disjunction flattens nested disjunctions, sorts the disjuncts, and removes duplicate disjuncts, so that two disjunctions that are equal according to EQTH are indeed recognized as equal.

let (@@) : regexp -> regexp -> regexp = ...
let star : regexp -> regexp = ...
let disjunction : regexp list -> regexp = ...
let conjunction : regexp list -> regexp = ...
let neg : regexp -> regexp = ...


An expression is nullable if and only if it accepts the empty word. Determining whether an expression is nullable is a simple matter of writing a recursive function nullable of type regexp -> bool.

I memoize this function, so the nullability of an expression is computed at most once and can be retrieved immediately if requested again. (This is not mandatory, but it is convenient to be able to call nullable without worrying about its cost. Another approach, by the way, would be to store nullability information inside each expression.)

The module Memoize, which is part of fix, provides facilities for memoization. To use it, I apply the functor Memoize.ForHashedType to a little module R (not shown) which equips the type regexp with equality, comparison, and hashing functions. (Because expressions carry unique integer identifiers, the definition of R is trivial.) This functor application yields a module M which offers a memoizing fixed-point combinator M.fix.

Then, instead of defining nullable directly as a recursive function, I define it as an application of M.fix, as follows.

let nullable : regexp -> bool =
  let module M = Memoize.ForHashedType(R) in
  M.fix (fun nullable e ->
    match skeleton e with
    | EChar _ ->
    | EEpsilon
    | EStar _ ->
    | ECat (e1, e2) ->
        nullable e1 && nullable e2
    | EDisj es ->
        exists nullable es
    | EConj es ->
        forall nullable es
    | ENeg e ->
        not (nullable e)


It is now time to define a key operation: computing the Brzozowski derivative of an expression. If a is a character and e is an expression, then delta a e is the derivative of e with respect to a.

Implementing delta is a textbook exercise. A key remark, though, is that this function must be memoized in order to ensure good complexity. A naive, non-memoizing version of it would have exponential cost, due to the duplication that takes place in the cases of concatenation and iteration.

In order to memoize a function of two arguments, one possible approach would be to rewrite it as a function that takes a pair as an argument. Here, instead, I rely on currying. For every character a, delta a is a function of type regexp -> regexp. I memoize each such function independently using fix, and I memoize the function delta itself using memoize, a nonrecursive memoization combinator.

let delta : Char.t -> regexp -> regexp =
  let module C = Memoize.ForHashedType(Char) in
  let module M = Memoize.ForHashedType(R) in
  C.memoize (fun a ->
    M.fix (fun delta e ->
      match skeleton e with
      | EEpsilon ->
      | EChar b ->
          if Char.equal a b then epsilon else zero
      | ECat (e1, e2) ->
          delta e1 @@ e2 ||| if nullable e1 then delta e2 else zero
      | EStar e ->
          delta e @@ star e
      | EDisj es ->
          disjunction (map delta es)
      | EConj es ->
          conjunction (map delta es)
      | ENeg e ->
          neg (delta e)


During the construction of the DFA (which comes up next), it is convenient to be able to (efficiently) decide whether an expression is nonempty (that is, whether it accepts at least one word).

Following Owens et al., I have included all three Boolean operators (disjunction, conjunction, negation) in the syntax of expressions. The presence of conjunction makes it apparently nontrivial to determine whether an expression is nonempty.

Fortunately, by exploiting nullable, delta, and with the help of fix, I am able to define an efficient nonemptiness test in four lines of code:

let nonempty : regexp -> bool =
  let module F = Fix.ForHashedType(R)(Prop.Boolean) in
  F.lfp (fun e nonempty ->
    nullable e || exists_char (fun a -> nonempty (delta a e))

This test is based on the following fact: e is nonempty if and only if either e is nullable or there exists a character a such that delta a e is nonempty.

This statement, however, cannot be used directly as a recursive definition of nonempty, because such a definition would not be well-founded. An attempt to define nonempty using let rec or M.fix would construct a possibly nonterminating function.

Instead, the above statement must be viewed as an inductive characterization of nonemptiness. That is, nonempty is the least fixed point in the Boolean lattice (where false is less than true) of the equation:

nonempty e = nullable e || exists_char (fun a -> nonempty (delta a e))

The main module of the fix library, named Fix, is an algorithm for computing a least fixed point of type variable -> property, where the type property forms a lattice. The functor application Fix.ForHashedType(R)(Prop.Boolean) instantiates this algorithm so that the type variable is regexp and the type property is bool. Then, the fixed point combinator F.lfp allows us to give a straightforward definition of nonempty.

The function nonempty thus defined is incremental. Nothing is computed when the function is constructed; computation takes place only when the function is invoked. It is also memoized: the nonemptiness of an expression, once computed, is recorded and is never recomputed. Thus, one can invoke this function without worrying about its cost.

The reader might note that nonemptiness could also be computed via a graph traversal: an expression is nonempty if only there is exists a path from this expression to a nullable expression in the graph whose vertices are expressions and whose edges are determined by delta. What I have just done is exploit the fact that co-accessibility is easily expressed as a least fixed point.

Constructing a DFA

The tools are now at hand to convert an expression to a deterministic finite-state automaton.

I must first settle on a representation of such an automaton as a data structure in memory. I choose to represent a state as an integer in the range of 0 to n-1, where n is the number of states. An automaton can then be described as follows:

type state =

type dfa = {
  n: int;
  init: state option;
  decode: state -> regexp;
  transition: state -> Char.t -> state option;

init is the initial state. If it is absent, then the automaton rejects every input.

The function decode maps every state to the expression that this state accepts. This expression is guaranteed to be nonempty. This state is a final state if and only if this expression is nullable.

The function transition maps every state and character to an optional target state.

Now, how does one construct a DFA for an expression e? The answer is simple, really. Consider the infinite graph whose vertices are the nonempty expressions and whose edges are determined by delta. The fragment of this graph that is reachable from e is guaranteed to be finite, and is exactly the desired automaton.

There are several ways of approaching the construction of this finite graph fragment. I choose to first perform a forward graph traversal during which I discover the vertices that are reachable from e and number them from 0 to n-1. Once this is done, completing the construction of a data structure of type dfa is easy.

let dfa (e : regexp) : dfa =
  let module G = struct
    type t = regexp
    let foreach_successor e yield =
      Char.foreach (fun a ->
        let e' = delta a e in
        if nonempty e' then yield e'
    let foreach_root yield =
      if nonempty e then yield e
  end in
  let module N = Number.ForHashedType(R)(G) in
  let n, decode = N.n, N.decode in
  let encode e = if nonempty e then Some (N.encode e) else None in
  let init = encode e in
  let transition q a = encode (delta a (decode q)) in
  { n; init; decode; transition }

In the above code, the module G is a description of the graph that I wish to traverse.

The module Number, which is part of fix, helps explore this graph. The functor application Number.ForHashedType(R)(G) performs a traversal of the graph G and constructs a numbering N of its vertices. The module N contains the following data:

  val n: int
  val encode: regexp -> int
  val decode: int -> regexp

Here, n is the number of vertices that have been discovered. The functions encode and decode record the correspondence between vertices and numbers. In other words, decode has type state -> regexp and maps a state to the nonempty expression that this state stands for. Conversely, encode has type regexp -> state and maps a nonempty expression to a state.

I extend encode to a function of type regexp -> state option, which can be applied to a possibly empty expression. Once this is done, the initial state init is obtained by transporting the expression e through the encoding, while the transition function transition is obtained by transporting the function delta through the encoding.

That’s all!

The automaton thus obtained is not necessarily minimal.


The expression dead gives rise, quite naturally, to the following automaton. As usual, every transition is labelled with a character. In addition, every state is labelled with the expression that it represents.

Naturally, this automaton is not very useful, as it merely tests whether the input begins with dead. To search the input for the word dead, one should use the expression 1dead. (Here, 1 denotes the universal expression one.) This expression gives rise to the following automaton:

Here is another example of searching for a nontrivial pattern. This automaton corresponds to the expression 1a(a|b)*(bc)*:

The reader may notice that a final state can have outgoing transitions. If one is interested in finding all matches or in finding a longest match, then this is useful.

However, if one is interested only in searching for a first match and a shortest match, then there is no need for a final state to have outgoing transitions. The above construction can easily be modified so that final states do not carry any outgoing transitions. This leads to slightly simpler automata. For instance, the expression 1dead leads to the following first-match automaton:

Feeding an input text into this automaton is essentially equivalent to searching for the word dead using the Knuth-Morris-Pratt algorithm.

The expression 1(add|dead), which is used to search a text for one of the words add and dead, gives rise to the following first-match automaton:

Feeding an input text into this automaton is essentially equivalent to searching for one of the words add and dead using Aho and Corasick’s algorithm.


Memoization, hash-consing, and fixed points are powerful tools. The fix library makes these tools easy to use. The conversion of regular expressions to deterministic finite-state automata by Brzozowski’s method is a good illustration of their application.

For more details, please look at the full source code for this demo.

s mazuk: add me on peach


new shelton wet/dry: I’m gonna get a fly girl, gonna get some spank, drive off in a def OJ

I was a camgirl for five years. My highest earning month was $50,000. […] The ceiling on cam income is very high — top-range models make around $200/hr, and the super-high end ones can make $1000+/hr. The average income is roughly $40/hr, based on around 200 girls I surveyed a few years ago. […] Nearly every [...] / 2018-12-18T13:03:12