Here’s how fast a few dozen startups grew in Q3 2020

Earlier this week I asked startups to share their Q3 growth metrics and whether they were performing ahead of behind of their yearly goals.

Lots of companies responded. More than I could have anticipated, frankly. Instead of merely giving me a few data points to learn from, The Exchange wound up collecting sheafs of interesting data from upstart companies with big Q3 performance.


The Exchange explores startups, markets and money. Read it every morning on Extra Crunch, or get The Exchange newsletter every Saturday.


Naturally, the startups that reached out were the companies doing the best. I did not receive a single reply that described no growth, though a handful of respondents noted that they were behind in their plans.

Regardless, the dataset that came together felt worthy of sharing for its specificity and breadth. And so other startup founders can learn from how some of their peer group are performing. (Kidding.)

Let’s get into the data, which has been segmented into buckets covering fintech, software and SaaS, startups focused on developers or security and a final group that includes D2C and fertility startups, among others.

Q3 performance

Obviously, some of the following startups could land in several different groups. Don’t worry about it! The categories are relaxed. We’re here to have fun, not split hairs!

Fintech

  • Numerated: According to Numerated CEO Dan O’Malley, his startup that helps companies more quickly access banking products had a big Q3. “Revenue for the first three quarters of 2020 is 11X our origination 2020 plan, and 18X versus the same period in 2019,” he said in an email. What’s driving growth? Bank digitization, O’Malley says, which has “been forced to happen rapidly and dramatically” in 2020.
  • BlueVineBlueVine does banking services for SMBs; think things like checking accounts, loans and payments. The company is having a big year, sharing with TechCrunch via email that has expanded its customer base “by 660% from Q1 2020 to” this week. That’s not a revenue metric, and it’s not Q3 specific, but as both Numerated and BlueVine cited the PPP program as a growth driver, it felt worthy of inclusion.
  • Harvest Platform: A consumer-focused fintech, Harvest helps folks recover fees, track their net worth and bank. In an email, Harvest said it “grew well over 1000%+” in the third quarter and is “ahead of its 2020 plan” thanks to more folks signing up for its service and what a representative described as “economic tailwinds.” The savings and investing boom continues, it appears.

Software/SaaS

  • Uniphore: Uniphore provides AI-based conversational software products to other companies used for chatting to customers and security purposes. According to Uniphore CEO Umesh Sachdev, the company grew “320% [year-over-year] in our Q2 FY21 (July-sept 2020),” or a period that matches the calendar Q3 2020. Per the executive, that result was “on par with [its] plan.” Given that growth rate, is Uniphore a seed-stage upstart? Er, no, it raised a $51 million Series C in 2019. That makes its growth metrics rather impressive as its implied revenue base from which it grew so quickly this year is larger than we’d expect from younger companies.
  • Text Request: A SMS service for SMBs, Text Request grew loads in Q3, telling TechCrunch that it “billed 6x more than we did in 2019’s Q3,” far ahead of its target for doubling billings. A company director said that while “customer acquisition was roughly on par with expectations,” the value of those customers greatly expanded. I dug into the numbers and was told that the 6x figure is for total dollars billed in Q3 2020 inclusive of recurring and non-recurring incomes. For just the company’s recurring software product, growth was a healthy 56% in Q3.
  • Notarize: Digital notarization startup Notarize — Boston-based, most recently raised a $35 million Series C — is way ahead of where it expected to be, with a VP at the company telling TechCrunch that during “the first week of lockdowns, Notarize’s sales team got 3,000+ inquiries,” which it managed to turn into revenues. The same person added that the startup is “probably 5x ahead of [its] original 2020 plan,” with the substance measured being annual recurring revenue, or ARR. We’d love some hard numbers as well, but that growth pace is spicy. (Notarize also announced it grew 400% from March to July, earlier this year.)
  • BurnRate.io: Acceleprise-backed Burnrate.io hasn’t raised a lot of money, but that hasn’t stopped it from growing quickly. According to co-founder and CEO Robert McLaws, BurnRate “started selling in Q4 of last year” so it did not have a pure Q3 2019 v. Q3 2020 metric to share. But the company managed to grow 3.3x from Q4 2019 to Q3 2020 per the executive, which is still great. BurnRate provides software that helps startups plan and forecast, with the company telling TechCrunch with yearly planning season coming up, it expects sales to keep growing.
  • Gravy AnalyticsLocation data as a service! That’s what Gravy Analytics appears to do and apparently it’s been a good run thus far in 2020. The company told TechCrunch that it has seen sales rise 80% year-to-date over 2019. This is a bit outside our Q3 scope as it’s more 2020 data, but we can be generous and still include it.
  • ChartHopTechCrunch covered ChartHop earlier this year when it raised $5 million in a round led by Andreessen Horowitz. A number of other investors took part, including Cowboy Ventures and Flybridge Capital. Per our coverage, ChartHop is a “new type of HR software that brings all the different people data together in one place.” The model is working well, with the startup reporting that since its February seed round — that $5 million event — it has grown 10x. The company recently raised a Series A. Per a rep via email, ChartHop is “on-target” for its pre-pandemic business plan, but “far ahead” of what it expected at the start of the pandemic.
  • Credo: Credo is a marketplace for digital marketing talent. It’s actually a company I’ve known for a long-time, thanks to founder John Doherty. According to Doherty, Credo has “grown revenue 50% since June, while only minimally increasing burn.” Very good.
  • Canva: Breaking my own rules about only including financial data, I’m including Canva because it sent over strong product data that implies strong revenue growth. Per the company, Canva’s online design service has seen “increased growth over both Q2 and Q3, with an increase of 10 million users in Q3 alone (up from 30 million users in June).” 33% user growth from 30 to 40 million is impressive. And, the company added that it saw more team-based usage since the start of the pandemic, which we presume implies the buying of more expensive, group subscriptions. Next time real revenue, please, but this was still interesting.

Developer/Security

Evolutionary Anachronism

Jump to navigation
Jump to search

.mw-parser-output .tmulti .thumbinner{display:flex;flex-direction:column}.mw-parser-output .tmulti .trow{display:flex;flex-direction:row;clear:left;flex-wrap:wrap;width:100%;box-sizing:border-box}.mw-parser-output .tmulti .tsingle{margin:1px;float:left}.mw-parser-output .tmulti .theader{clear:both;font-weight:bold;text-align:center;align-self:center;background-color:transparent;width:100%}.mw-parser-output .tmulti .thumbcaption{background-color:transparent}.mw-parser-output .tmulti .text-align-left{text-align:left}.mw-parser-output .tmulti .text-align-right{text-align:right}.mw-parser-output .tmulti .text-align-center{text-align:center}@media all and (max-width:720px){.mw-parser-output .tmulti .thumbinner{width:100%!important;box-sizing:border-box;max-width:none!important;align-items:center}.mw-parser-output .tmulti .trow{justify-content:center}.mw-parser-output .tmulti .tsingle{float:none!important;max-width:100%!important;box-sizing:border-box;text-align:center}.mw-parser-output .tmulti .tsingle .thumbcaption{text-align:left}.mw-parser-output .tmulti .trow>.thumbcaption{text-align:center}}

The biology of the Ginkgo, a living fossil virtually unchanged for the past 270 million years, shows signs of having coevolved with entirely extinct groups of tree ferns, pollinating mecopterans and theropod dinosaurs.

Evolutionary anachronism is a concept in evolutionary biology, named by Connie C. Barlow in her book The Ghosts of Evolution (2000),[1] to refer to attributes of living species that are best explained as a result of having been favorably selected in the past due to coevolution with other biological species that have since become extinct. When this context is removed, the said attributes appear as unexplained energy investments on the part of the living organism, with no apparent benefit extracted from them, and perhaps are prejudicial to the continued reproduction of the surviving species.

The general theory was formulated by Costa Rican-based American botanist Daniel Janzen and University of Arizona-based geologist Paul S. Martin (a prominent defender of the overkill hypothesis to explain the Quaternary extinction event) in a Science article published in 1982, titled Neotropical Anachronisms: The fruit the gomphotheres ate.[1][2] Previously, in 1977, Stanley Temple had proposed a similar idea to explain the decline of the Mauritius endemic tree tambalacoque following the extinction of the iconic dodo.[3]

Janzen, Martin and Barlow mainly discussed evolutionary anachronisms in the context of seed dispersal and passive defense strategies exhibited by plants that had evolved alongside disappeared megaherbivores. However, some examples have also been described in animal species. John Byers used the name relict behavior for animal behavior examples.[4]

Evolutionary anachronisms should not be confused with examples of vestigiality. Though both concepts refer ultimately to organs that evolved to deal with pressures that are no longer present today, in the case of anachronisms, the original function of the organ and the capacity of the organism to use it are retained intact. An example is the absence of gomphotheres eating avocados does not render the avocado’s pulp vestigial, rudimentary or incapable of playing its original function of seed dispersal if a new suitable ecological partner appears. A truly vestigial organ like the python‘s pelvic spurs cannot be used to walk again.

Megafauna dispersal syndrome

Dispersal syndromes are complexes of fruit traits that enable plants to disperse seeds. The kind of fruits that birds are attracted to are usually small, with only a thin protective skin, and the colors are red or dark shades of blue or purple. Fruits categorized as mammal syndrome are bigger than bird fruits. They possess a tough rind or husk, emit a strong odor when ripe but retain a dull coloration of brown, burnished yellow, orange or remain green, because most mammals have a powerful sense of smell but poor color vision in general, primates being the most notable exception. The megafauna dispersal syndrome refers to those attributes of fruits that evolved in order to attract megafauna (animals that weigh or weighed more than 44 kilograms) as primary dispersal agents. Since the Holocene extinction, large herbivores have become extinct outside Africa and to a lesser extent Asia, leaving these fruits without a suitable dispersal mechanism in the absence of agriculture.

Common megafaunal dispersal traits

Avocados are exceptionally fatty fruits, with seeds far too large to be successfully dispersed by any wild animal presently alive in the Americas.
  • Large fruit, best suited to be consumed whole by large animals without seed loss.
  • Fruit grows on or close to the trunk, or on stout branches.
  • Indehiscent fruit that retains its seeds upon ripening.
  • Seeds deter or elude being ground up by teeth through having a thick, tough or hard endocarp; or bitter, peppering or nauseating toxins. They are also difficult to separate from the pulp, which is tasty and soft, to deter seed spitting.
  • The seeds benefit from—or even require—physical or chemical abrasion to germinate.
  • If tropical, the fruit drops on or just before ripening, stopping monkeys from eating them. In colder climates, the fruit stays on the branch for a prolonged time, keeping it away from predation by ineffectual seed dispersers like rodents.
  • “Looks, feels, smells, and tastes” like other fruits known to be dispersed by megafauna where megafauna still exists.[1]

Ecological indicators of missing dispersal partners

Osage orange (Maclura pomifera) left rotting on the ground in Iowa
  • The fruit either rots where it falls or is ineffectually disseminated by current dispersal agents.
  • The plant is more common where livestock (proxy for megafauna) are present.
  • The seeds germinate and grow well in upland habitats where planted, but the species almost exclusively inhabits floodplains (where water flow disperses the seeds) in the wild.
  • The geographic range is inexplicably patchy or restricted.[1]

Proposed examples in plants

Afrotropical realm

@media all and (max-width:720px){.mw-parser-output .mod-gallery{width:100%!important}}.mw-parser-output .mod-gallery{display:table}.mw-parser-output .mod-gallery-default{background:transparent;margin-top:4px}.mw-parser-output .mod-gallery-center{margin-left:auto;margin-right:auto}.mw-parser-output .mod-gallery-left{float:left}.mw-parser-output .mod-gallery-right{float:right}.mw-parser-output .mod-gallery-none{float:none}.mw-parser-output .mod-gallery-collapsible{width:100%}.mw-parser-output .mod-gallery .title,.mw-parser-output .mod-gallery .main,.mw-parser-output .mod-gallery .footer{display:table-row}.mw-parser-output .mod-gallery .title>div{display:table-cell;text-align:center;font-weight:bold}.mw-parser-output .mod-gallery .main>div{display:table-cell}.mw-parser-output .mod-gallery .gallery{line-height:1.35em}.mw-parser-output .mod-gallery .footer>div{display:table-cell;text-align:right;font-size:80%;line-height:1em}.mw-parser-output .mod-gallery .title>div *,.mw-parser-output .mod-gallery .footer>div *{overflow:visible}.mw-parser-output .mod-gallery .gallerybox img{background:none!important}.mw-parser-output .mod-gallery .bordered-images .thumb img{border:solid #eaecf0 1px}.mw-parser-output .mod-gallery .whitebg .thumb{background:#fff!important}

Example Binomial name Native range Anachronism description Suggested extinct coevolutionary partners
Balanites Balanites wilsoniana West and Central Africa Described as an “anachronism in the making”, with seed dispersal being extremely limited or even unrecorded in areas where elephants have been extirpated. At least one forest in Kenya is known to lack seedlings and young balanites altogether, with all trees present being older than the local extinction of elephants.[1] Forest elephant[1]
Bush elephant[1]
Female coco de mer growth.jpg
Double coconut
Lodoicea maldivica Praslin and Curieuse islands (Seychelles) The fruit weighs over 20 kg and contains the largest seeds in the world. No known animal eats the fruit, and the surviving trees appear to be the result of vegetative reproduction. Mature fruits don’t float and are killed by sea water, unlike real coconuts.[5] The species is not thought to have dispersed over water, but to have evolved locally in the Seychelles after they broke off from the Indian plate 66 million years ago.[6]
Mimusops petiolaris 2.JPG
Makak
Mimusops petiolaris Mauritius In decline due to the absence of animals removing its pulp. As a result, the fruit is colonized by fungi hyphae and the seeds rot without germinating. The fruit is only sporadically consumed by the Mauritian flying fox, which doesn’t ingest the seeds.[7]
Sideroxylon grandiflorum - Mauritian endemic tree.jpg
DodoTree-Naturalis-PeterMaas2009.jpg
Tambalacoque
Sideroxylon grandiflorum Mauritius Peach-sized fruit that ripens from green to brown, much larger than its relatives present in the island and which are eaten by flying birds. The seed is in fact too large to be ingested by flying birds, and introduced pigs and monkeys destroy the seeds rather than disperse them. The tambalacoque evolved locally from smaller-seeded species in the genus Calvaria, which is found in Africa and Madagascar. Stanley Temple reported in 1977 that only 13 trees were left, all of them over three hundred years old, and that seeds could not germinate at all without being ingested and abraded first. However, these claims have since been debunked.[1] Temple proposed that the tambalacoque had a strict mutualist relation with the dodo, extinct since c.1662.[1]
Critics of Temple proposed that the seeds were originally dispersed by a giant tortoise instead, and that the tambalacoque might even have descended from seeds contained in a tortoise drifting from Madagascar, since tortoises are buoyant and colonize islands easily. In the Galapagos, ingestion by giant tortoises reduces seed dormancy in the Galapagos wild tomato, Solanum galapagense. Two species of giant tortoise were originally present in Mauritius and went extinct around the same time, the Domed Mauritius giant tortoise and the Saddle-backed Mauritius giant tortoise. However, tambalacoque seeds have harder covers than seeds usually eaten by tortoises, which have no gizzard; this might imply to a mutualistic relation with a bird after all, and the dodo was the only bird large enough to ingest the seeds. In any case, it was later found that germination was not favored by ingestion and abrasion of the seeds, but by pulp removal. As with Mimusops, the fruit that remains whole is colonized by fungi and its seeds rot.[1]
The broad-billed parrot was also a large bird, although a flying one, and had an even more powerful beak than the dodo.[7]
The Mauritian giant skink is presumed to have been omnivorous.[7]
The coconut crab existed formerly in Mauritius, but has since disappeared from the island.[7]

Madagascar

Example Binomial name Native range Anachronism description Suggested extinct coevolutionary partners
Alluaudia ascendens 1.jpg Alluaudia spp. Southwestern Madagascar Heavily spined stems, apparently as defense against climbing browsers, but browsing lemurs are rare in their area of distribution. The only known living predator is the ring-tailed lemur.[8] Isotope testing found that the extinct monkey lemur genera Mesopropithecus and Hadropithecus likely fed on these plants.[8]
Palmyra Palm Fruits (Borassus aethiopum) (6936992546).jpg
Borassoid and arecoid palms
Borassus spp.
Hyphaene spp.
Bismarckia spp.
Satranala spp.
Orania spp.
Lemurophoenix spp.
Madagascar Large seeded palms. Their relatives outside Madagascar are dispersed by elephants, bats, orangutans, baboons, capuchin monkeys, peccaries and tapirs.[5] Elephant bird[5]
Canarium paniculatum Mauritius Hard seeds and fleshy pulp. Though common in the high forest vegetation, it has a poor regeneration rate.[7]
Commiphora guillaminii Western Madagascar Endozoochorous dry forest tree with high genetic variation among subpopulations at the local scale but similar genetic differentiation among populations at the regional scale as relatives in South Africa, suggesting that the dispersal distance shrunk in the recent past.[9] Giant lemurs[9]
Dilobeia Dilobeia tenuinervis
D. thouarsii
Eastern Madagascar Fruit with a single seed measuring 3–4 cm by 2-2.5 cm, too large to be dispersed by any extant animal in Madagascar.[5]
Adansonia grandidieri02.jpg
Grandidier’s baobab
Adansonia suarezensis.jpg
Suarez baobab
Adansonia grandidieri
A. suarezensis
Madagascar Fruit with fragile pericarp, tasty and nutritious pulp, and seeds with a tough, thick testa, clearly adapted for animal dispersal but lacking any known disperser. Relatives in continental Africa dispersed by elephants and baboons. Very restricted geographic distribution.[5] Archaeolemur,[5][9] a semiterrestrial, generalist lemur similar to a baboon, extinct since the Middle Ages
Pachylemur[9]
Pandanusutilisfruit.JPG
Malagasy pandan
Pandanus utilis Madagascar, Mauritius and Seychelles Seeds of variable size, the largest suited to be eaten by lemurs slightly larger than the extant species. Hard cover.[5]
Malagasy wire plants Several unrelated species Madagascar Plants convergent with New Zealand‘s divaricating plants, adapted to resist browsing by large birds, rather than like their continental African relatives, which have defenses against ungulate browsers.[10] Elephant bird[10]
Ramy nut Canarium madagascariense Madagascar Fruits 6–7 cm long and 4–5 cm wide, with substantial flesh and a single seed 4 cm long and 2 cm wide. The flesh is eaten by aye-ayes but rarely whole, and they may be satiated without removing all the flesh from the seed, indicating that they are not the intended disperser. Its Asian relatives are dispersed by large parrots and hornbills.[5] Elephant bird[5]
Pachylemur, a close relative of the living black-and-white ruffed lemur, but larger and more robust.[5]
Ravenala madagascariensis 003.jpg
Traveller’s tree
Ravenala madagascariensis Madagascar Plants often thrive and even form monocultures in degraded areas, due to their efficient vegetative reproduction. Hard, one centimeter long seeds, not adapted for wind or water dispersal, surrounded by odoriferous, light blue arils. The only viable seeds were found in the dung of the black-and-white ruffed lemur, the largest living lemur.[5] Pachylemur[5]

Australasian realm

Example Binomial name Native range Anachronism description Suggested extinct coevolutionary partners
Birds-nest wattle
Needle wattle
Acacia pickardii
A. carneorum
Central Australia Endangered spiny plants with extremely patchy populations. Both have low seed regeneration and reproduce mainly clonally.[11]
Acacia ramulosa shrub.jpg
Bowgada
Acacia ramulosa Central Australia Unlike related species, the seeds are too large to be dispersed by ants and their low energy-to-water ratio make them unattractive to birds. The large legumes can be found directly beneath the shrub, in abundance and unopened, months after the end of the fruiting season.[1] Defensive spines are also common, despite consumption of Acacia leaves by living marsupials being generally rare.[12]
BurrawangSeeds.jpg
Burrawang
Macrozamia spp. Australia Poor seed dispersal in spite of bright red, fleshy coatings. Brushtail possums eat the flesh but rarely carry the seeds. Many fruits fall in place and rot on the ground.[13] Genyornis[13]
Australian bush tomato plant.jpg
Bush tomato
Solanum spp. Australia Several species with a variable amount of defensive spines in the branches. Strikingly, the most spiny species live in the Australian desert, where browsing marsupials are most rare.[12]
Crystal Creek Walnut - leaves.JPG
Crystal Creek walnut
Endiandra floydii Queensland-New South Wales border Rare rainforest species with a massive seed per fruit[11] Cassowaries[11]
Callitris columellaris NSW1.JPG
Cypress-pine
Callitris spp. Australia Fossil pollen records show a great abundance of this species 50,000 years ago (after the extinction of the megafauna) compared to 100,000 years ago, despite the climate being similar and in contrast to other tree species which declined.[12] There is direct evidence of predation by Diprotodon[12]
Dacrydium guillauminii New Caledonia (Holocene) Critically endangered and limited to New Caledonia in the present, but pollen records show that it was also present in Australia before the Last Glacial Maximum. It is mostly found in the margins of streams and the seeds are dispersed by large birds.[12] Extinct flightless birds[12]
Citrus glauca foliage.jpg
Desert lime
Citrus glauca Eastern and southern Australia Defensive spines up to seven centimeters long.[14] Giant marsupials[14]
Syzygium moorei fruit1.JPG
Durobby
Syzygium moorei Mount Warning, New South Wales Large fruit and very small distribution.[11] Cassowaries[11]
Endiandra pubens leaf.jpg Hairy walnut Endiandra pubens New South Wales and Queensland Massive red fruit compared to other rainforest fruits[11] Cassowaries[11]
Idiospermum fruit.jpg Idiot fruit Idiospermum australiense Daintree lowlands, Mount Bellenden Ker and Mount Bartle Frere in Tropical North Queensland Largest seeds of any plant in Australia (225 grams), which are only sporadically dispersed by gravity and water. As a result, its range is extremely limited and largely restricted to lowly elevations and the margins of streams. However, translocation experiments have found that the species germinates easily in upland rainforests. The seeds are nutritious but contain toxins that make them severely poisonous to small mammals. The fruit has no pulp, but the seeds are easily divided into cotyledons, each of which can produce a different seedling. A large-jawed mammal currently absent might be able to feed on the seeds and disperse some of the seedlings uphill, if these fell from its mouth while chewing the seeds.[12] Diprotodon
Lady apple Syzygium suborbiculare Northern Australia and Papua New Guinea Tasty, red, apple-sized fruits encasing big round seeds, with no animals in their native range suited to eat them.[13] Genyornis[11][13]
Flindersia dissosperma fruit top.jpg
Leopardwood
Flindersia dissosperma
F. maculosa
Inland Australia Several defensive measures against large browsers, including wide, divaricate angle of branching, stiff and spiky twig tips, and small leaves widely separated along branchlets.[12] The defensive measures are lost when the plant reaches four meters, way above the reach of the largest local browsers – swamp and rock wallabies.[11] Browsing flightless birds[11]
Myall Creek wattle Acacia atrox Tamworth, New South Wales Spiny species found only in two stands. Low seed regeneration and mostly clonal reproduction.[11]
Capparis loranthifolia fruit.jpg
Narrow-leafed bumble tree
Capparis loranthifolia Australia [12]
Nutwood Terminalia arostrata Western Australia, Northern Territory and Queensland[15] Defenses against browsers lost around four meters tall, like the divaricate growth pattern.[11] Browsing flightless birds[11]
Oldenlandia gibsonii Gladstone, Queensland Spiny and divaricate shrub, also the only woody member of its genus in Australia.[11] Browsing megafauna[11]
Omphalea Omphalea queenslandiae Queensland 12.5 cm wide fruit similar to African and Asian fruits dispersed by elephants.[11] Giant marsupials[11]
Hakea myrtoides.jpg
Pincushion tree
Hakea spp. Australia Spiny leaves that are not eaten by any living mammal.[12] At least one species (H. eyreana) has cammouflaged flowers, despite no living animal browsing it.[16] Dromornithids[16]
Alectryon oleifolius plant.jpg
Rosewood tree
Alectryon oleifolius Australia Trees growing in semi-circular stands sprouted around ancient burrow systems, possibly in soil once covered by dung of digging megafauna.[14] Giant rat kangaroos[14]
Phascolonus[14]
Scrub guava Siphonodon australis Northeastern Australia[17] Big musky fruit.[14] Diprotodon[14]
Acacia-estrophiolata-foliage.jpg
Southern ironwood
Acacia estrophiolata Central Australia Intricately branched and tangled with small phyllodes at shrub level; erect and with long pendulous phyllodes at tree level.[12]
Acanthocladium dockeri.jpg
Spiny everlasting
Acanthocladium dockeri Laura, South Australia Woody, spiny herbaceous species with relatives that are neither woody nor spiny. Presumed extinct until 1992, when a few clonal populations were discovered.[11] Browsing megafauna[11]
Spiny peppercress Lepidium archersonii Eastern and Western Australia[18] Woody, spiny herbaceous species with relatives that are neither woody nor spiny. Only a few widely scattered populations remaining.[11] Browsing megafauna[11]
Touriga Mammea touriga Tropical Queensland Large-fruited plant with a restricted range. A close relative, M. africana, is dispersed by elephants in Congo.[11] Giant marsupials[11]
Vicious hairy Mary Calamus radicalis Daintree rainforest[19] Defensive spines.[14] Giant marsupials[14]
Acacia peuce juvenile foliage.jpg
Waddywood
Acacia peuce Margins of the Simpson Desert Three anti-browser responses depending of its height: at grass level, the plant is soft but has a strong smell similar to stale urine, and induces headaches in humans; at shrub level, the plant is densely branched and has rigid, sharply pointed and outwardly reaching phyllodes; and at tree level (starting between two and three meters), the plant grows vertically, with soft phyllodes, and sheds all the rigid ones. However, the largest mammal in the area, the red kangaroo, rarely reaches two meters and is a grazer, not a browser. There are only three disjunct populations, but genetic testing shows that each is highly diverse, and similar in its genetic makeup to the others, indicating that they are recent remnants of a larger range area.[12] Seed regeneration is low and the species reproduces mainly clonally. The dense phyllodes of the shrub stage make it very vulnerable to fire, which might be another reason for its decline, as forest fires increased after the extinction of the megafauna.[11] Browsing megafauna[11]
Endiandra compressa leaves.jpg
White bark
Endiandra compressa Eastern Australia Northern populations widespread and dispersed by cassowaries; southern populations restricted to stream banks.[11] Pygmy cassowary[11]
Capparris mitchellii flowers.jpg
Wild orange
Capparis mitchellii Australia Large, round fruits, with drab color and alluring aroma, typical of fruits ingested by mammals. Hooked spines also present.[13] Diprotodon[13]
Capparis canescens.jpg
Wild pomegranate
Capparis canescens Northeastern Australia[20] [12]

New Zealand

Example Binomial name Native range Anachronism description Suggested extinct coevolutionary partners
Coprosma acerosa 11.JPG
Divaricating plants of New Zealand
54 unrelated species[1][21] New Zealand 10% of New Zealand plants have a divaricating pattern of growth (i.e. they grow in thickets), a much larger proportion than elsewhere in the world. Like spines, a divaricating growth pattern reduces the action of large browsers, but it is more effective against browsing birds, while spines are more effective against browsing mammals. However, the only large browsers in New Zealand today are introduced deer.[1] These defenses disappear three meters above ground, at most.[11] Moas – the larger species in particular, which have been identified as browsers from their preserved gizzard contents.[1] The largest species of all, the South Island giant moa, matches the height where the plant defenses disappear.[11]
Corynocarpuslaevigatus012.jpg
Karaka
Corynocarpus laevigatus New Zealand, including the Chatham Islands Fruit with typical lizard dispersal syndrome features like most plants in New Zealand, but too large to be swallowed by any wild animal in the islands.[1] New Zealand’s kawekaweau was the second largest gecko in the world after the Rodrigues giant day gecko (also extinct). It was last observed in 1870.[1][22]
Mount Ngauruhoe August 2003.jpg
Tussock grass
Several unrelated species New Zealand [1] Moas[1]

Indomalayan realm

Example Binomial name Native range Anachronism description Suggested extinct coevolutionary partners
Ginkgo biloba fructification.jpgGinkgo fruit leaves seed.jpg
Ginkgo
Ginkgo biloba China (Holocene)
Northern Hemisphere (Jurassic related forms)
An extreme living fossil, the same genus existed already in the Jurassic and the species might go back to the Middle Cretaceous. Ginkgos were widespread through the Northern Hemisphere until the Paleocene, survived in North America until the end of the Miocene, and in Europe and Japan until the Pleistocene. Seeds are protected by a shell too fragile to deter mammals, since they are capable of mastication, but the pulp is poisonous to frugivores (including humans). Red-bellied tree squirrels (in China) and eastern gray squirrels (in North American parks and plantations) are known to extract seeds from the pulp and store them, but are only secondary dispersers. Fallen diaspores smell like rotten flesh after a few days on the ground, attracting carnivorans like the masked palm civet, the leopard cat and the raccoon dog which eat them whole; however, their marking of their territory through defecation also limits their ability as seed dispersers.[1] The species is entirely pollinated by the wind in the present, but the chemical profile of its pollination drops is similar to those of insect-pollinated, or mixed wind and insect-pollinated Gnetophyta[23] Squirrel-like multituberculates, particularly Ptilodus[1]
Small carrion-eating dinosaurs both lived on the ground and lacked the more powerful masticatory apparatus and gizzard stones of the vegetarian species[1]
Several extinct, early pollinating insect lineages are known from the Middle Jurassic to the Early Cretaceous, before modern flowers evolved. Most of these are long-proboscid scorpion flies (Mecoptera), and include Juracimbrophlebia, whose shape mimicked ginkgo leaves.[23]
The unusual trunk and root growth pattern may have evolved in a pre-angiosperm world where the main competitors of the ginkgo were tree ferns, cycads and cycadeoids[24]
Cephalotaxus harringtonia BotGardBln1105WithSeeds.JPG
Plum-Yew
Cephalotaxus spp. East Asia Gymnosperm widespread through the Northern Hemisphere in the Tertiary. Multituberculates[1]
Rafflesia sumatra.jpg
Rafflesia
Rafflesia spp. Southeast Asia Between 14 and 28 species of dioecious parasitic plants with no visible stems, branches or leaves, but that produce enormous red flowers with a fetid, carrion-like smell. The smell attracts flies but they are poor pollinators. The fruits are giant berries around 14 centimeters long, with woody, cryptic cover; and smooth, oily flesh which smells and tastes like ripe (or rotten) coconut. The only observed dispersers are small rodents and treeshrews that eat part of the pulp and sometimes swallow seeds. Most species are endangered and have disjunct and extremely limited ranges.[1] The original main pollinators might have been dung or carrion-eating beetles that became rarer as the megafauna declined.[1]
The Asian elephant, Javan rhinoceros and Sumatran rhinoceros all used to, but are no longer present in Rafflesia’s range, and might have been its intended seed dispersers.[1]

Nearctic realm

Example Binomial name Native range Anachronism description Suggested extinct coevolutionary partners
Persimmon American2 Asit.jpg
American persimmon
Diospyros virginiana Southeastern United States Seeds difficult to separate from the pulp, like in its Old World relatives, and highly toxic unless swallowed whole. Gray foxes, raccoons and American black bears are well known dispersers of seeds, but they used to be less abundant before their natural predators and competitors like gray wolves, cougars and grizzlies were extirpated by humans, and they tend to defecate in certain places in order to mark their territory, limiting their dispersal potential. Virginia opossums consume the pulp but never swallow the seeds. The fruit is edible for a month before it falls from the tree and remains so for several months afterward.[1] American Mastodon[1]
Cucurbita foetidissima Buffa Gourd Rio Grande Nature Center 2008 fruit.jpg
Buffalo gourd
Cucurbita foetidissima Southwestern United States and Mexico Squash relative with orange-sized fruit that often rots and dries on the ground next to the plant while the next year’s fruit is already ripening. The plant grows well in dry uplands, yet is more commonly encountered in floodplains where flash floods provide occasional dispersal, to the point that hydrochory was proposed once as the main dispersal syndrome of buffalo gourd, but this has been rejected since. High concentrations of cucurbitacin in its pulp and, to a lesser extent, seeds, makes it bitter to most animals. Domestic cattle and donkeys eat it rarely and mostly as a last resource. If eaten by a cow, the cow’s milk will become bitter to humans, and it is deadly to sheep and cattle if eaten in enough quantity. In Africa and Asia, such bitter fruit is most commonly eaten by the largest megaherbivores of all, elephants and rhinoceros. Its distribution is also extremely patchy.[1] Proboscideans[1]
American horses[1]
Toxodon[1]
Camelids[1]
Hesperotestudo[1]
Xanthium spinosum.JPG
Cocklebur
Xanthium spp. Americas and Eastern Asia One of the best known examples of zoochory that does not involve eating the fruit (and direct inspiration of velcro for instance). In New Mexico, the burs, each containing two seeds, adhere to horse fur with such tenacity that they will remain there until they are retrieved by humans or the fur is shed. However, the burs fail to adhere to the fur of the largest wild ungulates in the area, deer.[1]
Larrea tridentata Anza-Borrego.jpg
Creosote bush
Larrea tridentata Western United States and Mexico One of the plants readily eaten by the animals of the United States Camel Corps, a 19th-century experimental unit of the United States Cavalry active in Texas and California.[1] Western camel[1]
Aralia spinosa.jpg
Devil’s walkingstick
Aralia spinosa Southeastern United States Defensive spines appear at a particular height, but neither above nor below. However, this height is considerably higher than that of the current tallest browser in the area, the white-tailed deer.[25] Columbian mammoth[25]
Ground sloths[25]
T taxifolia.jpg
Florida nutmeg
Torreya taxifolia Apalachicola river Historically reduced to northern Florida‘s Apalachicola river, which acted as a refuge for many temperate trees during the ice ages. Unlike other species, the Florida nutmeg did not expand north again when the climate became warmer in the Holocene, and successive blights killed all trees starting in the 1950s. The species survives mostly through asexual reproduction, generating new trees from surviving roots, and it is estimated that it will become extinct when the roots run out of reserves in about 50 years. However, trees introduced to colder, mountain areas in North Carolina thrive and are free of disease, suggesting that the species is better adapted to the climate currently found there than in its Pleistocene refuge.[26] The Florida nutmeg might have depended on an unknown large mammal for long range seed dispersal, which became extinct before the ice age ended. Living squirrels are known to provide some dispersal, but this was only enough to ensure the species’s survival up to recent times, not its re-expansion after the glaciers retired north.[26]
Because the genus Torreya goes back to the Eocene, it’s been suggested that squirrel-like multituberculates dispersed the seeds before squirrels evolved.[1]
Crataegus, various species, fruit.jpg
Hawthorn
Crataegus spp. Temperate Northern Hemisphere Long, widely spaced and insufficiently densed thorns, better at dissuading larger African browsers like rhinoceroses and kudus than the local, narrow-muzzled white-tailed deer.[1] Ground sloths[1]
American mastodon[1]
Gleditsia triacanthos seed pod.jpgAnachronism 027.jpg
Honey locust
Gleditsia triacanthos Mississippi river basin Weather-resistant fruit (pods) that remains on the tree or the ground from one year to another, too large to be eaten by any wild animal in the area, but the seeds need abrasion to germinate. Horses ignore the fruit, but donkeys and mules will eat it on occasion. Large defensive thorns sometimes up to 20 cm are also present, usually high above ground.[1] Columbian mammoth[1]
American mastodon[1]
American horses[1]
Ground sloths[25]
Brontotheres[1]
Indricotherium[1]
Aepycamelus[1]
Joshua Tree 01.jpg
Yucca brevifolia 20.jpg
JoshuaTreeFruit 2008-06-19-25.jpg
Joshua tree
Yucca brevifolia Mojave desert The fruit is much larger than in related species dispersed by birds and fruit-eating bats, a considerable investment in a desert. Fruit-eating bats are not present in the Mojave, and birds eat parasitic insects living in the Joshua tree’s fruit but not the fruit itself. Among rodents, ground squirrels eat the seeds but only sporadically, and pack rats eat the fruits both on the tree and the ground, but avoid the seeds, leaving them in place and not acting as seed dispersers. The fruit is eaten full both by the largest wild mammals in the area (mule deer and bighorn sheep) and livestock species including horses, donkeys and cattle, but adult trees are so tall that they are only able to eat fruit from the ground or the lowest branches, leaving the numerous spines on the rest of the plant unexplained.[27] The fruit may grow at three meters above ground.[1] The western camel was 20% larger than the modern dromedary, allowing it to browse up to 4 meters. Although dromedaries have trouble swallowing whole seeds and are very selective eaters and poor seed dispersers as a result, this might have been different in western camels due to their greater size. However, known western camel fossil dung contains only finely chewed plant remains, like in modern camels.[27]
The American mastodon, Columbian mammoth and Gomphotherium all lived within the modern range of the Joshua tree and could reach even its tallest branches. Like modern elephants, they are presumed to have had an inefficient digestive system, making them both voracious eaters and perfect seed dispersers.[27]
The Shasta ground sloth was common in western North America during the Pleistocene and has been identified as a primary yucca feeder from its fossil feces, which are commonly found in caves of the desert. However, it was only the size of an American black bear and would have been limited to eating only Joshua tree fruits from the lower branches or already on the ground. It probably fed more on smaller species of yucca.[27]
Jumping Cholla fruit.jpg
Jumping cholla
Cylindropuntia fulgida Arizona and Sonora The defensive spines have backward-pointing teeth that attach to passing animals and the stems detach easily. The portions of the stem are transported for a while until they fall to the ground and grow into a new plant. The fruit is also ingested by many desert animals, but it grows above their reach as often as it does below. The fruit that grows in higher branches may remain in place for months after ripening. It falls after desiccating, when it is no longer attractive for potential seed dispersers.[1] Western camel[1]
Shasta ground sloth[1]
Gomphotheres[1]
Gymnocladus-dioicus.jpg
Kentucky coffeetree
Gymnocladus dioicus Midwestern United States Large distribution area but very low density in its whole range. Like the buffalo gourd, it is more common in floodplains even though it grows upland with no problem. The seeds are the largest of any species in the contiguous United States, but they are not harvested by rodents because they can’t break the pod’s tough walls. They need abrasion to germinate. The pulp is very sweet and slightly bitter, similar in taste to the honey locust, but also poisonous to both livestock and humans because of its high content in saponin and alkaloids (nevertheless, it was used historically as a substitute for coffee in the Kentucky area, hence the name, because the toxins are destroyed in the roasting process). The seeds are more poisonous than the pulp, and often, large numbers of fallen pods and non-germinated seeds from preceding years can be found on the ground around a tree, trampled and rotten. The seeds die if they are not removed from the pod in time. Similar, related species in Africa are dispersed by elephants.[1][25][26] American mastodon[1]
Prosopis-glandulosa-seed-pods.jpg
Mesquite
Prosopis spp. Tamaulipan Mezquital Sweet and nutritious pods edible to humans and livestock. Horses and cattle both act as dispersers and also abrade the seeds walls, helping it germinate; foxes and coyotes eat the pods and disperse the seeds but don’t abrade them. As a result, the mesquite’s range began to expand after European colonization. The rest of the plant, however, is armed with thorns and is poisonous to livestock, which makes it unpopular with farmers. Mesquite also limits the growth of grass and favors the establishment of nopales, and once it grows to tree size, it is very hard to kill because it will grow back from the root after being knocked down (currently only possible with tractors).[25][1] Western camel. One of the species sought by the animals of the United States Camel Corps while ignoring the grasses. Along with their resistance to drought, this makes camel ranching a viable (though unexplored) alternative to horse and cattle ranching in the Mezquital.[1]
Gomphotheres were large enough to knock adult trees, like elephants do to similar species in Africa, and might have fed on mesquite pods and prickly pears during their respective fruiting seasons.[1]
Opuntia ficus-indica (Indian Fig) at Secunderabad, AP W IMG 6674.jpg
Nopal
Opuntia ficus-indica Central Mexico Defensive spines at heights far above the range of current browsers. The whole plant is consumed by camels in North Africa and Australia, where animal and plant alike have been introduced and are now feral, and was sought by the camels of the United States Camel Corps. Camels and other livestock also disperse the seeds.[1] Western camel[1]
Gomphotheres[1]
Osage orange 1.jpg
Osage orange
Maclura pomifera East Texas The orange-sized fruit is eaten in place by mice, rabbits, tree squirrels and deer, but they don’t swallow nor store the seeds. It is eaten less discriminately by domestic horses and mules.[26] The defensive spines on its branches are also too wide spaced to dissuade deer-sized ungulates from eating the leaves, making them only effective against larger animals that aren’t alive in the wild in Texas. In addition, fossils show that this species used to be distributed all the way to southern Canada during previous interglacials, suggesting that its range area shrank dramatically after its seed dispersal capacity was diminished.[25][26] Distribution might have been even smaller before the introduction of horses to Texas in the 16th century, even though the wood was favored by many Native American peoples to fashion bows and the local tribes profited greatly from its trade.[26] A close African relative is dispersed by forest elephants in Gabon.[1] Columbian mammoth[25]
Ground sloths[25]
American mastodon[26]
American horses[26]
Gomphotheres[1]
Asimina triloba kz1.jpg
Asimina triloba3.jpg
Pawpaw
Asimina triloba Eastern North America The species largely reproduces asexually today, sprouting patches of small, clonal trees that live around 50 years, from a root system that can live tens of thousands. Its sexual reproduction is elaborate but ineffective. The flower mimics carrion or dung (brown color, fetid odor), but it is rarely visited and pollinated by flies. The downward-facing flower is better suited to be pollinated by beetles, as it is known to happen in related species, all of which live in warmer climates. The fruit is similar in taste and nutritious value to cherimoya and it is the largest edible and the most fleshy in the United States. However, the fruiting season is short and the fruit rots soon after falling from the tree; for this reason the pawpaw’s consumption was abandoned when commercial tropical fruits became available. The seeds are also large and encased in a sweet, but slippery aril that is difficult to remove from them. The species distribution is very patchy and it is more abundant in floodplains and where it was cared for by indigenous peoples of the Eastern Woodlands. However, the plant grows with no problem in uplands and humans eat the pulp without swallowing the seeds. The seed dispersal capacity of foxes, raccoons, skunks and American black bears is unclear.[1] American mastodon[1]
Dung beetles could have been the main pollinators of the pawpaw before they became rarer after the extinction of the megafauna[1]
Proboscidea parviflora MHNT.BOT.2011.18.23.jpg
Red Devil’s claw
Proboscidea parviflora Southwestern United States and northern Mexico Sticky, repugnant leaves invulnerable to herbivore predation. The fruit divides in two opposite claws when it browns and hardens, the circumference of each being larger than a human leg. Though an obvious zoochoric mechanism, this is far larger than the leg thickness of the largest wild mammals in the area (deer, peccaries, coyotes), and as a result the seed is mostly dispersed by humans, horses and cattle. Though already cultivated by Native Americans to make baskets, the species greatly expanded its range after the Europeans introduced livestock in the area. The range now expands into Louisiana and Iowa.[1]
Courgette, jardins du muséum de Toulouse.JPG
Squash
Cucurbita pepo Mexico, Texas, and the Eastern United States Unlike its many domestic varieties, the wild form is bitter to humans.[1] Seeds found in association with American mastodon fossils in Florida, including stomach contents.[1]
Solanum elaeagnifolium berries.jpg
Yellow tomato
Horse nettle berries.jpg
Wild tomato
Solanum elaeagnifolium
S. carolinense
Western North America and South America
Southeastern United States
Mostly found in disturbed sites and floodplains. Fruit often remains on the branch for months or over a year after ripening, when it is already rotten or desiccated, holding the seeds trapped in its interior. Mammals and birds shun the fruit for its high glycoalkaloid content, which is even lethal to livestock. Reptiles, on the other hand, are not affected by them, and the fruit has features that makes it attractive to turtles (yellow-orange color and right height of fructification), just like other related plants.[1] The Box turtle and Gopher tortoise inhabited many areas where wild tomatoes are found, before they went locally extinct.[1]
Hesperotestudo[1]

Neotropical realm

Example Binomial name Native range Anachronism description Suggested extinct coevolutionary partners
Acacia riparia Central America, South America and the Caribbean[28] Recurved thorns on twigs and leaves.[2] Ground sloths[2]
Gomphotheres[2]
Almendro Dipteryx panamensis Honduras to Colombia[29] [2] Gomphotheres[2]
Ficus insipida (17190233702).jpg
American figs
Ficus spp. Neotropics Excessive fruit yield, more than bats and spider monkeys can take.[2]
Acacia tenuifolia.PNG
Ara a gato
Senegalia tenuifolia California to Bolivia and Brazil, including the Caribbean Recurved thorns on twigs and leaves.[2] Ground sloths[2]
Gomphotheres[2]
Persea americana fruit 2.JPG
Avocado
Persea americana Mesoamerica Although the pulp is nutritive and eaten by many animals (even carnivores), the seeds are too large to be swallowed by most. Zoochory is limited to seeds hoarded by agoutis or eaten by jaguars, but this is more occasional than common. Avocado relatives in different latitudes have smaller fruits and seeds, and are eaten by vegetarians. The pulp is so soft that it doesn’t need chewing, but the seeds are poisonous. Forest Elephants have been observed entering plantations in Cameroon and feeding on avocados.[1][30] Reaching up to six meters tall, the adults of the giant ground sloth Eremotherium could have gained access to the ripe avocados before any other mammal (and the juveniles, small enough to climb trees, might have reached even higher). The soft, fatty pulp might have made avocados more attractive to ground sloths than other fruits, because ground sloths lacked both incisors and canines[1]
Cuvieronius[1]
Toxodon[1]
Glyptodonts[1]
Brontotheres[1]
Ucuuba1.JPG
Baboonwood
Virola surinamensis Costa Rica to Brazil and Peru Fruit with typical features of those dispersed by birds and monkeys (bright red, dehiscent, with seeds individually coated with fleshy aril), if slightly larger than usual. However, its known assemblage of bird and mammal dispersal agents is anomalously small and the fruit is often found rotting on the ground. The plant sprouts better from larger seeds, but the seeds better dispersed are the smaller ones that can be ingested by birds.[1] Protopithecus, a distant relative of howler and spider monkeys but twice the size of the largest living New World monkey.[1][31]
Amphitecna latifolia, Black Calabash fruit..jpg
Black calabash
Amphitecna macrophylla Small patches of Mexico and Guatemala [2] Gomphotheres[2]
Astrocaryum standleyanum.jpg
Black palm
Astrocaryum standleyanum Nicaragua to Ecuador [2] Gomphotheres[2]
Black Sapote 1.JPG
Black sapote
Diospyros nigra Eastern Mexico, the Caribbean, Central America, and Colombia [1]
Boat-spine acacia Acacia cochliacantha Mexico Extremely thorny at shrub level, almost entirely unarmed at tree level.[2]
Bunchosia biocellata Southeastern Mexico to Nicaragua[32] [2]
Flowering Indira Inermis.JPG
Cabbage tree
Andira inermis Southern Mexico to Northern South America Fruit eaten by bats but often found felled under the tree; passed over by domestic pigs, horses and cattle, possibly due to high antibiotic content in its pulp. The seeds of the uneaten fruit are in turn killed by weevil larvae.[2] Gomphotheres[2]
Toxodon[2]
Crescentia cujete (fruit and foilage).jpg
Calabash tree
Crescentia cujete Central and South America Fruit the size of a soccer ball, with a hard rind that is tough to crack. The largest living native mammal, Baird’s tapir, cannot open its mouth wide enough to position its incisors in a way capable of biting it. The only animals ever witnessed feeding on the fruit are domestic horses, which step on top of the fruit and must employ as much as two hundred kilograms of pressure to open it. The seeds are rubbery and surrounded by slimy black tissue that is both fetid and very sweet. The fruit falls to the ground while it still is green, and ripens after a month on the forest floor.[1] American horses[1]
Toxodon, a rhinoceros-sized tropical notoungulate with enormous, unusually oriented incisors whose function is poorly understood. These might have evolved specifically to peel fruits of this type[1]
Cassia grandis fruit.jpg
Carao
Cassia grandis Southern Mexico to Venezuela and Ecuador Hard, cylindrical, half-meter long fruit with an inch and a half of diameter, containing large seeds 2 centimeters long, 1.5 cm wide and 0.5 cm thick, embedded in sweet molasses-like pulp. Currently, the fruit often remains on the tree long enough for bean weevils and moths to kill all the seeds, making it an obvious maladaptation.[1] Ground sloths[1]
Cuvieronius[1]
Cedron Simaba cedron Colombia and Central America [2] Gomphotheres[2]
Ceiba pentandra cortex hg.jpg
Ceiba tree
Ceiba aesculifolia[2]
C. pentandra[2]
C. speciosa
Tropics, mostly in America but also Africa and southeast Asia Prominent trunk spines (only saplings in C. pentandra’s case).[2] Browsing megafauna[2]
Flore médicale des Antilles, ou, Traité des plantes usuelles (Pl. 101) (8201971803).jpg
Central American burs[33]
Aeschynomene spp.
Bidens riparia
Desmodium spp.
Krameria cuspidata
Petiveria alliacea
Pisonia macrunthocarpa
Triumfetta lappula
Central America Burs stick to the dense hair of horses and cattle, but not to native wild mammals like tapirs, pacas, collared peccaries or white-lipped peccaries. Excluding Pisonia and Krameria, all are herbaceous species that occur on open, well-trampled habitats.[2] Gomphotheres
Toxodon
Ground sloths
Cherimoya (11107378193).jpg
Cherimoya
Annona fruit.JPG
Custard apple and relatives
Annona cherimola[1]
A. reticulata[1]
A. muricata[1]
A. squamosa[1]
A. purpurea[2]
A. holosericea[2]
A. reticulata[2]
Sapranthus palanga[2]
Neotropics Cuvieronius[1]
Prosopis chilensis, pods (8634261833).jpg
Chilean mesquite
Prosopis chilensis Peru, eastern Argentina and central Chile Sweet fruit with hard seeds. Grows mostly in floodplains and stream margins, in natural corridors followed by livestock herds.[2]
Espina corona 004.jpg
Christ‘s Crown of Thorns
Gleditsia amorphoides Argentina Defensive trunk spines up to forty centimeters long.[1] American horses[1]
Proboscideans[1]
Cacao.jpeg
Cocoa tree
Theobroma spp. Central and South America [2] Gomphotheres[2]
Caesalpinia coriaria.jpg
Divi-divi
Caesalpina coriacea Caribbean, Mexico, Central and Northern South America [2]
Maclura tinctoria2.jpg
Dyer’s mulberry
Maclura tinctoria Mexico to Argentina Saplings with trunk spines.[2] Browsing megafauna.[2]
Flickr - João de Deus Medeiros - Genipa americana.jpg
Genipapo
Genipa americana Southern Mexico to Peru [2]
Grangel Randia echinocarpa Mexico Sweet fruit with hard seeds. Grows mostly in floodplains and stream margins, in natural corridors followed by livestock herds.[2]
Acrocomia aculeata, immature Grugu Nuts. (11164009576).jpg
Grugru
Acrocomia aculeata[2] Southern Mexico and the Caribbean to Paraguay and northern Argentina Large fruit and seeds, with tough epicarp, sticky pulp and very hard endocarp. The fruit grows at heights suitable for terrestrial mammals, but it is often found in piles on the ground under the tree, uneaten, and accompanied by thousands of even older, ungerminated seeds. Young trees are heliophilous, requiring the clearing of older trees to grow. Domestic cattle ingest the fruit, dispersing the seeds when they regurgitate them during rumination, and also help the establishment of new plants through trampling of older vegetation.[34] Long trunk and leaf spines ill-suited to dissuade smaller predators like rodents.[2] Browsing megafauna[2]
Enterolobium cyclocarpum, pods of the Elephant Ear tree or Orejon. (10150160866).jpgFrutos del carocaro (cropped).jpg
Guanacaste tree
Enterolobium cyclocarpum Central Mexico to northern Brazil and Venezuela The flowers grow rapidly into a large, fleshy, ear-shaped pod during the dry season a year after they are fertilized. The ripe pods are brown and cacao-flavored, and fall to the ground over the space of a month. Though many wild animals eat the pods’ flesh, only tapirs are large enough to also swallow and disperse the seeds. The pods are also eaten and dispersed with ease by domestic horses and cattle, however, and as a result the trees are common in areas cleared for pasture or near them.[1][2][35] American horses[35]
Gomphotheres[35]
Glyptodonts[35]
Ground sloths[35]
Columbian mammoth[35]
Toxodonts[35]
Jatobafruits.jpg
Guapinol
Hymenaea courbaril Caribbean, Central and South America Thick woody pod with dry sugary pulp of the same color as the honey locust. Although showing obvious signs of megafaunal dispersal syndrome, the species is currently dispersed almost exclusively by a seed-hoarding rodent, the agouti.[1] Gomphotheres[2]
Guatemalan zizfum Ziziphus guatemalensis Chiapas to Costa Rica[36] [2]
Guayabillo Chloroleucon mangense Central, Northern South America and the Caribbean Sweet fruit with hard seeds. Grows mostly in floodplains and stream margins, in natural corridors followed by livestock herds.[2]
Indigoberry Randia echinocarpa Mexico [2]
Ixtle Aechmea magdalenae Southern Mexico to Ecuador [2] Gomphotheres[2]
Jacquinea pungens.jpg Jacquinia pungens Southern Mexico to Costa Rica Produces leaves with needle-sharp tips only in the dry season. Spines best developed within four to six meters of the ground.[2] Ground sloths[2]
Gomphotheres[2]
Parkia pendula (Willd.) Benth. ex Walp. (11239633443).jpg
Locust bean
Parkia pendula Honduras to Bolivia and Brazil[37] [2] Gomphotheres[2]
Hippomane mancinella (fruit).jpg Manchineel Hippomane mancinella Southern North America and Northern South America Small seeds imbedded in a hard core.[2]
Brosimum-Alicastrum 02.jpg Maya nut Brosimum alicastrum Yucatan and Guatemala to the Amazon [2]
Crescentia alata Blanco2.327-cropped.jpg
Mexican calabash
Crescentia alata Mesoamerica and Central America Close relative of the calabash tree, with white, orange-sized fruit. If not mechanically broken, the seeds will die either from desiccation (in a dry environment) or when the pulp ferments (in moist).[1] The fruit is often consumed by free-ranging horses, and the tree’s size (3–4 meters tall) and shape is similar to an African tree typically dispersed by megafauna.[2] Fossils of the native horse Amerhippus have been found in the plant’s current range area.[2]
Mexican ebony Pithecellobium mexicanum Sonora, Sinaloa and Baja California Sur[38] Sweet fruit with hard seeds. Grows mostly in floodplains and stream margins, in natural corridors followed by livestock herds.[2]
Mimosa Mimosa eurycarpa
M. guanacastensis
Central and South America Recurved thorns in twigs and leaves.[2] Ground sloths[2]
Gomphotheres[2]
Pithecellobium dulce beans.JPG
Monkeypod
Pithecellobium dulce Pacific coast of Mexico, Central and northern South America Sweet fruit with hard seeds. Grows mostly in floodplains and stream margins, in natural corridors followed by livestock herds.[2]
Mimbro en El Diamante.JPG
Nance
Byrsonima crassifolia Central Mexico to Bolivia and Brazil, including the Caribbean [2]
Nicaragua persimmon Diospyros nicaraguensis Eastern Yucatan, southern Nicaragua and northern Costa Rica[39] Large fruit production that just rots on the ground.[1]
Palma real o Palma de gunzo - Attalea rostrata 02.jpg
Forest palm
Attalea rostrata Central America[40] Large fruit and seeds, with tough epicarp, sticky pulp and very hard endocarp. The fruit grows at heights suitable for terrestrial mammals, but it is often found in piles on the ground under the tree, uneaten, and accompanied by thousands of even older, ungerminated seeds. Young trees are heliophilous, requiring the clearing of older trees to grow. Domestic cattle ingest the fruit, dispersing the seeds when they regurgitate them during rumination, and also help the establishment of new plants through trampling of older vegetation.[34] Cuvieronius[2]
Spondias mombin MS4005.JPG
Jobo
Spondias mombin
S. purpurea
S. radlkoferi
Neotropics Excessive fruit crop with small seeds imbedded in a hard core.[1][2]
Ojo de Buey Dioclea megacarpa Western Nicaragua[41] [2]
Carica papaya 005.JPG
Papaya
Carica papaya Central and northern South America The fruit is already large in the wild form, reaching about ten centimeters. The pulp is soft and doesn’t require chewing, but the seeds are poisonous. The seeds are small but clustered at the center, and have a pungent, peppery taste. Forest Elephants have been observed entering plantations in Cameroon and feeding on papayas.[25][26] Cuvieronius[1]
Ground sloths[1]
Toxodon[1]
Apeiba tibourbou MHNT.BOT.2007.27.19.jpg
Peine de mico
Apeiba tibourbou Caatinga, Cerrado and Costa Rica [2]
Bromelia karatas-fruit.jpg
Piñuela
Bromelia karatas
B. pinguin
Sinaloa to Brazil [2]
Pachira quinata trunks.jpg
Pochote
Pachira quinata Costa Rica to Colombia and Venezuela Prominent trunk spines, especially in younger trees.[2] Browsing megafauna[2]
Pouteria ramiflora.jpg
Pouteria tree
Pouteria spp. Neotropics [2] Gomphotheres[2]
Bactris guiinensis.jpg
Pupunha
Bactris guineensis[2]
B. major[2]
Mexico to Colombia, Venezuela and Trinidad Large fruit and seeds, with tough epicarp, sticky pulp and very hard endocarp. The fruit grows at heights suitable for terrestrial mammals, but it is often found in piles on the ground under the tree, uneaten, and accompanied by thousands of even older, ungerminated seeds. Young trees are heliophilous, requiring the clearing of older trees to grow. Domestic cattle ingest the fruit, dispersing the seeds when they regurgitate them during rumination, and also help the establishment of new plants through trampling of older vegetation.[34] Long leaf spines ill-suited to dissuade smaller predators like rodents.[2]
Flickr - João de Deus Medeiros - Alibertia edulis.jpg
Purui
Alibertia edulis Caribbean coast of Central America [2]
Pods I IMG 3110.jpg
Rain tree
Albizia saman Mexico to Peru and Brazil Fruit eaten by domestic horses and cattle.[2]
Gustavia superba (29121658983).jpg
Sachamango
Gustavia superba Central and Northwestern South America [1]
Sali Tetragastris panamensis Guatemala to Bolivia and Brazil[42] Fruit very similar to Baboonwood. Seed waste deemed “enormous” and known dispersal agents “inefficient”.[1] Protopithecus[1]
Hura crepitans 03.jpg
Sandbox tree
Hura crepitans Tropical North and South America Prominent trunk spines, especially in young trees.[2] Browsing megafauna[2]
സപ്പോട്ട.jpg
Sapodilla
Manilkara zapota Mexico, Central America and the Caribbean [2]
Shinglewood Nectandra hihua Southern Sonora Sweet fruit with hard seeds. Grows mostly in floodplains and stream margins, in natural corridors followed by livestock herds.[2]
Sphinga platyloba Central America Recurved thorns on twigs and leaves.[2] Ground sloths
Gomphotheres[2]
Acacia farnesiana (5485483308).jpg
Sweet acacia
Vachellia farnesiana Mexico and Central America Fruit sought by domestic cattle and horses.[2]
Taruma Vitex mollis Southern Sonora Sweet fruit with hard seeds. Grows mostly in floodplains and stream margins, in natural corridors followed by livestock herds.[2]
TempisqueFrutos.JPG
Tempisque
Sideroxylon capiri Mesoamerica and the West Indies [2]
Velvetseed Guettarda macrosperma Chiapas to Costa Rica[43] [2]
Guazuma ulmifolia fruits.jpg
West Indian elm
Guazuma ulmifolia Neotropics Sweet fruit with hard seeds, which is eaten by domestic horses and cattle. Grows mostly in floodplains and stream margins, in natural corridors followed by livestock herds.[2] The pulp has woody obstacles that prevent mastication.[1]
Jungli Kikar (Hindi- जंगली कीकर) (4744929873).jpg
White bayahonda
Prosopis juliflora Mexico, South America and the Caribbean Very localized and patchy distribution along margins of mangrove swamps and beaches. Ingested by cattle and horses.[2]
Starr 060905-8736 Zamia furfuracea.jpg Zamia spp. Mexico to Bolivia, including the West Indies [2] Gomphotheres[2]
Zanthoxylum setulosum Costa Rica to Colombia and Venezuela[44] Prominent trunk spines, especially in young trees.[2] Browsing megafauna[2]

Oceanian realm

Example Binomial name Native range Anachronism description Suggested extinct coevolutionary partners
Cyanea platyphylla.jpg
Hawaiian lobelioids
Cyanea spp. Hawaii Defensive thorns in leaves and stems despite no native browsers being found in the islands. Moa-nalo, four extinct species of flightless ducks identified as browsers from their beak morphology and fossil excrements
Hibiscadelphus giffardianus flower.jpg
Mountain hibiscus
Hibiscadelphus spp. Hawaii Eight extinct or endangered species of Hibiscus relatives whose flowers remain folded in a tube, limiting pollination Several species of Hawaiian honeycreepers, some extinct and others endangered, with varying beak lengths and curvatures suited to feed in the nectar of different tubular flowers

Palearctic realm

Example Binomial name Native range Anachronism description Suggested extinct coevolutionary partners
Strauch mit roten Beeren.JPG
European holly
Ilex aquifolium Western Europe Leaves with defensive spiny edges up to four or five meters, when they are replaced by smooth leaves.[1] This is more than twice the reach of the current largest browsers in the area, the red deer and the wisent.
Corylus avellana 0001.JPG
Hazel
Tamme-Lauri Tamm suvel.jpg
Oak
Corylus spp.
Quercus spp.
Temperate Northern Hemisphere Inability to regenerate in either the deep shade of a forest canopy or under heavy browsing in the open. Though some Eurasian megafauna capable of clearing forests survived into the Holocene (red deer, aurochs, tarpan, wisent, Eurasian beaver and wild boar), differences in the composition of pollen records between the earliest Holocene previous to large human-induced clearing and the interglatial MIS 5 suggests that further clearing was done by even larger megaherbivores disappeared in the Late Pleistocene.[45] Hippopotamus[45][46]
Straight-tusked elephant[45][46]
Narrow-nosed rhinoceros[45][46]
Juniperus communis at Valjala on 2005-08-11.jpg Juniper Juniperus spp. Northern Hemisphere Reduction of fossil pollen concentration in Ireland and subsequent increase unrelated to climate change.[45] The giant deer Megaloceros colonized Ireland right around the time juniper numbers went down and became extinct when they went up.[45]Megaloceros browsed juniper and other shrubs because of their high phosphorus concentration, which was needed in turn to grow the giant deer’s massive antlers for the mating season.[47] This predation caused in turn the descent of juniper and its replacement by grasses.[45]
Ukok Plateau.jpg
Mammoth steppe
Several unrelated species Altai-Sayan Mountains Dry, but botanically diverse biome, composed of grasses, forbs and sedges, which occupied most of northern Eurasia and North America during the Pleistocene and was associated with high concentrations of large grazers. Starting about 13,000 years ago, the steppe was replaced by wet mossy and shrub tundra, taiga and deciduous forests with reduced plant diversity. The change has been traditionally attributed to a climatic shift to warmer, wetter, less continental conditions in the transition to the Holocene, and in turn used to explain the extinction of the local megafauna. Sergey Zimov proposes the opposite: That the extinction of the fauna caused the change in vegetation, and that this wouldn’t have happened if the megafauna was still around, just like it didn’t happen in previous interglatials.[45] Woolly mammoth[45][1]
Muskox[1]
Steppe bison[1]
Wild horse[1]

Proposed examples in animals

Example Binomial name Native range Anachronism description Suggested extinct coevolutionary partners
Australian bush fly Musca vetustissima Australia Native dung fly dependent on introduced cattle, and before cattle was introduced, on human dung. The flies ignore kangaroo dung because it is drier and not as abundant.[14] Dung of Australian megafauna
Molothrus ater 2.jpg
Molothrus ater1.jpg
Brown-headed cowbird
Molothrus ater North America Flocks follow horse and cattle herds, feeding on insects stirred up by the ungulates’ trampling. Their numbers and eastern range expanded greatly after these were introduced to the area with European colonization; however, fossils show that they were just as numerous or more in the Pleistocene, and also that there were two other species in North America that disappeared during the transition to the Holocene.[48] American bison[48]
Harlan’s muskox and shrub-ox[48]
American horses[48]
North American llama[48]
Western camel[48]
Columbian mammoth[48]
American mastodon[48]
Condor in flight.JPG
California condor
Gymnogyps californianus Western North America Critically endangered and only found in a few areas of California and Arizona. Before the human settlement of the Americas, however, the same species (or others very closely related) were commonly found through North America, Cuba and South America as far south as Peru. North American megafauna

It was suggested that condors survived near the Pacific by feeding mostly on beached whales and elephant seal carcasses, which provide a lot of meat, but have skin soft enough to be pierced by the condor’s weak beak. Elsewhere, the condor would have fed on terrestrial megafauna, but only after larger carrion birds like Teratornis had pierced their tough, furry skin, mirroring the symbiotic relationship between African white-backed vultures and the larger lappet-faced vultures and white-headed vultures.[1] Coincidentally, the only other living condor, the Andean condor, is also limited to the Pacific coast of South America and is known to feed on beached whales, but the lack of a fossil record for this species means that it is impossible to know if it existed previously in other areas.

Cuban crocodile.jpg
Cuban crocodile
Crocodylus rhombifer Cuba’s Zapata Swamp and Isle of Youth Critically endangered species that was once widespread through Cuba and also present in the Cayman Islands and the Bahamas. One of the smallest crocodiles in the world, it is also among the most terrestrial and intelligent. Observations in captivity revealed previously unknown pack-hunting behavior, which would make it capable of taking down animals larger than those currently native to Cuba.[49] Six Caribbean ground sloths,[49] the largest of which was the size of an American black bear[1]
Dung Beetle (Helictopleurus giganteus) (8436619870).jpg Helictopleurus giganteus Eastern Madagascar The largest and most rare of native dung beetle species in Madagascar, apparently entirely dependent on human feces. Yet humans arrived in Madagascar for the first time only 2000 years ago.[50] Giant lemurs[50]
Anodorhynchus hyacinthinus-1cp.jpg
Hyacinth macaw
Lear's Macaw Anodorhynchus leari.jpg Indigo macaw
Anodorhynchus hyacinthinus
A. leari
South America Both species follow cattle herds in Brazil (mostly of the zebu-crossed Brahman race, which is a bigger fruit eater) and extract partially digested seeds from their dung. They have adaptations to terrestrial locomotion not present in other macaws, and they ignore the same fruit species while still on the tree, even when ripe, suggesting that this behavior is an ancient adaptation rather than recently learned. Grey parrots do the same with dung of African elephants.[34] It is unknown if the same behavior was exhibited by the third Anodorhynchus species, A. glaucus, which was originally present in Paraguay and northern Argentina and is probably extinct. Cuvieronius[1]
Dragon feeding.png
Komododragon2.jpg
Komodo dragon
Varanus komodensis Flores and other islands formerly united, such as Komodo Though an endemic species, the adults survive largely by hunting or scavenging artiodactyls like Javan rusa deer, banded pig and water buffalo, all of which were introduced to the islands by humans. Dwarf stegodonts (Stegodon florensis),[51] pigmy elephants of size between pigs and buffaloes
More recently, it was suggested that the Komodo dragon’s ancestors evolved their large size in northern Australia and colonized Flores from there.[52] If true, this would make them a double example, as they would have originally preyed on marsupial diprotodons. Ironically, pigs and buffaloes have also been introduced to Australia, where they have no predators, and it was suggested to introduce Komodo dragons as part of rewilding efforts[53]
Merobruchus columbinus Central America and the Caribbean[54] Bean weevil parasiting the fruit of Albizia saman. The animals leave the fruit just before the fall, even though it is still nutritive then.[2] The rapid exit may be an adaptation to avoid accidental ingestion by large mammals, now extinct[2]
Antelope1.jpg
Pronghorn Nebraska 1.jpg
Pronghorn
Antilocapra americana Western North America Capable of sustaining speeds of 60 miles per hour, making it the second fastest land animal in the world, after the cheetah, and the fastest long-endurance runner. No carnivores found in its range approach this speed.[4]Cougars are the only regular predators of adult pronghorns, but can only hunt them when the terrain allows for a stealthy approach. Wolves and coyotes may prey on the young but are poorly suited to hunt adults. American black bears have also been known to attempt ambushes on pronghorns on occasion, typically unsuccessfully.[4] The leg muscles are so overbuilt towards sustained speed that pronghorns cannot jump and will try to cross fences by going under rather than above them.[1] Both the giant short-faced bear and the extinct American lion were larger and better built for sustained speed than their living relatives, the spectacled bear and the lion, respectively[4]
The jaguar was present in large areas of the United States during the Pleistocene and might have hunted pronghorns by stealth, just like the cougar[4]
The extinct American cheetahs (Miracinonyx inexpectatus and particularly M. trumani) were explosive runners very similar to the living cheetah, though not closely related to it. If they could reach the same speed (70 mph), they would have been the most successful predators of pronghorns in short distances, and also explain the pronghorn’s evolution towards sustained running, since modern cheetahs can’t keep running for long[4]
Chasmaporthetes, the only hyena that ever colonized North America successfully, had cheetah-like proportions and was better built for speed than its living relatives[4]
Ring tail lemur leaping.JPG
Ring-tailed lemur
Diademed ready to push off.jpg
Sifakas
Lemur catta
Propithecus diadema
P. verreauxi
Madagascar The adults practice measures against predation by birds of prey, even though they are too large to be hunted by birds currently found on the island.[55][56] Malagasy crowned eagle, a relative of the African crowned eagle extinct since c. 1500 AD
Extinct Malagasy Aquila eagle

See also

References

  1. ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk Barlow, Connie C. (2000). The Ghosts of Evolution: Nonsensical Fruit, Missing Partners, and Other Ecological Anachronisms. New York: Basic Books. ISBN 9780465005512..mw-parser-output cite.citation{font-style:inherit}.mw-parser-output .citation q{quotes:”””””””‘””‘”}.mw-parser-output .id-lock-free a,.mw-parser-output .citation .cs1-lock-free a{background:linear-gradient(transparent,transparent),url(“//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg”)right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited a,.mw-parser-output .id-lock-registration a,.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:linear-gradient(transparent,transparent),url(“//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg”)right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription a,.mw-parser-output .citation .cs1-lock-subscription a{background:linear-gradient(transparent,transparent),url(“//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg”)right 0.1em center/9px no-repeat}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration{color:#555}.mw-parser-output .cs1-subscription span,.mw-parser-output .cs1-registration span{border-bottom:1px dotted;cursor:help}.mw-parser-output .cs1-ws-icon a{background:linear-gradient(transparent,transparent),url(“//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg”)right 0.1em center/12px no-repeat}.mw-parser-output code.cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;font-size:100%}.mw-parser-output .cs1-visible-error{font-size:100%}.mw-parser-output .cs1-maint{display:none;color:#33aa33;margin-left:0.3em}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration,.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left,.mw-parser-output .cs1-kern-wl-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right,.mw-parser-output .cs1-kern-wl-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}
  2. ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq Janzen, D. H.; Martin, P. S. (1982). “Neotropical Anachronisms: The Fruits the Gomphotheres Ate” (PDF). Science. American Association for the Advancement of Science (AAAS). 215 (4528): 19–27. Bibcode:1982Sci…215…19J. doi:10.1126/science.215.4528.19. ISSN 0036-8075. PMID 17790450. S2CID 19296719.
  3. ^ TEMPLE, S. A. (1977-08-26). “Plant-Animal Mutualism: Coevolution with Dodo Leads to Near Extinction of Plant”. Science. American Association for the Advancement of Science (AAAS). 197 (4306): 885–886. Bibcode:1977Sci…197..885T. doi:10.1126/science.197.4306.885. ISSN 0036-8075. PMID 17730171. S2CID 2392411.
  4. ^ a b c d e f g Byers, John (1997). American Pronghorn: Social Adaptations and the Ghosts of Predators Past. Chicago: University of Chicago Press. ISBN 9780226086996.
  5. ^ a b c d e f g h i j k l Godfrey, Laurie R.; Jungers, William L.; Schwartz, Gary T.; Irwin, Mitchell T. (2008). “Ghosts and Orphans”. Developments in Primatology: Progress and Prospects. New York, NY: Springer New York. pp. 361–395. doi:10.1007/978-0-387-73896-3_24. ISBN 978-0-387-73895-6.
  6. ^ Barras, Colin (2019-02-26). “The secret of the world’s largest seed revealed”. New Scientist.
  7. ^ a b c d e Jackson, P.S.W.; Cronk, Q.C.B.; Parnell, J.A.N. (1988). “Notes on the regeneration of two rare Mauritian endemic trees”. Tropical Ecology (78): 56–65.
  8. ^ a b Crowley, Brooke E.; Godfrey, Laurie R. (1990-01-06). “Why all those spines?: Anachronistic defences in the Didiereoideae against now extinct lemurs”. South African Journal of Science. 109 (1–2): 1–7. doi:10.1590/sajs.2013/1346. ISSN 0038-2353.
  9. ^ a b c d Crowley, Brooke E.; Godfrey, Laurie R.; Irwin, Mitchell T. (2010-12-15). “A glance to the past: subfossils, stable isotopes, seed dispersal, and lemur species loss in Southern Madagascar”. American Journal of Primatology. Wiley. 73 (1): 25–37. doi:10.1002/ajp.20817. ISSN 0275-2565. PMID 20205184. S2CID 25469045.
  10. ^ a b Bond, William J; Silander, John A (2007-05-29). “Springs and wire plants: anachronistic defences against Madagascar’s extinct elephant birds”. Proceedings of the Royal Society B: Biological Sciences. The Royal Society. 274 (1621): 1985–1992. doi:10.1098/rspb.2007.0414. ISSN 0962-8452. PMC 2275176. PMID 17535797.
  11. ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac Weber, Lui (Spring 2013). “Plants that miss the megafauna”. Wildlife Australia: 22–25. ISSN 0043-5481.CS1 maint: date and year (link)
  12. ^ a b c d e f g h i j k l m Johnson, Chris (2006). Australia’s Mammal Extinctions: A 50,000-Year History. Melbourne: Cambridge University Press. ISBN 978-0-521-68660-0.
  13. ^ a b c d e f Low, Tim (2017-03-07). “What the Giants Ate”. australiangeographic.com.au. Archived from the original on 2018-07-09.
  14. ^ a b c d e f g h i j Low, Tim (2017). The new nature. Docklands, Vic: Penguin Random House. ISBN 978-0-14-378363-3. OCLC 956766454.
  15. ^ “Terminalia arostrata”. Useful Tropical Plants.
  16. ^ a b Murray, Peter F.; Vickers-Rich, Patricia (2004). Magnificent Mihirungs: The Colossal Flightless Birds of the Australian Dreamtime. Bloomington: Indiana University Press. ISBN 0-253-34282-1.
  17. ^ “Siphonodon australis”.
  18. ^ “Lepidium aschersonii — Spiny Pepper-cress”.
  19. ^ “Calamus radicalis”. Palmpedia – Palm Grower’s Guide.
  20. ^ “Capparis canescens”.
  21. ^ Coprosma acerosa pictured
  22. ^ Bauer, Aaron M.; Russell, Anthony P. (1986). “Hoplodactylus delcourti n. sp. (Reptilia: Gekkonidae), the largest known gecko” (PDF). New Zealand Journal of Zoology. Informa UK Limited. 13 (1): 141–148. doi:10.1080/03014223.1986.10422655. ISSN 0301-4223.
  23. ^ a b Nepi, Massimo; Little, Stefan; Guarnieri, Massimo; Nocentini, Daniele; et al. (2017-10-16). “Phylogenetic and functional signals in gymnosperm ovular secretions”. Annals of Botany. Oxford University Press (OUP). 120 (6): 923–936. doi:10.1093/aob/mcx103. ISSN 0305-7364. PMC 5710648. PMID 29045531.
  24. ^ Royer, Dana L.; Hickey, Leo J.; Wing, Scott L. (2003). “Ecological conservatism in the “living fossil” Ginkgo” (PDF). Paleobiology. Cambridge University Press (CUP). 29 (1): 84–104. doi:10.1666/0094-8373(2003)029<0084:ecitlf>2.0.co;2. ISSN 0094-8373.
  25. ^ a b c d e f g h i j Bronaugh, Whit (2010). “The Trees That Miss The Mammoths”. American Forests. 115 (4): 38–43.
  26. ^ a b c d e f g h i Barlow, Connie (2001). “Anachronistic Fruits and the Ghosts Who Haunt Them” (PDF). Arnoldia. 61 (2): 14–21.
  27. ^ a b c d Lenz, Lee W. (2001). “Seed dispersal in Yucca brevifolia (Agavaceae) – Present and past, with considerations of the future of the species”. Aliso. 20 (2): 61–74. doi:10.5642/aliso.20012002.03.
  28. ^ Groom, A. (2012). Acacia riparia. IUCN Red List of Threatened Species. 2012: e.T19892630A20123577. doi:10.2305/IUCN.UK.2012.RLTS.T19892630A20123577.en.
  29. ^ “Dipteryx oleifera”. Useful Tropical Plants.
  30. ^ B. N. Wolstenholme; A. W. Whiley (1999). “ECOPHYSIOLOGY OF THE AVOCADO (Persea americana Mill.) TREE AS A BASIS FOR PRE-HARVEST MANAGEMENT” (PDF). Revista Chapingo Serie Horticultura. 5: 77–88.CS1 maint: multiple names: authors list (link)
  31. ^ Hartwig, Walter Carl; Cartelle, Castor (1996-05-23). “A complete skeleton of the giant South American primate Protopithecus”. Nature. 381 (6580): 307–311. Bibcode:1996Natur.381..307H. doi:10.1038/381307a0. ISSN 1476-4687. PMID 8692267. S2CID 4262976.
  32. ^ “Bunchosia biocellata SCHLTDL”. Tropicos.
  33. ^ Triumfetta lappula pictured
  34. ^ a b c d Yamashita, Carlos (2013-05-17). “Anodorhynchus macaws as followers of extinct megafauna: an hypothesis”. Revista Brasileira de Ornitologia – Brazilian Journal of Ornithology. 5 (7). ISSN 2178-7875.
  35. ^ a b c d e f g Cherfas, J (1987). “A tropical tree that travels by horse”. New Scientist (1564): 46–52. ISSN 0262-4079.
  36. ^ “!Ziziphus guatemalensis Hemsl”. Tropicos.
  37. ^ “Parkia pendula”. Useful Tropical Plants.
  38. ^ “Pithecellobium mexicanum”. Arid Zone Trees.
  39. ^ “Diospyros nicaraguensis (Standl.)”. Tropicos.
  40. ^ “Attalea rostrata”. Useful Tropical Plants.
  41. ^ “!Dioclea megacarpa Rolfe”. Tropicos.
  42. ^ “T. panamensis (Engl.) Kuntze”. Herbario Panamá (in Spanish).
  43. ^ “Guettarda macrosperma Donn. Sm”. Tropicos.
  44. ^ “Zanthoxylum setulosum”. Useful Tropical Plants.
  45. ^ a b c d e f g h i Johnson, C.N. (2009-03-18). “Ecological consequences of Late Quaternary extinctions of megafauna”. Proceedings of the Royal Society B: Biological Sciences. The Royal Society. 276 (1667): 2509–2519. doi:10.1098/rspb.2008.1921. ISSN 0962-8452. PMC 2684593. PMID 19324773.
  46. ^ a b c Stuart, A.J.; Lister, A.M. (2007). “Patterns of Late Quaternary megafaunal extinctions in Europe and northern Asia”. Courier-Forschungsinstitut Senckenberg. 259: 287–297.
  47. ^ Moen, Ron A.; Pastor1, John; Cohen2, Yosef (1999). “Antler growth and extinction of Irish elk”. Evolutionary Ecology Research. 1 (2): 235–249. CiteSeerX 10.1.1.525.2990. ISSN 1522–0613 Check |issn= value (help).
  48. ^ a b c d e f g h PEER, Brian D.; RIVERS, James W.; ROTHSTEIN, Stephen I. (2013-03-20). “Cowbirds, conservation, and coevolution: potential misconceptions and directions for future research”. Chinese Birds. 4 (1): 15–30. doi:10.5122/cbirds.2013.0009. ISSN 1674-7674.
  49. ^ a b Alexander, Marc (2006-01-01). “Last of the Cuban crocodile?”. Americas (English Edition). Organization of American States. ISSN 0379-0940. Retrieved 2010-07-09.
  50. ^ a b Viljanen, Heidi; Wirta, Helena; Montreuil, Olivier; Rahagalala, Pierre; Johnson, Steig; Hanski, Ilkka (2010-07-30). “Structure of local communities of endemic dung beetles in Madagascar”. Journal of Tropical Ecology. 26 (5): 481–496. doi:10.1017/S0266467410000325. ISSN 1469-7831.
  51. ^ Diamond, Jared M. (1987). “Did Komodo dragons evolve to eat pygmy elephants?”. Nature. Springer Science and Business Media LLC. 326 (6116): 832. Bibcode:1987Natur.326..832D. doi:10.1038/326832a0. ISSN 0028-0836. S2CID 37203256.
  52. ^ Clarke, Sarah (2009-09-30). “Australia was ‘hothouse’ for killer lizards”. ABC News.
  53. ^ “Rewilding: should we introduce lions and Komodo dragons to Australia?”. ABC Radio National. 2013-07-03.
  54. ^ Arguedas, Marcela (1997). Plagas de semillas forestales en America Central y el Caribe (in Spanish). Bib. Orton IICA / CATIE. ISBN 978-9977-57-284-0.
  55. ^ Wright, P. C. (June 1998). “Impact of Predation Risk on the Behaviour of Propithecus diadema edwardsi in the Rain Forest of Madagascar”. Behaviour. Brill Publishers. 135 (4): 483–512. doi:10.1163/156853998793066186. JSTOR 4535540.
  56. ^ Goodman, S. M. (1994). “The enigma of antipredator behavior in lemurs: evidence of a large extinct eagle on Madagascar”. International Journal of Primatology. Springer. 15 (1): 129–134. doi:10.1007/BF02735238. S2CID 6129168.


Report on Biden Activities with China – Balding's WorldBalding's World

A number of months ago, I was approached by an individual I had known for the better half of a decade. I had known this individually professionally and enjoyed their company and deep insight into our overlapping professional interests. Consequently, I would not infrequently seek out their professional opinion. They had written a research report for a client worried about political risk that involved background on the Biden’s in China. This individual believed that the information that had been discovered, and with the approval of the client, needed to make its way into the public domain.

They asked my help in putting the research report in the hands of press asking them just to use the information for their own professional purposes leaving the report anonymous.  Knowing this individual and the quality of work they do, I agreed after reviewing in detail the report that was produced. There are a couple of key points about the report.

First, it is almost exclusively taken from public sources and documentation. Everything from Chinese news reports to corporate records. The report is immaculately cited so that anyone who wishes to replicate where a specific piece of information was found or see the underlying documentation can do so.

Second, the complexity of the overall story, attempts have been made to break down the key points about what happened, who was involved, with timelines and indexes.

Third, only three human sources are used in the report. Two human sources only confirmed top line information in the acknowledgement of an individual and no other information. The third human source was not consulted for the story but agreed to let the information be used for the story after the importance of the information became apparent.

For two months I have worked on behalf of my colleague to ensure that this report helped others report on the documented evidence of Biden activities with regards to China. I want to emphasize a couple of things about my own involvement.

First, I did not write the report and I am not responsible for the report. I have gone over the report with a fine tooth comb and can find nothing factually wrong with the report. Everything is cited and documented. Arguably the only weakness is that we do not have internal emails between Chinese players or the Chinese and Bidens that would make explicit what the links clearly imply.

Second, I will not be disclosing the individual who did write this report. They have very valid reasons to fear for both their personal safety and professional risks. Throughout the years that I have known this individual we never discussed politics. I have never heard them criticize any political party other than the CCP. They are not a Republican.

Third, it was my very real wish that the press would have reported on the documented evidence in this report and left me and the author entirely out of this situation. I did not vote for Trump in 2016 and will not vote for him in 2020. This information however is entirely valid public interest information that the press has simply refused to cover due to their own partisan wishes. I have serious policy differences with President Trump. I am pro-immigration. I would like to see more free trade efforts to shift trade away from China and into partner countries from Mexico to Vietnam and India. I believe that institution building in Asia is vital and America needs to take that lead. However, I cannot in good conscience allow documented evidence of the variety presented here go unreported by partisans who are simply choosing to hide information.

Finally, I will not be answering any questions about the report. I had no wish to be involved in Presidential politics. I do not want to be on the news. I will not be answer any questions about who wrote the report. We need to return the focus to the known documented facts.

Key Points of the Report:

  1. Joe Biden’s compromising partnership with the Communist Party of China runs via Yang Jiechi (CPC’s Central Foreign Affairs Commission). YANG met frequently with BIDEN during his tenure at the Chinese embassy in Washington.
  2. Hunter Biden’s 2013 Bohai Harvest Rosemont investment partnership was set-up by Ministry of Foreign Affairs institutions who are tasked with garnering influence with foreign leaders during YANG’s tenure as Foreign Minister.
  3. HUNTER has a direct line to the Politburo, according to SOURCE A, a senior finance professional in China.
  4. Michael Lin, a Taiwanese national now detained in China, brokered the BHR partnership and partners with MOFA foreign influence organizations.
  5. LIN is a POI for his work on behalf of China, as confirmed by SOURCE B and SOURCE C (at two separate national intelligence agencies).
  6. BHR is a state managed operation. Leading shareholder in BHR is a Bank of China which lists BHR as a subsidiary and BHR’s partners are SOEs that funnel revenue/assets to BHR.
  7. HUNTER continues to hold 10% in BHR. He visited China in 2010 and met with major Chinese government financial companies that would later back BHR.
  8. HUNTER’s BHR stake (purchased for $400,000) is now likely be worth approx. $50 million (fees and capital appreciation based on BHR’s $6.5 billion AUM as stated by Michael Lin).
  9. HUNTER also did business with Chinese tycoons linked with the Chinese military and against the interests of US national security.
  10. BIDEN’s foreign policy stance towards China (formerly hawkish), turned positive despite China’s country’s rising geopolitical assertiveness.

Summary:

Lost among the salacious revelations about laptop provenance is the more mundane reality of influence and money of major United States political figures. Ill informed accusations of Russian hacking and disinformation face the documented reality of a major Chinese state financial partnership with the children of major political figures. A report by an Asian research firm raises worrying questions about the financial links between China and Hunter Biden.

Beginning just before Joe Bidens ascendancy to the Vice Presidency, Hunter Biden was travelling to Beijing meeting with Chinese financial institutions and political figures would ultimately become his investors.  Finalized in 2013, the investment partnership included money from the Chinese government, social security, and major state-owned banks a veritable who’s who of Chinese state finance.

It is not simply the state money that should cause concern but the structures and deals that took place. Most investment in specific projects came from state owned entities and flowed into state backed projects or enterprises. Even the deals speak to the worst of cronyism. The Hunter Biden investment firm share of a copper mine in the Congo was guaranteed with assets put at risk by the larger copper company to ensure deal flow to Hunter’s firm.

In another instance, Bank of China working on an IPO in Hong Kong gave its share allocation to the BHR investment partnership. They were able to do this because even though the Hunter Biden firm completed no notable work on the IPO, it is counted as a subsidiary of the Bank of China. The Hunter Biden Chinese investment partnership is literally invested in by the Chinese state and a subsidiary of the Bank of China owned by the Chinese Ministry of Finance.

The entire arrangement speaks to Chinese state interests. Meetings were held at locations that in China speak to the welcoming of foreign dignitaries or state to state relations. The Chinese organizations surrounding Hunter Biden are known intelligence and influence operatives to the United States government. The innocuous names like Chinese People’s Institute for Foreign Affairs exist to “…carry out government-directed policies and cooperative initiatives with influential foreigners without being perceived as a formal part of the Chinese government.”

Interestingly the CPIFA is under the Chinese Ministry of Foreign Affairs. When the investment partnership was struck in 2013, the Minister of Foreign Affairs was Yang Jiechi. Yang would have been very familiar with Hunter Biden from his days in Washington as the Chinese Ambassador to the United States from 2001 to 2005 during which he met regularly with Joe Biden chairing the Senate Foreign Relations Committee. Today the same individual who oversaw institutions helping shepherd Hunter’s investment partnership as the Minister of Foreign Affairs is Xi Jinping’s right hand man on foreign affairs and member of the powerful Politburo.

Most worrying is the financial leverage this gives the Chinese state over a direct member of the Biden family.  Despite the widely reported $1-1.5 billion of investment the reality is likely much higher. A co-founder of the investment firm reports the total assets under management as $6.5 billion.  While this number cannot be completely replicated, given that two deal alone were worth in excess of $1.6 billion this number is not unrealistic at all.  A 2% annual fee on assets under management would generate $130 million annually. Add in the 20% fee on capital gains the firm would recognize and it is not difficult to see Hunter’s stake being worth in excess of $50 million.

According to Hunter’s attorney, he did not invest his $400,000 in the company until 2017. Even assuming the veracity of this statement, this raises a major problem. Founded in 2013, the firm had large amounts of revenue and assets under management by 2017. In other words, his $400,000 stake would have already been worth far more than what he paid for it. This paltry $400,000 investment worth more than $50 million now would have realized a gain of more than 12,400% in three years.

The difficulty in eluding these concerns is their documentability by anyone who cares to look.  There is no potential for hacking because it is all public record in China. Any journalist who wishes to look can go review IPO prospectuses, news reports, or corporate records. There is no secret method for discovering this data other than actually looking. There is simply no way to avoid the reality that Hunter Biden was granted a 10% stake worth far in excess of what he paid for a firm that is literally operated and owned by the Chinese state.

I did not vote for Donald Trump in 2016 and have significant concerns about his policies in areas like immigration. Having lived in China for nine years throughout the Xi regimes construction of concentration camps and having witnessed first hand their use of influence and intelligence operations, the Biden links worry me profoundly.

Whether Joe Biden personally knew the details, a very untenable position, it is simply political malpractice to not be aware of the details of these financial arrangements. These documentable financial links simply cannot be wished away.

Here is the report if you missed the previous links

CPU vs. GPU: A Discussion about Hardware Acceleration and Rendering

(Interview of Prof. Dr. Philipp Slusallek, accomplished scientist and veteran from the computer graphics field, performed in January 2015 for Seekscale company, a cloud rendering startup)

Hardware acceleration is hot in rendering industry right now, and while people still try to figure out how to split workloads between CPUs and GPUs, FPGAs are quickly rising. We interviewed Philipp Slusallek, Scientific Director and Computer Graphics professor at Saarland University, and talked about what’s hot right now, and above all what we can expect in CG in the near future! We first heard about Philipp by coming across this great discussion.

– What rendering techniques are best adapted to each hardware (GPU/CPU)?

We basically have two key algorithms for rendering: rasterization and ray tracing. Rasterization is a “forward” rendering approach that renders the triangles in a scene one by one (conceptually) and each time updates all pixels covered by that triangle. Ray tracing, on the other hand, traces rays for each pixel to find out which triangle is visible for that pixel.

While the two seem very different, there are intermediate versions, such as “tile-based rasterization” or “frustum tracing”, where only the triangles covering a part of the screen are rasterized or all rays of a tile a traced together, respectively. If you make these tiles smaller, eventually a single pixel in size, rasterization starts to look much like ray tracing and vice versa as you trace larger and larger frusta. However, we still do not have algorithms that really cover the whole range of options well.

Additionally, we are seeing an increased need for advanced (programmable) shading and lighting effects (e.g. global illumination for smooth indirect illumination). While they are sitting on top of the core renderer, they impose many requirements that will determine what rendering approach can or cannot be used.

On the HW (hardware) side: GPUs started as HW dedicated for rasterization. But they have long evolved to become essentially large parallel compute engines (with some dedicated HW thrown in for rasterization, still). On the other hand, CPUs have become much better at parallel workloads with multi-core, multi-threading, and more and increasingly wide SIMD compute units (MMX, SSE, AVX, and the now upcoming AVX-512).

In some sense the two general HW designs are converging towards a similar sweet spot, but coming from two very different starting points.

Rasterization is more dependent on good HW support to be fast and so runs best on GPUs. Ray-tracing can be implemented with very good performance on each HW architecture, probably with some advantage for CPU-like architectures if you look at the latest comparison in the Embree paper at Siggraph 2014 (which may be a bit biased).

– For a developer working on a renderer, what is the technical arbitrage between writing for a CPU, and for a GPU?

Let me focus on writing a full ray tracing renderer using the raw HW. Writing a “renderer” that makes good use of OpenGL/DirectX is a very different story.

First of all writing a really good renderer is a big challenge — but also a lot of fun, independent of the choice of rendering algorithm or HW. It reaches across many levels from highly optimized inner loops all the way up to data management of often complex scenes. It thus touches many aspects of HW and SW and is a perfect poster child for how to best design efficient code for certain HW architectures.

An obvious key element is strongly optimizing the inner loops of a renderer as it determines the upper limit of the achievable rendering performance. This is where a lot of efforts and research has been, and still is, spent. Today, getting the best performance usually still means to hand-optimize the code (at the assembly or intrinsics level) for specific architectures and different choices of renderer configurations. While this often pays off, it requires expert knowledge, is very tedious, and often needs to be completely rewritten as the HW or the requirements change.

In addition, there are also many interdependencies between choices made at this low levels and the various levels of algorithms above it. This means that one needs to keep the code flexible in order for it to adapt to these requirements. However, with current technology, flexibility conflicts strongly with achieving optimal performance.

As a result of all this, almost all renderers have been targeting only one HW architecture: GPUs or CPUs and even within such an architecture, algorithms might have to be configured very differently on different instances. While cross-plattform renderers have been developed, e.g. in OpenCL, OpenCL is still a very low-level language that is not well suited for all HW architectures thus limiting what can be achieved.

In contrast, the hardware vendors each support renderer development with their HW-specific frameworks: Nvidia’s Optix is focused essentially only on GPUs, while Intel’s Embree targets CPU-like architectures (including their MIC/Xeon Phi processors). One interesting note is that both tools (and others) had to develop their own compiler technology to develop these frameworks. While both of these frameworks are very good choices they are black boxes that each come with their own set of drawbacks and limitations.

Already in 2008 we showed that with the right language/compiler tools high optimization of low-level code does not necessarily limit flexibility of the overall design. Our RTFact system [HPG 2008] used C++ template metaprogramming to specialize generic code from across several levels of abstraction at compile time. With this framework, we were able to easily configure very different renderers based on the same generic code and still achieve performance within about 10% of our previous hand-optimized code in each case — which was really remarkable. Unfortunately, writing the core code via C++ template metaprogramming is really hard and results in “write-only code” that is really hard to maintain. But it showed that performance and flexibility are NOT mutually exclusive!

Since then we have teamed up with one of the best compiler research group here at Saarland University (Prof. Sebastian Hack) and have jointly developed “AnyDSL”: It picks up the original idea of RTfact, generalizes it beyond just rendering, and uses much improved compiler technology to implement automatic specialization of generic code. AnyDSL provides a completely new programming models that offers developers a way for formulating hierarchies of conceptual abstractions while still allowing the compiler to eliminate any overhead usually associated with such abstractions (e.g. virtual function calls in C++).

This finally allows for writing completely generic code at each level of abstraction, specifying how that code should make use of abstractions at the lower levels. Finally, at the lowest level, code that has been coming from the different levels is combined and aggressively specialized using novel compiler algorithms to essentially interpret and partially execute any code that is knows at compile time. This is so effective because at these low level a lot of information that we abstracted from at the high levels is now available, such as information about the HW and the context in which some generic high-level code should be executed and which can be taken into account by the compiler. This approach combined the flexibility of hierarchical abstractions with the ability to generate optimized code that rival and often actually exceed the performance of hand-optimized code.

For example, our tests in image processing show that this approach often beats hand-optimized code because that code is very tedious and difficult to write such that not all promising optimization options are actually explored. Since simply use the generic code plus some rather simple mapping code for each specific HW, exploring the space of possible optimizations is much larger.

By now, we have already written a full ray tracer in AnyDSL that compiles and runs efficiently both on various different GPUs and CPUs. However, not all optimizations have been applied yet, so that we cannot really compare its performance yet. This will happen in the next few months but the partial results we have so far are already very promising.

– Corona Render uses for example Intel Embree ray tracing library, for the CPU. What do you think of this solution?

As I argue above, these tools are very useful. They provide hand-optimized kernels that solve some of the core problems, particular the inner loops and can thus be used as the basis for the higher layers, just as Corona did. However, they are essentially black boxes which makes it harder to adapt them to different purposes.

I believe that we need to go beyond these individual optimized kernels and create generic, adaptable, and reusable building blocks for rendering. That can be combined in flexible ways to create optimized renderers for many configurations and HW platforms. So far, we have been missing the right tools to even think how this could be done.

With AnyDSL we now have a tool that for the first time allows us to address this challenge. Now we are investigating how the to design such a flexible rendering framework: What are the right abstractions to be used at the different levels? How do we best map them to HW platforms? Which algorithms work best in what context and how do we need to formulate them, so they can easily be combined? How do we determine the data layout to optimize for different algorithms using it? And so on.

Essentially, AnyDSL allows us to rethink the design of renderers in a fundamentally new way.

– In a GameStar interview you mentioned you were working on FPGAs. FPGAs are a quickly growing field for those who need to optimize hardware for specific use cases. GPU is by definition hardware optimized for CG, yet you work on FPGA hardware for ray tracing. Should we infer that according to you GPUs are not evolving in the right direction right now?

Yes, this interview took place in 2004 at the height of the ray tracing versus rasterization discussion after real-time ray tracing became widely available. At the time, David was defending rasterization strongly, but the situation has changed dramatically since then. By now, Nvidia has embraced ray tracing fully e.g. through Optix and the Mental-Ray products they acquired. They have also significantly optimized their HW for ray tracing (which I was fortunately enough to contribute to in 2007/08 as visiting professor on invitation from David).

Regarding FPGA: We actually published our FPGA design (the RPU architecture) at Siggraph 2005 and various other conferences. At the time it was the first full ray tracing HW architecture that included everything: intersection computations, scene traversal, fully programmable shading, construction of spatial index structures, and many more. We even did extensive evaluations of how it could be mapped to ASICs and the results where very promising.

This was later picked up by industry, including Samsung, Imagination, and others. Imagination now offers a HW ray tracing engine as an add-on to their GPU SOC designs. Most interestingly, they argue (convincingly!) that with the tremendous power cost of memory access, ray tracing will likely have significant advantages over rasterization on mobile platforms, particularly for advanced rendering effects. This is something we have thought about much already in 2005, but back then it was very difficult to get hard numbers on power efficiency of GPU designs for comparison — something Imagination does of course have.

Even more interesting has been research published at HPG 2014 this year, where some very innovative algorithmic changes were combined with rather small changes to a GPU architecture to achieve amazing ray tracing performance (in simulations).

These are very promising results and it will be very interesting to see how this field will develop over the next few years. It seems that ray tracing is very strong already (being partially used in many games already), but the best time for ray tracing may be still to come.

– For a software developer that would like to get into FPGAs, what is the kind of capabilities you need, and where do you draw the line to define what computations are going to be taken care of by hardware, and by software?

FPGAs are definitely a very interesting HW architecture because they are so flexible. But they also come with significant cost, in terms of low clock rate, limited floating point support, and also financial cost (for large designs). I am skeptical they will be able to provide the performance at the power envelope we are looking for today. But they are absolutely great for trying out new designs. With some of the latest ideas I would not be surprised to see some great new developments in this context.

– FPGAs are right now mostly in the R&D stage, and designing production-ready specific hardware is still a massive resources commitment. Are your prototypes viable for real case use, and do you think FPGAs and the needed knowledge can become commoditized?

We are definitely looking into that right now. For our RPU design in 2005, Sven Woop (then PhD student in my lab, today one of the researcher behind Embree) first designed a functional programming language for expressing HW designs at a high level (today we would say a Domain Specific Language, DSL). This allowed him to design the HW in an extremely efficient way: It took him about 6 months for a working prototype of the RPU — including the time it took him to design the DSL in the first place!

Today we have AnyDSL, which already is a functional programming language that we use to express complex SW designs. It is an obvious question, what changes would be required to enable AnyDSL to also express HW aspects of our algorithm, including the mapping to low-level HW building blocks like various functional blocks, different memories, control logic, and so on. This is a big challenge in general but one that might be able to change the way we think about HW and SW, as well as the interface between the two.

– Will we see one day for example fluid simulation processing units?

The algorithms are pretty regular and can likely benefit from direct HW support. But it depends on two things: First, on how easy and efficient we can make it for developers to even design such HW. An extended version of AnyDSL or similar new tools could probably help here.

Second, what is financially viable for a given market is mainly a question of economy of scale: Pure SW solutions are always possible, but an FPGA approach or even an ASIC depends on the return on investment. Allowing an easier and cheaper way to develop an initial software solution and then incrementally evaluate different HW designs without having to start from scratch would definitely be a big step forward.

While I can see FPGA solutions for this (and there have been designs already), I do not think the market is large enough for custom hardware.

– If you look at the past 20 years, what are according to you the most significant changes in the approach industry has taken to solve the rendering equation?

This is actually a very interesting question for me: More or less exactly twenty years ago I finished my PhD thesis at Erlangen University about the “Vision” architecture: A comprehensive SW framework for solving the rendering equation, offering most of the available approaches at the time. It included ray tracing and rasterization as well as some of the latest global illumination techniques that we had developed. We actually were one of the first to combine full RenderMan compatibility with global illumination computations, including novel Monte-Carlo techniques.

Interestingly, back then almost the entire movie industry insisted that Monte-Carlo would never be used in film because of the inherent noise and due to being physically-correct by default, which — they thought — would take away the artistic control they needed. This position actually persisted until only a few years ago, when we finally saw a complete switch of the entire industry to physically-base Monte-Carlo methods within a single year or so.

Today everyone makes use of global illumination using advanced Monte-Carlo techniques. Some of them were actually developed in my lab: Like the “Vertex Connection and Merging (VCM)” technique by Iliyan Georgiev et al. [Siggraph Asia 2012] that has taken the industry in storm. Within a few months after its publication it had been integrated into at least two commercial renderers. And after ~30 years of using their REYES renderer Pixar finally evealed their new architecture at Siggraph this year, which is using VCM as its core.

It is fair to say, that today we have a pretty good understanding of how to solve the rendering equation in general. VCM finally integrated Photon Mapping into the general Monte-Carlo techniques in a mathematically clean and very efficient way. This solved a lot of the hard problems in an elegant way. Lighting in participating media (volumes) is also well advanced now due to recent follow-up work to VCM.

Probably the biggest challenge today is performance. In the EU project “Dreamspace” we are working on real-time realistic rendering for film and video productions. The goal is to integrate the entire post-production into the live production process such that everyone on-set can see the final results in real-time and at least close to full quality. This requires us to develop highly scalable real-time algorithms that take optimal advantage of the available HW to fulfill the significant compute requirements needed.

One other idea that, from my point of view, should receive more attention in ray tracing-based approaches is finding short cuts and special case solutions. This has been at the core of much of rasterization research over the years but has been largely ignored in ray tracing (partially for good reasons :-). However, I believe that we can get a lot of performance that way. Good image space filtering techniques to eliminate residual noise of early results is one aspect of that development and we have seen some good techniques here already. I am sure there will be more.

Some other remaining challenges are:

— Lighting via glossy surfaces: We are good at handling mostly diffuse and mostly mirror-like surfaces, but despite many attempts the intermediate range of glossy surfaces can still cause significant noise and artifacts.

— Portable material models: It is a real shame that we still do not have a general way to exchange materials between two rendering system. With “shade.js” [Pacific Graphics 2014] we have recently done some steps in that direction but much work remains to be done here.

— Handling of large scenes and adaptive LOD: We need to be able to scale our models across much larger ranges. It is still hard to design a system that can render very large models in real-time. As an extreme example think of how to implement a renderer that can render a 3D model of the entire worlds (think OpenStreepMap-3D). We neither have a suitable format to store and transmit such content, to efficiently query for the right LOD, and to manage the data dynamically as we roam around it. This would equally be applicable for rendering complete and detailed models of entire airplanes, automobiles, and other complex models. With our Blast format and 3D-Repo/Assetserver [Web3D 2014], we are looking at providing solution here that are being picked up by industry already, but again much work still remains here.

— Handling measured 3D models and materials: In the future, a lot of 3D data will be coming from capturing the real world around us via smart phones and other devices. It is still unclear how such models should best be represented, shared, modified, and finally be rendered.

— Web-based interactive and realistic 3D Graphics: To a large degree 3D graphics has been limited to custom native applications, like games, CAD-, and animation systems. With XML3D [Web3D 2013] we are offering a very interesting option to integrate 3D models into HTML and the DOM directly. This allows any Web developer to interact with the 3D models in the same way as they interact with text, images, and video today. This way, HTML becomes even more of a rich media interface than it already is. This is a very compelling idea to me.

We are currently integrating XML3D with Server-Based Rendering to also enable highly-realistically, real-time rendered content in any browser. I believe that this could have a huge impact and will eventually be integrated also into the client directly.

– According to you what is the hottest field in CG research right now, where are the next breakthroughs going to come from?

There are so many fields that it is hard to answer that in detail.

However, I believe that we will see an huge increase in data driven graphics in the near future. The ability to capture 3D models, materials, illuminations from the real world is getting to the point where it becomes a very useful tools. OpenStreetMap in full 3D is not really that far away. This opens tremendous opportunities but also many challenges from a graphics and visual computing point of view.

I am particularly interested in what we call “Intelligent Simulated Reality” at the intersection of graphics, artificial intelligence, high-performance computing, and security: How can we bring models of the world into the computer, how can we attach semantics to those models such that the computer “understands” these models, how can we then run simulations efficiently on such models across the Internet, and how can we allow people to visualize and interact with these models to better understand the world around them, how can we enable them to better evaluate the possible outcomes of their decisions ahead of time in order to make this world a better place.

Graphics — and Visual Computing in general — play key roles here as they are the only means to make such data accessible and understandable to everyone.

Two Names, Three Opinions

Noah found favor with the LORD. He was a man of compliant integrity—in his generation. With God did Noah walk [hithalech] (Genesis 6:8-9).

When Abram was ninety-nine years old, the LORD appeared to Abram and said to him, “I am El Shaddai. Walk [hithalech] in My ways and have integrity. (Genesis 17:1)

Martin Buber: “How can you love an Idea?” Hermann Cohen: “How can you love anything but an Idea?”

Does it matter if your therapist knows algebra? Does it matter if your plane pilot is kind? Would you rather be evaluated by a computer algorithm or by someone who knows you? Whose voice should get more weight in shaping public policy: sociologists or engineers? How much should someone’s identity matter in how you treat them?

If there were only one name for God, the message of the Torah—and the answers to the above questions—would be more straightforward. Instead, the Torah uses a handful of names for God, suggesting that there is no end to the conflict between science and art, head and heart, rule and exception. One person’s fairness is another’s rigidity. One person’s self-control is another’s aloofness. One person’s compassion is another’s favoritism. One person’s sense of purpose is another’s delusion of grandeur.

The two most common Biblical names for God are Elohim and YHWH (aka the Tetragrammaton aka Adonai aka The Lord aka Hashem).

Elohim, which also means gods—as in “you shall have no other gods [elohim] before me” (Ex. 20:3)—is the more generic, categorical name for God. YHWH—heretofore Hashem—is the more singular, special, theurgic, personal name. Rabbinic tradition associates Elohim with judgment, Hashem with love and forgiveness.

Elohim is the aspect of divinity that is impersonal, rational, logical, universal. Even atheists accept Elohim insofar as they accept the concept of laws of nature. Elohim is the God of gravity and 2+2=4. Elohim doesn’t really care what I’m doing in this moment. Elohim is more about the zoom-out view, the order of things. Genesis 1 tells the story of Creation from the point of view of Elohim.

Hashem, by contrast, is the aspect of divinity that we connect to when we feel that our lives matter, when we feel stirrings of conscience and existential dread, when we sense that we are loved by unending love. In Genesis 2, Hashem enters the picture in the guise of Hashem-Elohim, creating the Garden of Eden and placing human beings in it. It is HashemElohim who observes that it is not good for us to be alone. It is Hashem-Elohim whose voice roams about in the garden after humans eat from the tree of knowledge.

In their brief dialogue in Genesis 3, the snake and the woman invoke Elohim, but critically leave Hashem out. It’s as if the snake is saying, you’re too small for Elohim to care what you do. Your actions don’t really matter. Live it up. And perhaps the woman buys it. “Elohim has all these cosmic rules, but what does any of that have to do with me?”

In Genesis 4, Cain kills Abel, and now Elohim is gone from the text. It’s all Hashem Hashem Hashem. We now witness the inverse problem. Cain takes everything so personally. God is rejecting him. Cain reacts in uncontrollable envy and anger. But is God really rejecting him, or this just the result of living in a world where religion is seen to be zero-sum?

In a world where God is experienced viscerally and possessively, religion becomes synonymous with politics. God is the CEO of Creation Inc. and we are all employees jockeying to get a raise or promotion. Elohim would never put up with this nonsense, but then again, Elohim is never in the office. Elohim might not even be the CEO. All we see is the plaque on the wall naming Elohim the founder.

The first theft comes when there is no Hashem. The first murder comes when there is no Elohim. In a world without Hashem, I don’t matter and so the only rule is “don’t get caught.” In a world with no Elohim, by contrast, I think I matter way more than I do. As Yeats puts it “the worst are full of passionate intensity.” The Hashem-less world is the world of secularism. The Elohim-less world is the world of violent religious fundamentalism.

All of this is backstory for this week’s Torah reading, parashat Noach (Gen. 6:9-11:32), where the text flips between using Hashem and Elohim. Most notable are verses 6:8 and 6:9—the first time in the Torah that Hashem and Elohim are so closely juxtaposed. Noah finds favor with Hashem, but walks with Elohim. On my read, the text presents us with a tragic moment. Hashem—the aspect of God that emphasizes human agency and relationship—pursues Noah. But Noah misses the cue. Noah takes refuge in Elohim, which is to say, Noah prefers to walk in the realm of pure ideas than in the messy realm of disappointing (and dangerous) people.

Noah is right, but in being right, misses an opportunity to build community with others. He’s the ultimate contrarian, completely unaffected by social approval. Had he walked with Hashem, perhaps he could have changed society instead of run from it. Perhaps he would have felt called not to build an ark, but to ask God how to fix the issues of human corruption causing the flood in the first place.

We can’t blame Noah. In a world gone so toxic he had nowhere to go but back into the cerebral realm where “facts don’t care about your feelings,” but the Torah will suggest that Abraham represents an advance over Noah in being more of an advocate for humanity—even arguing with God on behalf of those who deserve to be destroyed. Both walk with God. Both are described as having integrity. But Abraham walks with Hashem, not Elohim.

If Elohim were unimportant it wouldn’t get the dignity of starting the Torah. The world rests on foundations that are abstract and that are true, independent of our knowledge and feeling about them, says Elohim. Yet by the time we get to Exodus, it is Hashem that opens the Ten Commandments—because questions of how to live and behave well are not the province of Elohim, but Hashem. Innovations in physics don’t guide us to become better people. And ethical conventions and political slogans can lack metaphysical rigor and still be necessary for holding us together as a society. As Leo Strauss comments on the phrase “We hold these truths to be self-evident,” if they were self-evident we wouldn’t need to hold them so.

We can reason our way to Elohim, but not to Hashem. Hashem is revealed. Hashem is felt, intuited, experienced. Because of that, because Hashem is subjective, Hashem is often a source of divisiveness and intolerance. But Elohim alone doesn’t get us very far.

How do we place ourselves at the center of the world while remembering that we aren’t actually its center? How do we emulate the chutzpah of Abraham in arguing with God—in not accepting our reality as a given—without becoming narcissistic like Cain? How do we acknowledge that the foundations of the world are deeper and more enduring than the news cycle—without becoming misanthropic like Noah?

The Torah challenges us to walk on both the absolute and relative planes, and thus to be at home in neither. The question is not whether we believe in God, but whether, in this moment, we will walk with Elohim or Hashem, abstract reasoning or emotional intuition.

If “culture eats strategy for breakfast,” then perhaps we do best to prefer Hashem to Elohim.

Shabbat Shalom,

Zohar Atkins @Etz Hasadeh

Why Is the First Sacrifice Rejected?

Cain offers the first sacrifice in the history of humanity, according to the Bible (see Genesis 4)—and it’s rejected. Why?

Moshe Halbertal says it’s to teach that sacrifice doesn’t always work, it’s not a form of technology or a sure-fire tactic for spiritual manipulation.

What’s your theory?

I agree with Halbertal, but would add, it’s not just the first sacrifice, it’s the first religious ritual in the history of humanity.

Could the Bible be hinting in a radical or unconscious way that God is not the biggest fan of religion?

Deploying HIPAA-Compliant Software

by J. David Giese on June 07, 2018

Medical Imaging software that is used in the clinic must comply with HIPAA. In this article, we list various deployment strategies we have seen along with advantages and disadvantages of each approach. There are likely project-specific considerations that are not included here, but hopefully this list can act as a useful starting place for your project.

Advantages:

  • Better performance in most cases; e.g., for visualization tasks
  • Native apps have better access to the operating system then web-apps; e.g., you can save files, poll a PACS system, etc.
  • No need to manage servers
  • Easier to sell and distribute to individuals

Disadvantages:

  • Users need to install the application
  • Data stored locally; sharing data is more difficult
  • Software updates are more difficult; need to worry more about backwards compatability
  • More difficult to support multiple operating systems
  • Easier for people to pirate software
  • More difficult to gather analytics or image data

2. Web app served locally &#128279

Advantages:

  • Individual users will not need to install software locally
  • A centralized data store enables some features like sharing data between users
  • Fewer concerns about pirating (although we have seen hospitals pirate software
  • Have control over the server hardware; e.g., you can run Linux and depend on a particular GPU model being present

Disadvantages:

  • Software updates are applied by the IT department
  • Need to sell to hospitals
  • Customers need to setup and maintain the local servers
  • Need to support the customer’s IT department as they setup the server, or will need to purchase servers to ship to customers
  • Need to worry about running out of processing capacity on the local server

3. Web app served from cloud &#128279

Advantages:

  • Technically, this is usually the easiest solution
  • Customer will not need to install or update software
  • Have complete control over the server hardware; no worries about pirating
  • Good intellectual property protection for code running in the cloud
  • Easy to collect analytics and usage data
  • Can scale processing capacity to meet demand

Disadvantages:

  • Since you have access to PHI, you will be a Business Associate with your customers; will need to sign BAAs with each customer
  • Need to setup and follow organizational HIPAA policies
  • Need to sign BAAs with your hosting services; hosting costs will be significantly higher
  • Some hospitals do not like using cloud hosted servers; a relatively easy solution is to sell an “enterprise version” using (2)
  • Need pay for cloud hosting costs
  • Data transfer over the internet is slower than in-network; can be an issue when time-sensitivity is a problem

4. Web app served locally + cloud processing server &#128279

Advantages:

  • Many of the advantages of (3) while avoiding many HIPAA issues
  • Lower hosting costs than (3)
  • Within FDA limits, can update processing algorithm independently from local server software
  • Good intellectual property protection for code running in the cloud

Disadvantages:

  • Several of the disadvantages from (2)
  • Need to maintain two sets of server hardware
  • Higher initial development costs than (3)

5. Native app + cloud processing server &#128279

Advantages:

  • Advantages of using a native app
  • Within FDA limits, can update processing algorithm independently from local server software
  • Good intellectual property protection for code running in the cloud
  • Lower hosting costs than (3)
  • Ensures users can’t pirate the software

Disadvantages:

  • All the disadvantages from (1), except easier to collect analytics and prevent pirating

6. Web app + cloud processing server + 3rd party HIPAA platform &#128279

Advantages:

  • Most of the advantages of (3), but without the disadvantages of being a Business Associate
  • The 3rd-Party platform implements several HIPAA requirements; e.g., encryption-at-rest and access controls

Disadvantages:

  • Constrained by the features of the 3rd party platform
  • De-identification + re-identification must occur on the client instead of a local server, which is can be much more difficult
  • Locked into the third party’s platform; would be difficult to switch later; e.g., to provide an enterprise version using (2)
  • The risk that the 3rd party platform will go out of business
  • Higher hosting costs than vanilla HIPAA hosting services

1 It is also possible to deploy a native app if you need the visualization performance but comes with many of the disadvantages of (1)
2 It may be possible to also use a web app in rare cases. However, web apps don’t currently provide a reliable way to store long-term data. One exception may be if you could use the web app to de-identify the data, but you don’t need to store any PHI for longer than a single session
3 Cloud hosting platforms can go out of business too, however, switching is usually easier

The record shop, the taxman and the missing billions

Working from a shed at the end of his garden, one man fought an epic battle against an industry of tax avoidance that cost the country billions.

It was the autumn of 1992, and Richard Allen, an import-export manager at a luxury wallpaper company, was spending the day at a conference held by Her Majesty’s Customs and Excise. He was half-listening to a presentation about how the UK’s ratification of the Maastricht Treaty the following year would change the taxes companies such as his would have to pay on exports. He was bored. The truth was, he was finished with wallpaper.

He was thinking, he told me: “I can’t wait to get out of this, and get back to music!”

In his spare time, Allen had set up his own record label, and it was doing well. He was about to give up his day job, to start selling records on a promising new technology called the World Wide Web.

What Allen didn’t know, as he sat sipping his government-issue coffee and dreaming of a more exciting future in the music industry, was that the dreary presentations on cross-border tax that day contained information which would set the direction of his life for almost two decades, destroying his business and leading him into an international legal battle with his own government.

For more than a decade, the British tax authorities and the Treasury knowingly allowed companies based in the Channel Islands to avoid paying hundreds of millions of pounds a year in tax. Officials did not respond as hundreds of businesses like Allen’s were damaged or destroyed, and they gave demonstrably wrong information to MPs and ministers when asked why the tax law couldn’t be changed. When Richard Allen finally closed the loophole, they didn’t thank him for saving the government more than a quarter of a billion pounds a year. Instead, they took him to the verge of bankruptcy.

***

Arriving at Southampton Airport early one morning in 1998, a businessman and former IBM employee called John Biggs stopped at a line of large, wheeled racks, two metres square and a metre deep. On the racks were “tray, upon tray, upon tray, of flowers”. Biggs asked a nearby security guard if the flowers had just come in from Guernsey. But the guard’s response was mystifying: they were going to Guernsey, he said, and the very same flowers would be coming back tomorrow.

It was a daily occurrence. Five times a week, thousands upon thousands of bunches of flowers were flown to Guernsey before being flown back to Southampton the following day. This would continue for more than decade.

To everyone else at the airport, the racks of flowers that appeared each day meant little more than a pleasant smell, but to John Biggs they stank. Not because he didn’t like flowers, but because he knew why they were there: so that the person selling them could avoid paying tax.

John Biggs was the first person to try to persuade the tax authorities to stop the abuse of Low Value Consignment Relief (LVCR), a provision in EU tax law that allowed member states to forego sales tax on items posted from one country to another. LVCR was intended to reduce administration and prevent perishable items that cost less than £18 being held up in customs. But in 1996, the relief was widened to allow any small item sold in the UK to be posted from the nearby Channel Islands, with no VAT payable, creating an extra 15 or 20 per cent margin for the retailer.

Within a few years, this slight change to the rules created an industry of tax avoidance that allowed a handful of offshore retailers to undercut shops and websites across the UK, silently corroding the British high street until hundreds of shops were forced to close.   

At its peak, the Channel Islands – a pair of tiny, self-governing territories off the coast of Normandy, smaller by population than Ipswich – accounted for three quarters of all non-EU post into the UK. 

Biggs had found out about LVCR when he started selling printer cartridges. He’d struck a deal with Lexmark: he’d sell ink cartridges at an agreed, affordable price, and in return every printer Lexmark shipped in the UK would have a sticker on it that told users to call Biggs’ company for supplies. But it didn’t work. “Peculiarly, we were getting almost no calls,” he remembers.

After months of waiting, he found out why the phone wasn’t ringing: people were ordering their printer cartridges more cheaply from a company that shipped them from the Channel Islands. The offshore company could afford to undercut him by more than ten per cent, and still make more profit, because it wasn’t paying VAT.

Biggs wrote to his local VAT office, then the national office. The LVCR had been controversial from the beginning: a VAT Assurance Review published in the summer of 1997 noted “the concerns of a number of businesses that were complaining that they were being undercut”.

But Biggs was told that there were “administrative advantages” to not collecting VAT on goods sold from the Channel Islands. This wasn’t true; for everything sold from the Channel Islands that cost more than £18, the Post Office already collected the VAT. It would have taken them almost no extra effort to add smaller items. All the government had to do was change the rule, and the tax would come in. But it didn’t.

Biggs found ever more products being sold by circular shipping – not just printer cartridges and flowers, but camera supplies, nutritional supplements, toys, make-up. “Vitamins at tax-free prices,” boasted one ad. And if a customer ordered, say, three printer cartridges for £45, they would arrive in three separate parcels, each – as far as the taxman was concerned – a VAT-free £15 transaction.

The trade was made even more attractive by a deal struck between Guernsey Post and distributors in the UK, which made it cheaper to mail a small package from Guernsey to a UK address than it was to mail it within the mainland.

Biggs kept writing to the tax authorities. He was studying law at the time, and he couldn’t see any reason why HMRC wouldn’t close the loophole. “I had read the directives thoroughly,” he recalls. “I had given them chapter and verse.”

The taxman’s lawyer agreed. In a letter dated 1 September 1998, the VAT office in Liverpool wrote to Biggs that “our solicitor agrees that if relieving mail order consignments […] affects the conditions of competition on the home market, the UK is under a Community obligation not to grant the relief”.

In October 1999, two men from the tax office visited Biggs. He took them through his analysis, and they left saying they would file a report imminently. “The hint was clearly that they were going to recommend strongly, back in the office, that this was fixed,” he told me. But still, nothing happened.

Years later, Biggs submitted a Freedom of Information request for that report; he was told that it was nowhere to be found.

“It’s almost as if there was a conspiracy,” he says, “to come up with things to maintain the status quo”.

Eventually, Biggs realised that fighting LVCR was going to be a “major battle”. He gave up on selling printer cartridges, and refocused his business on other office supplies.

But just as Biggs was getting out of the printer cartridge business, Richard Allen was starting to notice a difference in the price of CDs. And while for Biggs’ business the LCVR loophole was a blow from which his business would recover, for Allen, it would be the end of a dream.

***

For ten years, Richard Allen had the job he’d always wanted: “running a record label, travelling around the world, building up a business that was really successful.”

In the Eighties, while working his day job at the wallpaper company, Allen had written about music for magazines such as Freakbeat and Encyclopedia Psychedelica. In 1991, Allen started distributing tapes through a mail-order catalogue, and a few months later he picked up a band called Porcupine Tree, who would go on to sell out huge venues such as the Royal Albert Hall and Radio City Music Hall. He began putting their records out under his own label, Delerium.  

A fan whose love of “art music” borders on the obsessive, Allen has been collecting records since he was a teenager. When he’s not listening to or researching music, he repairs and builds gramophones. He tells me his story from a “shed” at the end of his garden, the walls of which are lined with records.

Allen began selling music online in 1994, the same year that Jeff Bezos gave up his job on Wall Street, borrowed $300,000 from his parents and started building his own website (Amazon.com was not launched until 1995, however). Allen’s website was called the Freak Emporium.

The Freak Emporium sold music that was deliberately off the mainstream. It was the place to go for Brazilian 1960s pop, 1970s German electronica, acid folk and psychedelic rock. It made those esoteric genres accessible by employing music writers to produce detailed, interesting articles about them. It was the online equivalent of a proper record shop, staffed by people who listened to everything and knew what to recommend. (It’s worth noting that Spotify, launched 15 years later, has used a similar offer – introducing people to music, often obscure, that they didn’t know they liked – to build a business that is today valued at around $20bn.)

By the turn of the millennium, the Freak Emporium had ten full-time staff and the turnover of a large city record store (but without the rent). About half of its sales were in the UK, but it also sold CDs and vinyl to the US and Europe.

Then, in 2003, one of Allen’s employees asked if he could get some CDs he’d bought online delivered to the office. The discs, from a new website called Play.com, turned up in 15 individual packages. Each held a single disc. Allen couldn’t understand why the retailer was shelling out for the extra postage and packaging, but his colleague explained. “It’s brilliant,” he told Allen. “You don’t pay any VAT! Stuff the government!”

Allen was immediately concerned, not for the government, but for himself. “That will put us out of business,” he warned.

A few weeks later, Allen found out how Play.com was avoiding VAT. At a trade fair for mail-order businesses, a well-attended stall for a company called DMS Jersey offered “offshore fulfilment”. An employee told Allen how it worked: he would ship his records to Jersey, and DMS would post on records when customers bought them, and invoice the customers. Because they were sold from the Channel Islands, they’d not be subject to VAT. He’d be 20 per cent up on every disc. 

Allen sent a test batch of records to Jersey. It was easy, but it came with a snag: he’d have to set up an offshore company – one he wasn’t allowed to own or run. He’d be a shareholder, while Jersey-based “nominated directors” officially ran his company. He would be legally prohibited from making business decisions – but, he was told, they “could always talk about it on the phone”.

This was, at best, a grey area. Allen didn’t want to take his company offshore and become a shadow director. He wanted to sell Porcupine Tree records to geeky fans. And he was annoyed by the sales calls he was now getting on a regular basis, telling him that this was what everyone else was doing, and it was the only way to stay in the game.

Unfortunately, there was some truth in this. In early 2004, other, much larger retailers – including Tesco and Amazon – complained to the Treasury that the LVCR loophole was affecting their businesses. With no action forthcoming from the government, they followed the most obvious course of action. Within a year, Boots, Asda, WHSmith, Tesco and Amazon had set up their own fulfilment centres in the Channel Islands. By 2005, Play.com’s turnover had grown to £280m a year. 

On 2 July 2005, a spokesperson for HMV, the then UK’s biggest chain of records shops, told the BBC that while the company had “resisted” moving its online sales operations to the Channel Islands “for as long as we could”, going offshore was the only way “to compete on the same level playing field”.

But this “level” playing field was one from which every high-street shop in the UK, and every VAT-paying online shop, had been locked out. It was anything but level. Only companies with the money and connections to set up in an offshore tax haven could now compete. Workers in HMV stores on the high street quietly removed signs that referenced the company’s website because the online operation, based offshore, was undercutting its own shops.

The results were devastating: over the next ten years, more than 1,600 record shops and online stores went under. One of them would be Richard Allen’s. 

***

After the HMV announcement, Allen knew he was on borrowed time. HMV and play.com, which had previously stuck to chart music, were beginning to list everything – even the niche art-music offered by the Freak Emporium. So he redoubled his efforts against the LVCR loophole. He wrote to his MP, the paymaster general, the shadow paymaster general. Eventually, he secured a meeting with senior officials at the Treasury.

On 8 March 2006, Allen arrived at the Treasury with a dossier of his own painstaking research. He had placed test orders at several large retailers, including HMV, Amazon, Tesco and Play.com. Each order was for an item he sold at the Freak Emporium, so he could confirm the wholesale price; each showed that it was impossible to make a profit against a rival who was not paying sales tax. He even had a distributor who could prove to the government that offshore companies were using “circular shipping” – sending products to the islands and back – rather than selling stock they actually kept in their warehouses.

Like John Biggs before him, Allen imagined that the abuse of the system was so obvious that it would be immediately curtailed. But to his amazement, a senior indirect tax adviser at the Treasury responded by telling Allen that he didn’t see this as an issue, because the trend was that people were downloading music. At the time, 96 per cent of music was sold on physical media. CDs continue to outsell downloads (which have been largely replaced by streaming) even today – and technology has yet to provide a means to download printer cartridges, cut flowers, cosmetics, toys or multivitamins.

Two weeks later, the spring budget acknowledged that the government was “aware that this provision [LVCR] is being exploited”, and that the loophole was costing the country, at a conservative estimate, £85m a year in tax. Allen and other UK businesspeople put the figure at between £200m and £300m.

Allen kept fighting the LVCR, joining other record shop owners in petitioning the Treasury and HMRC for change, reiterating that the great cultural institution of British record shops was being demolished, not by the internet, but by the authorities’ failure to act.

The officials’ response was to blame the EU. To remove the LVCR from goods coming from the Channel Islands, they claimed, would require a wholesale change in European law.

For a couple more years, Allen kept his website going by selling the valuable intellectual property rights he’d built up over 15 years of running a record label. But the money ran out, the loophole stayed open, and on 6 December 2007 the Freak Emporium closed forever. Musicians and fans mourned the website’s passing, as did Stuart Maconie on his BBC 6 Music show, the Freak Zone

Allen had lost his business, his job, and the assets he’d built up over 15 years of effort and determination. The stress left him unable to work for three months. It was, he says, as if he had been “robbed at gunpoint by an invisible entity”.

But something set Allen apart from the hundreds of other independent retailers that were forced out of business that year by offshore competition. Just before he wound up his business, he took advice from a barrister, and together they sent a letter of complaint to the people that officials in the UK had claimed were ultimately responsible: the European Commission. 

***

The phone call came the following year – not from Brussels, but from Holland & Barrett. The health food retailer had been one of many companies to complain about LVCR over the years, and they’d received a letter from the European Commission that was addressed, for some reason, to Richard Allen. The EU itself – the very authority that officials had blamed for years for the Channel Islands loophole – were offering to take forward his case for closing it.

When the Commission wrote to the UK authorities, they received a reply that was demonstrably untrue. The same officials whom Allen had provided with detailed evidence of “circular shipping” told the EU that this simply wasn’t happening. The Treasury claimed there was no circular shipping, that retailers in the Channel Islands maintained warehouses full of the stock they were going to sell, and that there were only two online retailers in the islands anyway.

Allen showed the EU that this was a fiction. He showed them how he’d tracked items ordered on HMV’s website leaving a distributor in the UK, travelling to Jersey, and coming straight back as an import. He knew, at this point, that he had HMRC “by the balls”. So he called them. After he mentioned that his next call would be to a national newspaper, he was put through to the very top of the organisation.

“Sometimes,” he was told, “things get missed”.

But documents seen by the New Statesman show that, years before the loophole was closed, HMRC was well aware of the scale of the VAT abuse that was under way. An internal report estimated that in 2008 alone, more than 60 million items under the value of £18 were posted from the Channel Islands to the UK. 

HMRC again asked Allen to meet with its officials in London, this time under clandestine conditions: he was told that the location was a secret, and that he should bring his passport. Over the course of two days, Allen and a distributor walked the officials, once more, through the clear abuse of the VAT system that was happening daily.

In 2010, after the general election, one very senior official told Allen that the new coalition government would bring a change of policy. Was it the policy of ministers, then, to allow this industry of tax avoidance? And if so, why?

Stephen Timms, the MP for East Ham, remembers being contacted by Allen when he was the financial secretary to the Treasury under Gordon Brown. “He was presented to me as a bit of an eccentric, a bit off the wall,” he told me, “but everything he told me subsequently turned out to be completely correct”.

Timms says he looked into LVCR “a number of times, and got submissions from officials about it a number of times – and was given clear advice that there was nothing that could be done  that this was simply a feature of EU rules”.

But the legal advice given to the VAT office at least as far back as 1998 had been that the UK could close the loophole. By failing to correct this mistake, Allen claims officials took things into their own hands, effectively “creating and maintaining policy that didn’t go anywhere near a minister”.

HMRC claims to this day that LVCR was government policy. In a letter sent this February by Jim Harra, chief executive of HMRC, to Cheryl Gillan MP, Harra continues to claim that “when a government decides on a policy [my emphasis], there may be people who are unhappy with it”.

But Timms is adamant: “It certainly wasn’t my intention, and I don’t think it was any other minister’s intention, that we should support the Channel Islands in this way.”

Having claimed that LVCR was imposed on Britain by the EU, civil servants had put themselves in a difficult position. Allen’s case confronted them with the fact that the UK was actually failing to uphold competition law by keeping the loophole open, because doing so gave offshore retailers an unfair advantage. For almost 15 years, the complaints of dying British business had fallen on deaf ears, but the threat of infraction proceedings in the European Court was another matter.

In the spring budget of 2011, George Osborne announced that the government would “take action” against LVCR. Six months later, David Gauke announced that the loophole would be closed: LVCR would be removed from all mail-order goods coming into the UK from the Channel Islands. Eight years after he had first noticed a VAT-free CD, Richard Allen had finally closed the loophole that had killed his business.

***

After he got the news, Allen wrote to Osborne, saying, in not so many words: “I’ve lost my business, I’ve had years of hell. I’ve shut this down, I’ve saved [the UK] huge amounts of money. Is anyone going to reward me, or compensate me for my business?”

Osborne asked HMRC to contact Allen, which they did, but not to thank him. In a short response, an official warned Allen that HMRC would “vigorously resist” any attempt to claim compensation or apply for a reward. Despite the billions that Allen had saved the Exchequer, Allen had made no friends in the tax office.

Perhaps Allen should have left it at that. One source I spoke to told me they admired Allen’s perseverance, but wouldn’t have followed the same path: “never take on the government, especially the taxman”. But that’s what Allen did. Annoyed by the dismissive response to his appeal for compensation, he launched his own action against HMRC, claiming that the tax authorities had failed in their obligation to protect him from the harm caused by LVCR. It was a relatively simple claim – at the hearing, the judge considered just one point – but it dragged on for years.

Eventually, in March 2019, Allen was told that he had lost his claim. He had, he says, “had enough”. But the taxman was not finished with him.

In June of this year, HMRC presented Allen with a bill. In it, the authorities demanded £72,000 in legal costs and £53,000 for the cost of fulfilling a Freedom of Information request he had once submitted, for a total of £125,000. He faced bankruptcy.   

***

Most people, quite understandably, find it difficult to care about other people’s tax. The £300m a year of lost revenue might not sound like much of a loss for a government. Financially, it’s equivalent to burning a new city hospital to the ground every six months, but there are no pictures that directly sum up what missing tax does – only a lack of them. A lack of libraries, teaching assistants, hospitals, free school meals. Often, one of these things will itself become a story, but the complex processes that led to the money not being there are too detailed to explain in a news story.

Were it not for people like Richard Allen, we would not even know that the money was missing.

***

John Biggs has continued to sell office supplies, minus the printer cartridges.

Six months after the loophole closed, Simon Perree and Richard Goulding, the founders of Play.com, wound up their business, selling what remained of it for £25m. That year’s Sunday Times Rich List estimated their net worth at £160m each.

Other businesses built on LVCR have continued to flourish. Last week, the Hut Group – which was established to provide VAT-free “fulfilment services” from the Channel Islands, and whose founder, Matt Moulding, told the Guardian in 2009: “if you aren’t offshore you couldn’t possibly compete” – plans to float on the stock market tomorrow (September 16). If all goes to plan, the company will have a market capitalisation of around £4.5bn.

Britain’s crown dependencies remain, for many, a convenient grey area in which to place companies, assets and responsibilities. Last month, Global Witness reported that the world’s rich routinely use the Isle of Man to avoid paying VAT on their private jets, and put the cost of this practice so far at around £1bn.

From 2012 to 2020, the number of record shops in the UK – which had fallen precipitously as LVCR priced them off the high street – began to rise again.  

After an article appeared in the Times about the £125,000 demand it had made of Allen, HMRC reduced Richard Allen’s bill to £10,000.

Allen himself has continued to fight VAT abuse, because it has only got worse. For several years he has fought against the untaxed items that have poured in, in even greater numbers than they did from the Channel Islands, from China, via online marketplaces such as eBay and Amazon. This trade was thought to be costing the UK as much as £1.5bn a year – more than double the national budget for libraries – in unpaid tax. A single Chinese company owes the UK more than £6m in unpaid VAT; it will never be paid.

But HMRC has been faster to act, this time. Last month, the government announced changes to make sales tax payable on all non-EU goods sold on online marketplaces from the beginning of next year. A lot of small items on the internet will get slightly more expensive, the government will have slightly more money, and retailers in the UK will be better able to compete against imports. The country will be, in ways that most people may not notice or credit, better off, thanks to a man in his shed who just wouldn’t give up.

Server-side rendering no-reload JavaScript framework

It’s not you, it’s us

We’re breaking up with JavaScript frontends

Henning Koch, makandra GmbH
@triskweline

Give it 10 minutes.

Context

  • makandra is a Ruby on Rails consultancy
  • We start a new application every 3 months
  • We maintain apps for a really long time
    • 50+ apps in maintenance
    • Oldest app is from 2007
  • Will we be able to do this for another 10 years?

Tweet from 2025

Complexity

Based on chart by @ryanstout

Complexity in 2005

Authorization

Routing

Models

Controllers

Views

Dependencies

Server

Based on chart by @ryanstout

Complexity in 2008

Authorization

Routing

Models

Controllers

Views

Dependencies

Server

RandomJS

Dependencies

Client

Based on chart by @ryanstout

Complexity in 2009

API

Authorization

Routing

Models

Controllers

Views

Dependencies

Server

RandomJS

Dependencies

Client

Based on chart by @ryanstout

Complexity in 2011

Asset packing

API

Authorization

Routing

Models

Controllers

Views

Dependencies

Server

RandomJS

Dependencies

Client

Based on chart by @ryanstout

Complexity in 2013

Asset packing

API

Authorization

Routing

Models

Controllers

Views

Dependencies

Server

Models / API client

Controllers

Views

Dependencies

Client

Based on chart by @ryanstout

Complexity in 2014

Asset packing

API

Authorization

Routing

Models

Controllers

Views

Dependencies

Server

Authorization

Routing

Models / API client

Controllers

Views

Dependencies

Client

Based on chart by @ryanstout

Complexity in 2015

Prerendering

Asset packing

API

Authorization

Routing

Models

Controllers

Views

Dependencies

Server

Virtual DOM

Authorization

Routing

Models / API client

Controllers

Views

Dependencies

Client

Based on chart by @ryanstout

A look back at the 7 AngularJS projects that we wrote from 2013-2016:

1

2

3

4

5

6

7

In hindsight, these are the projects that should have been a SPA:

1

2

3

4

5

6

7

YMMV.

Learnings from 3 years of SPAs

  1. SPAs are a good fit for a certain class of UI.
    For us that class is the exception, not the default.
  2. There’s a trade-off between UI fidelity and code complexity.
  3. We think we can fix most of the problems with server-side apps
    and find a new sweet spot in that trade-off.

What server-side apps

do well

  1. Wide choice of great and mature languages
  2. Low complexity stack
  3. Synchronous data access
  4. Time to first render
  5. Works on low-end devices

What server-side apps

don’t do well

  1. Slow interaction feedback
  2. Page loads destroy transient state

    (scroll positions, unsaved form values, focus)

  3. Layered interactions are hard

    (modals, drop-downs, drawers)

  4. Animation is complicated
  5. Complex forms

Demo of server-side app issues

Link to demo app
(press Start Classic on first page)

Things to try and observe:

  • Navigate between cards in the left pane

    Scroll positions get lost in both panes

  • Open the second page (“More cards” link at the bottom of the left pane)

    Card in the right pane gets lost

  • Edit a card, change the title, then change the pattern

    Unsaved form content is gone when returning from the pattern selection

How to fix server-side apps?

A thought experiment

Imagine HTML6 was all about server-side apps

What features would be in that spec?
Partial page updates?
Animated transitions?
Layered interactions?

We can polyfill all of that!
Because it’s 2016 and JavaScript is now fast.

Demo of Unpoly-enhanced app

Link to demo app
(press Start Enhanced on first page)

Things to try and observe:

  1. Navigate between cards, open and cancel the form

    Page transitions are animated

  2. Navigate between cards in the left pane

    Scroll positions are kept in both panes

  3. Open the second page (“More cards” link at the bottom of the left pane)

    New page slides in smoothly

    Card in the right pane is kept

  4. Edit a card, change the title, then change the pattern

    Pattern selection happens in a modal dialog,
    preserving unsaved form values

  5. Inspect links and see attributes with up-* prefix

Classic page flow

Server renders full pages on every request.
Any state that’s not in the URL gets lost when switching pages.

Unpoly page flow

Server still renders full pages, but we only use fragments.
This solves most of our problems with transient state being destroyed.

Layers

Document

http://app/list

Modal

http://app/new

Unpoly apps may stack up to three HTML pages on top of each other

Each layer has its own URL and can navigate without changing the others

Use this to keep context during interactions

Layers

<a href="/list" up-target=".main">Replace fragment</a>

<a href="/new" up-modal=".main">Open fragment in dialog</a>

<a href="/menu" up-popup=".main">Open fragment in dropdown</a>

Links in a layer prefer to update fragments within the layer

Changing a fragment behind the layer will close the layer

Navigation

  • All fragment updates change the browser URL by default.
  • Back/Forward buttons work as expected.

    Even scroll positions are restored.

  • Linking to a fragment will scroll the viewport to reveal the fragment.

    Unpoly is aware of fixed navigation bars and will scroll further/less.

  • Links to the current URL get an .up-current class automatically.

But I have this really custom JavaScript / jQuery library / behavior that I need to integrate

Don’t worry, we actually allow for massive customization:

  • Pairing JavaScript snippets with HTML elements
  • Integrating libraries (WYSIWYG editor, jQuery plugins, …)
  • Passing structured data to JavaScript snippets
  • Reuse existing Unpoly functionality from your own code
  • Invent your own UJS syntax
  • Configure defaults

Activating JS snippets

Every app needs a way to pair JavaScript snippets
with certain HTML elements:

  • A textarea.wysiwyg should activate Redactor on load
  • An input[type=search] field should automatically request new results
    when the user types something
  • A button.toggle-all should toggle all checkboxes when clicked
  • A .map should render a map via the Google Maps JS API

Activating JS snippets

Random.js

<div class="map"></span>





document.addEventListener('DOMContentLoaded', function(event) {
  document.querySelectorAll('.map').forEach(function(element) {
    new google.maps.Map(element)
  })
})

This is what you see in JavaScript tutorials.
HTML fragments loaded via AJAX don’t get Javascriptified.

Activating JS snippets

Unpoly

<div class="map"></span>





up.compiler('.map', function(element) {
  new google.maps.Map(element)
})



Unpoly automatically compiles all fragments that it inserts or updates.
On the first page load, the entire document is compiled.

Getting data into your JS

Random.js

<div class="map"></div>

<script type="text/javascript">
  initMap(document.querySelector('.map'), { lat: 48.75, lng: 11.45 })
</script>

function initMap(element, center) {
  new google.maps.Map(element, { center: center })
})



 
 

Getting data into your JS

Unpoly

<div class="map" up-data="{ lat: 48.75, lng: 11.45 }"</div>
 
 
 
 

up.compiler('.map', function(element, center) {
  new google.maps.Map(element, center: center)
})



The [up-data] attribute value is parsed as JSON and passed
to your compiler as a JavaScript object.

Symmetry to CSS components

If you are using some CSS component architecture like BEM you will find a nice symmetry between your CSS components and Unpoly compilers:

app/assets/stylesheets/blocks
  carousel.css
  head.css
  map.css
  screenshot.css
  tail.css
app/assets/javascripts/compilers
  carousel.js
  head.js
  map.js
  screenshot.js


By sticking to this pattern you will always know where to find the CSS / JS that affects your <div class='map'>...</div> element.

Response times

Reponse times

How fast are SPAs?

We want to approximate the snappiness of a AngularJS SPA
(since we’re happy with those). How fast is an SPA?

  • Most of our AngularJS interactions are making API requests
    and are thus bound by server speed.
  • Rendering to JSON takes time, too.

    60-300ms for index views in non-trivial app

  • Client-side rendering takes time, too.

  • Users do like the instantaneous feedback

    (even if it just shows to an empty screen that is then populated over the wire)

Response times

Unpoly’s approach

  • Provide instantaneous feedback to all user input so interactions
    appear faster than they really are
  • Pick all the low-hanging fruit that’s wasting 100s of milliseconds
  • Free up enough time budget that we can afford to render
    full pages on the server
  • Use best practices for server performance
  • Provide options if all that is not enough

What you get out of the box

  • We no longer parse and execute CSS, JavaScript and build the DOM on every request

    makandra deck on Cards (140 ms), AMC frontend (360 ms)

  • Clicked links/forms get an .up-active class while loading

    Get into a habit of styling .up-active for instantaneous feedback
    Use throttling and Chrome’s network tab

  • Links with an [up-instant] attribute load on mousedown instead of click
    Saves ~70 ms with a mouse (test yourself)
    Saves ~300 ms on unoptimized sites with touch device
    Your Linux/Windows apps do that, too!
  • Links with [up-preload] attribute preload destination while hovering
  • Responses to GET requests are cached for 5 minutes

    Any non-GET request clears the entire cache

Feel the response time of an Unpoly app by navigating between cards on
makandracards.com/makandra.

Paste this into the console to visualize mousedown events:

function showEvent() {
  var $div = $('<div>mousedown!</div>');
  $div.css({ backgroundColor: 'blue', color: 'white', fontSize: '20px', padding: '20px', position: 'fixed', left: '0', top: '0', zIndex: '99999999' });
  $div.appendTo(document.body);
  $div.fadeOut(500, function() { $div.remove() });
};
document.addEventListener('mousedown',  showEvent, { capture: true });

How you can optimize further

  • Server-side fragment caching
  • Tailor responses for the requested selector
  • Spinners for long-running requests
  • We can still implement client-side interactions
  • Go nuclear with two-way bindings

Tailor responses for the requested selector

<html>
  <body>

    <% if up.target?('.side') %>
      <div class='side'>
        ...
      </div>
    <% end %>

    <% if up.target?('.main') %>
      <div class='main'>
        ...
      </div>
    <% end %>

  </body>
</html>

up.target?(css) looks at the X-Up-Target HTTP header
that Unpoly sends with every request.

Spinners

For the occasional long-running request, you can configure this globally:

<div class="spinner">Please wait!</div>

up.compiler('.spinner', function(element) {
  function show() { element.style.display = 'block' }
  function hide() { element.style.display = 'none' }
  up.on('up:proxy:slow', show)
  up.on('up:proxy:recover', hide)
  hide()
});

The up:proxy:slow event is triggered after 300 ms (configurable).

We can still implement interactions on the client

<div class='greeter'>
  <input class='greeter--input'>
  Hello <span class='greeter--name'><span>!
</div>

up.compiler('.greeter', function(element) {
  let input = element.querySelector('.greeter--input')
  let name = element.querySelector('.greeter--name')
  input.addEventListener('input', function() {
    name.textContent = input.value
  })
})

Going nuclear

Two-way bindings

With Rivets.js (6 KB):

<div class='template' up-data='{ "name": "Arne" }'>
  <input rv-value='name'>
  Hello { name }!
</div>

up.compiler('.template', function(element, data) {
  let view = rivets.bind(element, data)
  return function() { view.unbind } // clean up
})

Composability

Homegrown UJS syntax usually lacks composability.
Changing that was a major design goal for Unpoly.

Composability

JavaScript API

Unpoly’s default UJS behavior is a small layer around a JS API.
You can use this JS API to call Unpoly from your own code:

Unobtrusive

<a href="full.html" up-target=".story">Continue</a>

Programmatic

up.replace('.story', 'full.html')

Composability

Events

$(document).on('up:modal:open', function(event) {
  if (dontLikeModals()) {
    event.preventDefault()
  }
})

Composability

Invent your own UJS syntax

HTML

<a menu-link href="/details">Show more</span>

JavaScript

up.compiler('[menu-link]', function(element) {
  element.addEventListener('click', function(event) {
    event.preventDefault();
    up.popup.attach(element, {
      target: '.menu',
      position: 'bottom-left',
      animation: 'roll-down'
    });
  });
});

The JavaScript API is extensive

View full documentation of JS functions,
events and UJS selectors on unpoly.com.

Animation

When a new element enters the DOM, you can animate the appearance:

<a href="/settings" up-modal=".menu" up-animation="fade-in">
  Open settings
</a>


When you swap an element, you can transition between the old and new states:

<a href="/users" up-target=".list" up-transition="cross-fade">
  Show users
</a>

Animations are implemented via CSS transforms on a 3D-accelerated layer.

Forms

Painful things with forms:

  • Submitting a form via AJAX
  • File uploads via AJAX
  • Detecting redirects of an AJAX form submission
  • Dealing with validation errors of an AJAX form submission
  • Server-side validations without a page load
  • Dependencies between fields
  • Submitting a form within a modal while keeping the modal open

These are all solved by Unpoly.

Ajax forms

A form with [up-target] will be submitted via AJAX and leave surrounding elements intact:

<form method="post" action="/users" up-target=".main">
  ...
</form>

A successful submission (status 200) will update .main

A failed submission (non-200 status) will update the form itself
(Or use an [up-fail-target] attribute)

Return non-200 status
when validations fail

class UsersController < ApplicationController

  def create
    user_params = params[:user].permit(:email, :password)
    @user = User.new(user_params)
    if @user.save?
      sign_in @user
    else
      render 'form', status: :bad_request
    end
  end

end

Forms within a modal

To stay within the modal, target a selector within the modal:

<form up-target=".selector-within-modal">
  ...
</form>

To close the modal, target a selector behind the modal:

<form up-target=".selector-behind-modal">
  ...
</form>

Server-side validations

without a page load

<form action="/users">

  <fieldset>
    <label>E-mail</label>
    <input type="text" name="email" up-validate>
  </label>

  <fieldset>
    <label>Password</label>
    <input type="password" name="password">
  </fieldset>

  <button type="submit">Register</button>

</form>

Server-side validations

without a page load

<form action="/users">

  <fieldset>                                      <label>E-mail</label>                         <input type="text" name="email" up-validate></label>                                      

  <fieldset>
    <label>Password</label>
    <input type="password" name="password">
  </fieldset>

  <button type="submit">Register</button>

</form>

Server-side validations

without a page load

<form action="/users">

  <fieldset class="has-error">                                        <label>E-mail has already been taken!</label>                     <input type="text" name="email" up-validate value="foo@bar.com"></label>                                                          

  <fieldset>
    <label>Password</label>
    <input type="password" name="password">
  </fieldset>

  <button type="submit">Register</button>

</form>

Server-side validations

without a page load

class UsersController < ApplicationController

  def create
    @user = User.new(user_params)
    if @user.save
      sign_in @user
    else
      render 'form', status: :bad_request
    end
  end

end




Server-side validations

without a page load

class UsersController < ApplicationController

  def create
    @user = User.new(user_params)
    if up.validate?  @user.valid?  # run validations, but don't save to DB
      render 'form' # render form with error messages
    elsif @user.save?
      sign_in @user
    else
      render 'form', status: :bad_request
    end
  end

end

Dependent fields

Simple cases

Use [up-switch] to show or hide existing elements based on a control value:

<select name="advancedness" up-switch=".target">
  <option value="basic">Basic parts</option>
  <option value="advanced">Advanced parts</option>
</select>

<div class="target" up-show-for="basic">
  only shown for advancedness = basic
</div>

<div class="target" up-hide-for="basic">
  hidden for advancedness = basic
</div>

Dependent fields

Harder cases

Use [up-validate] to update a field from the server when a control value changes.

In the example below we load a list of employees when the user selects a department:

<form action="/contracts">
  <select name="department" up-validate="[name=employee]">...</select>
  <select name="employee">...</select>
</form>


What server-side apps

don’t do well

  1. Slow interaction feedback
  2. Page loads destroy transient state

    (scroll positions, unsaved form values, focus)

  3. Layered interactions are hard

    (modals, drop-downs, drawers)

  4. Animation is complicated
  5. Complex forms

What server-side apps

can actually be okay at

  1. Slow interaction feedback
  2. Page loads destroy transient state

    (scroll positions, unsaved form values, focus)

  3. Layered interactions are hard

    (modals, drop-downs, drawers)

  4. Animation is complicated
  5. Complex forms

Getting started

  • Check out unpoly.com to get an overview of what’s included
  • npm install unpoly --save or gem 'unpoly-rails' (other methods)
  • Replace half your JavaScript with [up-target] attributes
  • Convert remaining JavaScripts into up.compiler()

henning.koch@makandra.de
@triskweline

Additional slides

Update a page fragment

without JavaScript

Run example on unpoly.com

short.html

<div class="story">

  <p>Story summary</p>

  <a href="full.html" up-target=".story">
    Read full story
  </a>

</div>

<p>This text won't change</p>

full.html

<div class="story">

  <h1>Full story</h1>

  <p>Lorem ipsum dolor sit amet.</p>

  <a href="short.html" up-target=".story">
    Read summary
  </a>

</div>
  • Unpoly requests full.html via AJAX
  • Server renders a full HTML page
  • Unpoly extracts the fragment that matches .story
  • Unpoly swaps the old and new fragment
  • Unpoly changes the browser URL to http://host/full.html

Open fragment in modal dialog

without JavaScript

Run example on unpoly.com

<div class="story">

  <p>Story summary</p>

  <a href="full.html" up-modal=".story">
    Read full story
  </a>

</div>

  • Unpoly requests full.html via AJAX
  • Server renders a full HTML page
  • Unpoly extracts the fragment that matches .story
  • Unpoly displays the new fragment in a <div class="up-modal">
  • Unpoly changes the browser URL to http://host/full.html

Open fragment in a popup menu

without JavaScript

Run example on unpoly.com

<div class="story">

  <p>Story summary</p>

  <a href="full.html" up-popup=".story">
    Read full story
  </a>

</div>

  • Unpoly requests full.html via AJAX
  • Server renders a full HTML page
  • Unpoly extracts the fragment that matches .story
  • Unpoly displays the new fragment in a <div class="up-popup">
  • Unpoly changes the browser URL to http://host/full.html

All Async actions return promises

up.replace('.story', 'full.html').then(function() {
  // Fragments were loaded and swapped
});

up.morph('.old', '.new', 'cross-fade').then(function() {
  // Transition has completed
});

Curriculum lesson on promises

Appending instead of replacing

<div class="tasks">
  <li>Wash car</li>
  <li>Purchase supplies</li>
  <li>Fix tent</li>
</ul>

<a class="next-page" href="/tasks?page=2"
  up-target=".tasks:after, .next-page">Next page</a>

This appends the second page to the task list and replaces the “Next page” button with a link to page 3.

Persisting elements

<div class="story">

  <video up-keep src="movie.mp4"></video>

  <p>Story summary</p>

  <a href="full.html" up-target=".story">
    Read full story
  </a>

</div>




Updating persisted elements

<div class="map" up-data="[
  { lat: 48.36, lng: 10.99 },
  { lat: 48.75, lng: 11.45 }
]"></div>

<form method="post" action="/pins" up-target=".map">
  Lat: <input name="lat">
  Lng: <input name="lng">
  <button>Add pin</button>
</form>

up.compiler('.map', function(element, pins) {
  var map = new google.maps.Map(element)
  pins.forEach(function(pin) {
    var position = new google.maps.LatLng(pin.lat, pin.lng);
    new google.maps.Marker({
      position: position,
      map: map
    })
})

<div class="map" up-data="<%= @pins.to_json %>"></div>
 
 
 
 
<form method="post" action="/pins" up-target=".map">
  Lat: <input name="lat">
  Lng: <input name="lng">
  <button>Add pin</button>
</form>

up.compiler('.map', function(element, pins) {
  var map = new google.maps.Map(element);
  pins.forEach(function(pin) {
    var position = new google.maps.LatLng(pin.lat, pin.lng)
    new google.maps.Marker({
      position: position,
      map: map
    })
})

<div class="map" up-data="<%= @pins.to_json %>"></div>




<%= form_for Pin.new, html: { 'up-target' => '.map' } do |form| %>
  Lat: <%= form.text_field :lat %>
  Lng: <%= form.text_field :lng %>
  <%= form.submit 'Add pin' %>
<% end %>

up.compiler('.map', function(element, pins) {
  var map = new google.maps.Map(element)
  pins.forEach(function(pin) {
    var position = new google.maps.LatLng(pin.lat, pin.lng)
    new google.maps.Marker({
      position: position,
      map: map
    })
})

<div class="map" up-data="<%= @pins.to_json %>"></div>




<%= form_for Pin.new, html: { 'up-target' => '.map' } do |form| %>
  Lat: <%= form.text_field :lat %>
  Lng: <%= form.text_field :lng %>
  <%= form.submit 'Add pin' %>
<% end %>

up.compiler('.map', function(element, initialPins) {
  var map = new google.maps.Map(element)
  function renderPins(pins) { ... }
  renderPins(initialPins)
});
 
 
 
 

<div class="map" up-data="<%= @pins.to_json %>" up-keep></div>




<%= form_for Pin.new, html: { 'up-target' => '.map' } do |form| %>
  Lat: <%= form.text_field :lat %>
  Lng: <%= form.text_field :lng %>
  <%= form.submit 'Add pin' %>
<% end %>

up.compiler('.map', function($element, initialPins) {
  var map = new google.maps.Map($element);
  function renderPins(pins) { ... }
  renderPins(initialPins)
  element.addEventListener('up:fragment:keep', function(event) {  renderPins(event.newData)                                   })                                                            
})
 



Find-as-you-type search

<form action="/users" up-target=".list" up-autosubmit>
  <input type="search" name="query" />
</form>

<div class="list">
  <% @users.each do |user| %>
    <%= link_to user.email, user >
  <% end %>
</div>




Memory leaks

  • A regular Random.js app is full of memory leaks.
  • We just don’t notice because the JavaScript VM is reset between page loads!
  • We can’t have memory leaks in persistent JavaScript VMs

    like Angular.js, Unpoly, Turbolinks

  • Background: one, two.

Random.js

HTML

<clock></clock>

JavaScript

$.unobtrusive(function() {
  $(this).find('clock', function() {

    var $clock = $(this);

    function updateClock() {
      var now = new Date();
      $clock.html(now.toString());
    }

    setInterval(updateClock, 1000);

  });
});

Random.js: Leaky

HTML

<clock></clock>

JavaScript

$.unobtrusive(function() {
  $(this).find('clock', function() {

    var $clock = $(this);

    function updateClock() {
      var now = new Date();
      $clock.html(now.toString());
    }

    setInterval(updateClock, 1000); // creates one interval per <clock>!

  });
});

Unpoly compiler: Still leaky

HTML

<clock></clock>

JavaScript

up.compiler('clock', function(clock) {

  function updateClock() {
    var now = new Date()
    clock.textContent = now.toString()
  }

  setInterval(updateClock, 1000) // this still leaks memory!
});
 
 
 
 
 

Unpoly compiler: Clean

HTML

<clock></clock>

JavaScript

up.compiler('clock', function(clock) {

  function updateClock() {
    var now = new Date()
    clock.textContent = now.toString()
  }

  var interval = setInterval(updateClock, 1000)

  return function() { clearInterval(interval) } // clean up when destroyed
})
 
 
 

Unpoly compiler: Leaky

up.compiler('textarea.wysiwyg', function(textarea) {
  $R(textarea)
})
 
 
 

Unpoly compiler: Clean

up.compiler('textarea.wysiwyg', function(textarea) {
  $R(textarea)
  return function() {
    $R(textarea, 'destroy')
  }
})


Why transitions are hard

Why transitions are hard

Ghosting

Old

position: static
display: hidden

New

position: static
opacity: 0

Old (ghost)

position: absolute

New (ghost)

position: absolute

Without ghosting

With ghosting

Predefined animations

fade-in
fade-out
move-to-top
move-from-bottom
move-to-bottom
move-from-top
move-to-left
move-from-right
move-to-right
move-from-left

Predefined transitions

cross-fade
move-top
move-bottom
move-left
move-right

Custom animations

up.animation('zoom-in', function(element, options) {

  var firstFrame = {
    opacity: 0,
    transform: 'scale(0.5)'
  }

  var lastFrame = {
    opacity: 1,
    transform: 'scale(1)'
  }

  up.element.setStyle(element, firstFrame)
  return up.animate(element, lastFrame, options)

})

Toggle all: On load

<span class="toggle-all">Toggle all</span>

document.addEventListener('DOMContentLoaded', function() {
  document.querySelectorAll('.toggle-all').forEach(function(element) {
    element.addEventListener('click', function() {
      let form = element.closest('form');
      let checkboxes = form.querySelectorAll('input[type=checkox]');
      let someUnchecked = !!checkboxes.find(function(cb) { !cb.checked }
      checkboxes.forEach(function(cb) {
        cb.checked = someUnchecked
      })
    })
  })
})
 
 

Run example on codepen.io.
This is what you see in jQuery tutorials.
HTML fragments loaded via AJAX don’t get Javascriptified.

Toggle all: Angular directive

<span class="toggle-all">Toggle all</span>

app.directive('toggle-all', function() {
  return {
    restrict: 'C',
    link: function(scope, $link) {
      $link.on('click', function() {
        var $form = $link.closest('form')
        var $checkboxes = $form.find(':checkbox')
        var someUnchecked = $checkboxes.is(':not(:checked)')
        $checkboxes.prop('checked', someUnchecked)
      })
    }
  }
})

It’s nice how Angular lets us register a compiling function for a CSS selector.
Also we don’t need to manually Javascriptify new fragments
as long as we insert them through Angular templates

Toggle all: Unpoly compiler

<span class="toggle-all">Toggle all</span>

up.compiler('.toggle-all', function(element) {
  element.addEventListener('click', function() {
    let form = element.closest('form');
    let checkboxes = form.querySelectorAll('input[type=checkox]');
    let someUnchecked = !!checkboxes.find(function(cb) { !cb.checked }
    checkboxes.forEach(function(cb) {
      cb.checked = someUnchecked
    })
  })
})

Unpoly automatically compiles all fragments that it inserts or updates.

Legacy browsers

Unpoly gracefully degrades with old versions of Internet Explorer:

Edge Full support
IE 10 Full support
IE 9 Page updates that change browser history
fall back to a classic page load.
Animations and transitions are skipped.
IE8 Unpoly prevents itself from booting,
leaving you with a classic server-side application

Bootstrap integration

  • Include unpoly-bootstrap3.js and unpoly-bootstrap3.css
  • Configures Unpoly to use Bootstrap styles for dialogs,
    marking current navigation tabs, etc.
  • Makes Unpoly aware of fixed Bootstrap layout components when scrolling the viewport.
  • In general we try to not do things that would totally clash with Bootstrap.

Rails integration

Include unpoly-rails In your Gemfile:

gem 'unpoly-rails'

In your controllers, views and helpers:

up?                            # request.headers['X-Up-Target'].present?
up.target                      # request.headers['X-Up-Target']
up.title = 'Title from server' # response.headers['X-Up-Title'] = 'Title ...'
up.validate?                   # request.headers['X-Up-Validate'].present?

The gem also provides the JS and CSS assets for the latest Unpoly.

Other installation methods

Although the Rails bindings are nice, Unpoly works with any kind of backend.
E.g. unpoly.com is a static middleman site using Unpoly.

Unit testing

Use Jasmine to describe examples.
Use jasmine-jquery to create sample elements.
Use up.hello to compile sample elements.

up.compiler('.current-year', function($element) {
  var year = new Date().getFullYear();
  $element.text(year);
});

describe('.current-year', function() {
  it("displays today's year", function() {
    $element = affix('.current-today');
    up.hello($element);
    year = new Date().getFullYear();
    expect($element).toHaveText(year.toString());
  });
});

Easier integration testing

Disable animation:

up.motion.config.enabled = false;

Disable concurrent requests:

up.proxy.config.maxRequests = 1;

Wait before you do things:

AfterStep do
  sleep 0.05 while page.evaluate_script('window.up && up.proxy.isBusy()')
end

(Or use patiently).

Use jasmine-ajax to mock the network:

up.compiler('.server-time', function($element) {
  $element.text('Loading ...');
  up.ajax('/time').then(function(time) { $element.text(time) };
});

describe('.current-year', function() {
  it('fetches and displays the current time from the server', function() {
    jasmine.Ajax.install();
    var $element = affix('.server-time');
    up.hello($element);
    expect($element).toHaveText('Loading...');
    jasmine.Ajax.requests.mostRecent().respondWith({
      status: 200,
      contentType: 'text/plain',
      responseText: '13:37:00'
    });
    expect($element).toHaveText('13:37:00');
  });
});


Who else went back?

Project state

Response times

  • 0.1 second is about the limit for having the user feel that the system is reacting instantaneously, meaning that no special feedback is necessary except to display the result.
  • 1.0 second is about the limit for the user’s flow of thought to stay uninterrupted, even though the user will notice the delay. Normally, no special feedback is necessary during delays of more than 0.1 but less than 1.0 second, but the user does lose the feeling of operating directly on the data.
  • 10 seconds is about the limit for keeping the user’s attention focused on the dialogue. For longer delays, users will want to perform other tasks while waiting for the computer to finish, so they should be given feedback indicating when the computer expects to be done. Feedback during the delay is especially important if the response time is likely to be highly variable, since users will then not know what to expect.

Miller 1968; Card et al. 1991; Jacob Nielsen 1993

Also see Google’s RAIL Performance Model.

Repurpose existing UJS syntax

HTML

<a menu-link href="/details">Show more</span>

JavaScript

up.macro('[menu-link]', function($link) {
  $link.attr(
    'up-target': '.menu',
    'up-position': 'bottom-left',
    'up-animation': 'roll-down'
  });
});
 
 
 




Is Unpoly right for my project?

☑ You are not writing super ambitious UI
☑ You have some control over the UI requirements
☑ You’re ready to launch 100% of your JavaScript from up.compiler
☑ You’re OK with dealing with the occasional breaking change

Is your alternative home-growing an informal Random.js framework?