red

How Predatory Companies Are Trying to Hijack Your Publisher Search, Part 3


Posted by Victoria Strauss for Writer Beware®

In my first post about the ways that predatory companies attempt to ensnare unwary writers who are searching for publishers, I discussed fake publisher-matching websites. In my second, I exposed the scammy Google ad tactics of vanity publisher Austin Macauley.

In this third post, I'll talk about an equally insidious practice: providing misinformation or even outright lies about traditional publishing, in order to make self- or vanity publishing appear superior.

Yesterday on Twitter, someone tweeted this chart, which purportedly compares traditional publishing and self-publishing.


If you're even slightly savvy about publishing, the inaccuracies are easy to spot. Trad pubs often pay royalties on retail price (not "net sales"), or pay a higher percentage (higher royalties are especially common in the small press world). Trad pubs that pay advances don't withhold them from less popular authors, and they don't require authors to make "certain minimum orders" or to buy thousands of copies of their own books. And while it's often true that smaller traditional publishers don't provide much in the way of PR or marketing support, and larger houses invest more marketing in more popular books and authors, they don't simply ignore 95% of their output (this makes no sense; what business markets only 5% of its products?)

As for author rights...trad pubs do license exclusive rights from authors, sometimes for a period of years, sometimes for the life of copyright (with reversion usually happening well before then). But they don't gain ownership of them (as "all rights are with the publisher" implies), because the author retains copyright--plus, authors can often negotiate to keep some of their subsidiary rights. And although self-publishing is typically non-exclusive, allowing authors to publish on multiple platforms if they wish, they do still have to license publishing and distribution rights to whichever platform or service provider they choose--otherwise, the platform couldn't legally produce and sell their books.

The chart comes from this how-to-self-publish article, which is really just a long ad for PublishEdge, which is (surprise!) a paid publishing services provider.


PublishEdge is a "division" of Zaang Entertainment Pvt Ltd, which, unlike the Philippines-based scams I've been covering so much lately, is based in India. The range of services it sells aren't priced as high as some of the scammers', but there are still plenty of warning signs: no information about who is providing the services on offer (so you have no idea who they are or if they're qualified); no cover or website design samples (so you have no idea what you'd be getting for your money); and this pitch for ghostwriting services, which invites you to "Discover the simple secret to how celebrities and busy professionals get their books published without actually writing", courtesy of "our book writing experts", who (judging from the description of the service) basically type up a Skype interview into a chapter book. Most likely these unnamed "experts" are hired on Upwork or Fiverr or a similar jobs site (holy plagiarism scandal, Batman!).

PublishEdge isn't alone in misrepresenting traditional publishing in order to make itself look more attractive. Among other alternative facts, this chart from Morgan James, a vanity publisher with an author purchase requirement, claims that "many major houses" require authors to buy 5,000 copies or more of their own books (doesn't that make MJ's 2,500 purchase requirement seem appealing?), and that trad pubs provide no PR or marketing support for 94% of their books and authors. (Hmmm. Could PublishEdge have borrowed a little something there?)

Here's another misleading comparison, from Union Square Publishing, a self-styled hybrid (read: vanity) publisher. It too borrows heavily from Morgan James's chart, with several of the same dubious claims. Here's another one--this time from Success Publishing, which sells Chicken Soup-style anthology slots.

This one, from "custom" publisher Momosa Publishing (packages start at $5,900), doesn't tell quite so many fibs, but encourages you to believe that trad pubs cap their royalties at 6%, and don't market their books to libraries. And then there's this from Atmosphere Press, another so-called hybrid, which wants to convince writers that a $5,000 publishing fee will save them from the "raw end of the deal" they'd get from a trad pub, "losing not just their royalties but also the rights to their material and to their control over their art." Not addressed: the likelihood of ever making that $5,000 back.

These are just a few examples; there are many more. If you use the internet as part of your publisher search, you're very likely to encounter them (in some cases, disseminated by self-styled experts who ought to know better). It's a great argument for a step that many writers skip: learning about publishing before diving into the quest for publication. As with all aspects of publishing, knowledge is your greatest ally and your best defense: the more you know about the way things really work, the better protected you will be against the disinformation described above.

Final note: I know that many writers have had bad experiences with traditional publishers--I've had some myself. Especially in the small press world, many traditional (at least in the sense that they don't charge fees) publishers engage in nonstandard and author-unfriendly business practices. There's plenty of discussion of that on this blog. I'm not trying to paint trad pub as perfect, or argue that it's necessarily a better choice for any given writer.

But deliberate distortions like those described above don't help anyone, even if you don't take into account their obvious self-serving agenda. Tarring an entire segment of the publishing market with a broad negative brush--especially where some of the supposed negatives are demonstrably false--is as irresponsible as arguing (as some people still do) that only traditional publishing is a worthwhile path. 




red

Copyright Violation Redux: The Internet Archive's National Emergency Library


Posted by Victoria Strauss for Writer Beware®

The enormous digital archive that is the Internet Archive encompasses many different initiatives and projects. One of these is the Open Library Project, a huge repository of scanned print books available for borrowing in various digital formats.

Unlike a regular library, the IA does not purchase these books, but relies on donations to build the collection. Nor are permissions sought from copyright holders before creating the new digital editions. And although the IA claims that the project includes primarily 20th century books that are no longer widely available either physically or digitally, the collection in fact includes large numbers of 21st century books that are in-copyright and commercially available--and whose sales the Open Library's unpermissioned versions have the potential to harm.

Most professional writers' groups consider the Open Library to be not library lending, but massive copyright violation. Many have issued alerts and warnings (you can see SFWA's alert here), and many authors have contacted the IA with takedown requests (to which the IA was not always terrific at responding; you can see my account of my own frustrating experience here).

In the fall of 2018, a novel (and disputed) legal theory was created to justify the Open Library and similar initiatives, called Controlled Digital Lending (CDL). CDL's adherents present it as "a good faith interpretation of US copyright law for American libraries" seeking to conduct mass digitization projects, and invoke as support the "exhaustion" principle of the first sale doctrine (the idea that an authorized transfer of a copyrighted work "exhausts" a copyright holder's ability to subsequently control the use and distribution of  that copy; this is what allows used book sales, for example) and the fair use doctrine (a complex principle that permits the copying of a copyrighted work as long as the copying is limited and transformative). As long as the library restricts its lending in ways similar to restrictions on the lending of physical books (for instance, allowing only one user at a time to access each digital format), CDL holds that creating new digital editions of in-copyright books and lending them out is fair use, and copyright holders' permission isn't necessary.

Libraries in particular have embraced CDL. Publishers' and writers' groups...not so much, especially in light of a recent legal decision that rejected both the first sale doctrine and fair use as basis for re-selling digital content. Here's the Authors Guild:
CDL relies on an incorrect interpretation of copyright’s “fair use” doctrine to give legal cover to Open Library and potentially other CDL users’ outright piracy—scanning books without permission and lending those copies via the internet. By restricting access to one user at a time for each copy that the library owns, the proponents analogize scanning and creating digital copies to physically lending a legally purchased book. Although it sounds like an appealing argument, the CDL concept is based on a faulty legal argument that has already been rejected by the U.S. courts.

In Capitol Records v. ReDigi, the Second Circuit held that reselling a digital file without the copyright holder’s permission is not fair use because the resales competed with the legitimate copyright holder’s sales. It found that market harm was likely because the lower-priced resales were sold to the same customers who would have otherwise purchased new licenses. In this regard, the court emphasized a crucial distinction between resales of physical media and resales of digital content, noting that unlike physical copies, digital content does not deteriorate from use and thus directly substitutes new licensed digital copies.

The same rationale applies to the unauthorized resale or lending of ebooks. Allowing libraries to digitize and circulate copies made from physical books in their collection without authorization, when the same books are available or potentially available on the market, directly competes with the market for legitimate ebook licenses, ultimately usurping a valuable piece of the market from authors and copyright holders.
For a more detailed deconstruction of CDL's arguments, see this statement from the Association of American Publishers.

Flash forward to 2020, and the coronavirus pandemic crisis. Last week, the IA announced the debut of the National Emergency Library--really just the Open Library, but with some new provisions.
To address our unprecedented global and immediate need for access to reading and research materials, as of today, March 24, 2020, the Internet Archive will suspend waitlists for the 1.4 million (and growing) books in our lending library by creating a National Emergency Library to serve the nation’s displaced learners. This suspension will run through June 30, 2020, or the end of the US national emergency, whichever is later.

During the waitlist suspension, users will be able to borrow books from the National Emergency Library without joining a waitlist, ensuring that students will have access to assigned readings and library materials that the Internet Archive has digitized for the remainder of the US academic calendar, and that people who cannot physically access their local libraries because of closure or self-quarantine can continue to read and thrive during this time of crisis, keeping themselves and others safe.
What this boils down to, under all the high-flying verbiage: the IA is ditching the one-user-at-a-time restriction that is one of the key justifications for the theory of controlled digital lending, and allowing unlimited numbers of users to access any digitized book in its collection.

The Authors Guild again, on how this harms authors:
IA is using a global crisis to advance a copyright ideology that violates current federal law and hurts most authors. It has misrepresented the nature and legality of the project through a deceptive publicity campaign. Despite giving off the impression that it is expanding access to older and public domain books, a large proportion of the books on Open Library are in fact recent in-copyright books that publishers and authors rely on for critical revenue. Acting as a piracy site—of which there already are too many—the Internet Archive tramples on authors’ rights by giving away their books to the world.
Here's just one concrete example. Katherine Harbour's Nettle King is available for borrowing in the National Emergency Library as a scan, an EPUB, and a PDF (the IA's EPUB versions are OCR conversions full of errors). Published in 2016, it's also "in print" and available on Amazon and other online retailers as an ebook, in addition to other formats. The IA, which never bought a digital license to Ms. Harbour's book and scanned and uploaded it without permission, now is proposing to allow unlimited numbers of users to access it, potentially impacting her sales. How is this any different from a pirate site?

Announcement of the National Emergency Library has been greeted rapturously by the press and by libraries. Less regarded has been the flood of protest and criticism from authors and professional groups. In situations like these, authors and publishers tend to be dismissed as greedy money-grubbers who are putting profits ahead of the march of progress and the noble dream of universal access to content...despite the fact that authors' right to make money from their work--and, just as important, to control the use of it--springs directly from the US Constitution, and has been enshrined in law since 1790.

In response to the outcry over the National Emergency Library, the IA has issued a justification of it, citing the "tremendous and historic outage" of COVID-19-related library closures, with "books that tax-paying citizens have paid to access...sitting on shelves in closed libraries, inaccessible to them." This noble-sounding purpose conveniently ignores the fact that those libraries' (legally-acquired and paid-for) digital collections are still fully available.

If your book is included in the National Emergency Library, and you don't want it there, the IA will graciously allow you to opt out (another inversion of copyright, which is an opt-in system).


Hopefully they'll be more responsive than they were in 2018, when I sent them DMCA notices that they ignored. Or later, when they began rejecting writers' takedown requests by claiming that the IA "operates consistently with the Controlled Digital Lending protocol.”

******************

I've covered this question above, but I want to highlight it again, because it's such a persistent objection when this kind of infringement occurs: Brick-and-mortar libraries lend out books for free, so how are the IA's "library" projects any different?

A few reasons.

- Brick-and-mortar libraries buy the books they lend, a separate purchase for each format (hardcover, paperback, ebook, audiobook, etc.). The author gets a royalty on these purchases. The IA seeks donations, and lends those. Authors get nothing.

- Brick-and-mortar libraries lend only the books they purchase. They don't use those books to create new or additional, un-permissioned lending formats. That's exactly what the IA does. Moreover, one of its additional lending formats is riddled with OCR errors that make them a chore to read. Apart from permission issues, this is not how authors want their books to be represented to the public.

- People who advocate for looser copyright laws often paint copyright defenders as greedy or mercenary, as if defending copyright were only about money. It's worth remembering another important principle of copyright: control. Copyright gives authors not just the right to profit from their intellectual property, but to control its use. That, as much as or even more than money, is the principle the IA is violating with its library projects.

UPDATE: It appears that the IA--on its own initiative--is removing not just illegally-created digital editions in response to authors' takedown requests, but legally-created DAISY editions as well, even where authors don't ask for this (DAISY is a format for the visually impaired, and like Braille, is an exception in copyright law and is also permissioned in publishing contracts).


It did the same thing in 2018, even where the takedown requests specifically exempted DAISY editions. I don't know if the current removals reflect expediency or possibly are just a kind of FU to writers (and, indirectly, to disabled readers), but if you send a removal request to the IA, you might consider specifically asking them not to remove any editions for the blind and disabled (which, again, are legal for the IA to distribute).

UPDATE 4/2/20: The Authors Guild has issued a statement encouraging writers to demand that the Internet Archive remove their books from its National Emergency Library. The statement includes instructions on what to do, along with a sample DMCA notice in the proper legal form.

UPDATE 4/8/20: SFWA has issued a statement on the National Emergency Library, describing the legal theory of Controlled Digital Lending as "unproven and dubious". (A link to SFWA's DMCA notice generator is included.)
[U]sing the Coronavirus pandemic as an excuse, the Archive has created the “National Emergency Library” and removed virtually all controls from the digital copies so that they can be viewed and downloaded by an infinite number of readers. The uncontrolled distribution of copyrighted material is an additional blow to authors who are already facing long-term disruption of their income because of the pandemic. Uncontrolled Digital Lending lacks any legal argument or justification.
UPDATE 4/9/20: The Chairman of the US Senate Subcommittee on Intellectual Property, Thom Tillis, has sent a letter to the Internet Archive, pointing out the many voluntary initiatives by authors, publishers, and libraries to expand access to copyrighted materials, and expressing concern that this be done within the law. 
I am not aware of any measure under copyright law that permits a user of copyrighted works to unilaterally create an emergency copyright act. Indeed, I am deeply concerned that your "Library" is operating outside the boundaries of the copyright law that Congress has enacted and alone has the jurisdiction to amend.
The letter ends by punting "discussion" until "some point when the global pandemic is behind us." So, basically, carry on and maybe at some point we'll talk.

UPDATE 4/15/20: Internet Archive founder Brewster Kahle has responded to Sen. Tillis's letter, claiming that the National Library is needed because "the entire physical library system is offline and unavailable" (even though libaries' legally acquired digital collections are still fully available) and that "the fair use doctrine, codified in the Copyright Act, provides flexibility to libraries and others to adjust to changing circumstances" (there's no such language in the actual Fair Use statute).

Kahle also notes:
In an early analysis of the use we are seeing what we expected: 90% of the books borrowed were published more than ten years ago, two-thirds were published during the twentieth century. The number of books being checked out and read is comparable to that of a town of about 30,000 people. Further, about 90% of people borrowing the book only looked at it for 30 minutes. These usage patterns suggest that perhaps that patrons may be using the checked-out book for fact checking or research, but we suspect a large number of people are browsing the book in a way similar to browsing library shelves.
But this is hardly a compelling argument. Large numbers of these books are certainly still in copyright, and many are likely still "in print" and commercially available (in digital form as well as hardcopy). Just because a book was published more than ten years ago or prior to 2000 doesn't magically cause it to become so hard to find it must be digitized without permission in order to save it. "But they're older books" sidesteps, rather than addresses, the thorny copyright issues raised by the IA's unpermissioned scanning and digitizing.

This passage also tacitly confirms the IA's abandonment of the one-user-at-a-time restriction that is a key feature of the rationale for the Controlled Digital Lending theory. If the basis for your enterprise is a legal theory whose strictures can be jettisoned at will, how credible is that theory really?

Kahle also claims that "No books published in the last five years are in the National Emergency Library". As it happens, the example I provide above (Katherine Harbour's Nettle King) handily disproves this statement: it was published in 2016, and was digitized by the IA in 2018 (you can see the scan here). I seriously doubt it's the only instance. Either Kahle is being disingenuous, or he doesn't know his own collection.

As a sop to creators, Kahle reiterates that concerned authors "need only to send us an email" and their books will be removed. As I've pointed out above, this is yet another inversion of copyright law, which explicitly gives creators control over the use of their work. In other words, it's the IA, not authors, who should be the petitioners here.

UPDATE 4/16/20: This terrific, comprehensive article from the NWU's Edward Hasbrouck examines the multiple ways the Internet Archive is distributing the page images from its unpermissioned scanning of print books--"[o]nly one of [which] fits the Internet Archive’s and its supporters’ description of so-called Controlled Digital Lending (CDL)."




red

Spitting Blood Over Red Lipstick Stains

Alexandra Savior “Bad Disease” Alexandra Savior belongs to a long tradition of torch singers, but the sound and lyrical concerns of “Bad Disease” place her in the overlap of a Venn diagram of Portishead and Lana Del Rey. I know it can read like a backhanded compliment to say an artist sounds like two others, […]




red

I Asked the Department of Education to Fight for Black Girls. They Ignored Me.

Walking down the hallway at school, an administrator stopped me in my tracks. I felt her eyes glare from the top of my head, past my torso and down my legs. She told me that my shorts were too short and that she didn’t want to see me wearing them ever again. I felt embarrassed […]




red

Radio Free Burrito Presents: Satellite of Fear by Fred A Kummer Jr.

Last night, during dinner, my son did the math and figured out we’ve been staying home together for seven weeks. That’s a long time, but it also feels like we […]




red

Multilayered

subtext???




red

Daredevil 'Mad Mike' Hughes dies in crash of his homemade rocket in California

"Mad Mike" Hughes, a self-styled explorer and daredevil bent on proving that the earth is flat was killed over the weekend when his homemade rocket crashed in the California desert over the weekend.




red

Pagan Community Notes: PSG 2020 canceled, leadership change within Sacred Well, indigenous shaman and actor Antonio Bolivar crosses Veil, and more!

In this week's Pagan Community Notes, Pagan Spirit Gathering has been canceled, indigenous shaman and actor Antonio Bolivar joins the Ancestors, Sacred Well announces changes in leadership, and more!

Continue reading Pagan Community Notes: PSG 2020 canceled, leadership change within Sacred Well, indigenous shaman and actor Antonio Bolivar crosses Veil, and more! at The Wild Hunt.




red

layered yogurt flatbreads

For many years I’ve been fascinated by variations on yeast-free yogurt flatbread recipes (sometimes called yeast-free naan) that follow a loose formula of a cup of yogurt, a couple cups of flour, some salt, fat, and water. Sometimes there’s baking powder, sometimes there’s not. It’s kneaded together as you would a yeasted bread dough and left to rest for about 30 minutes, sometimes an hour, during which a transformation occurs and the dough becomes springy and smooth and very lovely to work with, like a freshly-opened can of Play-Doh. Once rolled thin, they’re pan-fried, and look, they’re fiiine. But they’re never as good as I want them to be.

Read more »





red

Cyclist, 16, critically injured after being hit by two cars in south London

Teenager remains in hospital as two men are arrested after collision on Streatham High Road

A 16-year-old cyclist is in a life-threatening condition after being hit by two cars in south London.

The boy was critically injured in the collision in Streatham High Road shortly before 11.20pm on Friday.

Continue reading...




red

‘Every stone will be uncovered’: how Georgia officials failed the Ahmaud Arbery case

Systemic flaws within Glynn county’s district attorney offices led to a lack of action against the men involved in this ‘modern lynching’

In the days and weeks after Ahmaud Arbery was shot and killed, multiple Glynn county law enforcement officials failed to thoroughly investigate his death and, in one case, refused to allow police officers to make arrests, the Guardian has learned.

Related: Ahmaud Arbery is dead because Americans think black men are criminals | Benjamin Dixon

Continue reading...




red

Voice Actor: Bakugan: Armored Alliance Anime's English Dub Continues Production

Out-of-studio recordings continue from cast, crew's homes





red

AskReddit Thread: Kindest Things People Have Done Or Seen

The world's full of enough troubling chaos as it is. Let's mix it up with a welcomed wave of wholesome goodness. This AskReddit thread has people sharing the kindest things they've seen, or done themselves. Spread that positive energy. 




red

AskReddit Thread: False Things That School Taught Us

Someone on AskReddit got a fun and enlightening thread going about the various things that school taught us, that we later learned were false. Better to learn that those tidbits of "knowledge" were false, late than never at all. 

Check out another recent AskReddit thread that we ran, which focused on the most awkward questions students asked in sex ed.




red

A Secret Recovered

—email— Dear Frank, Post Secret has long been part of waking up Sunday morning. About 11-12 years ago, I will never forget opening the page and at the top Was not a postcard, but a video. You captioned it something like “a haunting submission”. Immediately, I recognized the voice. It was one of my best […]




red

Huge volcanic eruption in 2018 was triggered by torrential rains

The eruption of Hawaii’s Kilauea volcano in 2018 was caused by heavy rains – suggesting that extreme weather from climate change could lead to more eruptions




red

Infrared-reflecting paint can cool buildings even when it is black

Black paint usually absorbs heat, but a new two-layer polymer paint reflects infrared light and keeps objects 16°C cooler, which could help make buildings more energy efficient




red

It’s impossible to predict if crucial Antarctic glacier will collapse

The Pine Island glacier has three tipping points that could lead to the collapse of the entire West Antarctic ice sheet, potentially raising sea levels by 3 metres over centuries




red

Robots with 3D-printed muscles are powered by the spines of rats

Robots made of 3D-printed muscle and rat spines could help us understand conditions like motor neurone disease and the technique may eventually be used to build prosthetic devices




red

UK government won't say how many covid-19 contact tracers it has hired

The UK government has refused to say how many covid-19 contact tracers it has employed, with less than three weeks to go until its target of recruiting 18,000 of them by mid-May




red

Red light could be used to precisely target rheumatoid arthritis drugs

People with rheumatoid arthritis often take medicines that can have damaging side-effects, but a system that uses red light to deliver drugs exactly where they are needed could help




red

Covered in Sad and Sick




red

Bi-Powered




red

In Israel, a family of three adults are declared the children's equal parents.





red

PHP grows up and Redis 6 is released

#265 — May 6, 2020

Read on the Web

StatusCode Weekly
Covering the week's news in software development, ops, platforms, and tooling.

Caddy 2: The Go-Powered Web Server with Automatic, Default TLS — After over a year of redesign, Caddy 2 has a new architecture to v1. If you want a new HTTPS server that ‘just works’, Caddy is well worth a look IMO. Its lead creator, Matt Holt, answered lots of questions on this Hacker News thread about the release.

Caddy Web Server

Redis 6.0 Released — The next major release of the popular data structure server is here. Redis is at the heart of so many data systems nowadays that any major release is big news but 6.0 packs in a lot of new bits and pieces that make it more robust and capable of modern workloads, including:

Salvatore Sanfilippo

Faster CI/CD for All Your Software Projects Using Buildkite — See how Shopify scaled from 300 to 1800 engineers while keeping their build times under 5 minutes.

Buildkite sponsor

An 'Extra Dumbed Down' Explanation of BGP — The BGP (Border Gateway Protocol) is a fundamental part of how the Internet works by defining and exchanging routing information between systems. This post explains what BGP is but, importantly, what its flaws are and how it needs to be made better.

RevK

How PHP is Beginning to Show Its Maturity“If you still think PHP lacks an appropriate object model, you might be pleasantly surprised taking a look again.” Add proper FFI, dependency management, and security to the mix and PHP looks better than ever as of version 7.4.

John Coggeshall (LWN)

What Netlify’s Infrastructure Team Learned As It Increased Deploy Speed by Up to 2x — How the infrastructure team at Netlify took a 4 year old codebase, isolated an issue, tested a few different solutions, and eventually improved observability while rolling it out to production.

Epure, Neal and Drasner

Quick bytes:

???? Jobs

DevOps Engineer at X-Team (Remote) — Join X-Team and work on projects for companies like Riot Games, FOX, Coinbase, and more. Work from anywhere.

X-Team

Find a Job Through Vettery — Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.

Vettery

ℹ️ Interested in running a job listing in StatusCode Weekly? There's more info here.

???? Stories and Opinions

How a Few Lines of Code Broke Lots of JavaScript Packages — A week ago JavaScript developers were reporting breakage in numerous key packages. The culprit? A tiny change in a tiny dependency. A fix was quickly deployed and the creator of the affected project reflects on what happened here.

Forbes Lindesay

systemd, 10 Years Later: A Historical and Technical Retrospective

V.R.

Initial Impressions of WSL 2 — WSL (Windows Subsystem for Linux) is a compatibility layer for running Linux executables natively within Windows 10 and ”..it feels like a new era for web development on Windows.”

Dave Rupert

What Port Numbers Do Developers Use Locally? — A look at what port numbers developers are using locally in development.

Roland Crosby

▶  A Language Head to Head: Kotlin 4 vs. Scala 3

Garth Gilmour and Eamonn Boyle

▶  Does Agile Make Us Less Secure? — Weighing up the balance between older ways of making things ‘just so’ before deploying versus pushing to production numerous times a day.

Michael Brunton-Spall

How to Remain Agile with DynamoDB — Amazon DynamoDB delivers performance at scale but at a cost to flexibility. See how the costs can be mitigated to remain Agile.

Rob Cronin

???? Tutorials

Using AWS CodeBuild to Execute Administrative Tasks — A look at using AWS CodeBuild to run scheduled or adhoc jobs. It’s not the first tool most would jump to (as it’s marketed as a build service) but the flexibility provided is pretty neat and might help you package together code in a way that better suits your use case (it’s well suited for batch jobs that take a while to run, rather than 500ms functions, say!)

Gojko Adzic

Git Branch Naming Conventions — A primer on naming branches for modern git workflows to help organize your or your team’s work.

Sanket Saurav

Implementing Conway's Game of Life in 32 Bytes — Not exactly a tutorial but if you can read x86 you’ll learn something. Here’s a video of it in action.

SizeCoding

TLDR: Writing a Slack bot to Summarize Articles — Using state-of-the-art NLP to read more news, faster? I always find automated summaries to be kinda useless, but the way it’s put together is neat nonetheless.

Chris Ismael

OAuth 2.0 Security Best Current Practices

IETF

Using PostgreSQL for JSON Storage — With JSON and JSONB types and associated advanced ways to query such columns, using Postgres as a store for JSON data is pretty simple. This is the briefest of overviews but leads into an interactive online tutorial.

Steve Pousty

???? Code and Tools

Never IPv4: A Quick Way to Test Your IPv6 Support — If this site doesn't load for you, you're in the majority! It's a test site that only has AAAA records and so will only work on a fully working IPv6 stack. NeverIPv6.com provides the opposite.

As207960 Cyfyngedig

actions-cli: Monitor Your GitHub Actions in Real Time from the Command Line

Tommaso De Rossi

Pixie Is Alive. Monitor & Trace K8s Apps On-Prem Without Changing Code — At-scale streaming, gaming, e-comm & SaaS SRE teams run eBPF based edge monitoring Pixie scripts to debug in minutes.

Pixie sponsor

Backblaze B2 Cloud Storage Now Has S3 Compatible APIs — Backblaze B2 has been a compelling alternative to S3 for a while on price alone but now it shares an API too.

Gleb Budman

awesome-kubernetes: A Curated List for Awesome Kubernetes Sources — A lot of k8s resources here from installers and useful articles to platforms, projects, books, and Twitter accounts.

Ramit Surana

Rich: A Python Library for Rich Text and Beautiful Formatting in the Terminal — This does look really nice.

Will McGugan




red

Hundreds of repatriated Pakistanis test positive for virus

Hundreds of Pakistanis who were repatriated from the Middle East -- where many lost jobs amid coronavirus shutdowns and were living in cramped conditions -- have tested positive for COVID-19, officials said Friday. Pakistan has so far brought about 20,000 nationals home, among them a large number of unskilled workers who had been labouring in Gulf nations only to see their jobs disappear as lockdowns slowed economic activity. Of the 2,069 Pakistanis returning from the Middle East to the southern province of Sindh, more than 500 tested positive for the coronavirus, Murad Ali Shah, Sindh's chief minister, told a press conference.





red

Bangladesh quarantines hundreds of Rohingya boat people on island: officials




red

‘Please Come Get Me’: Fatal Indianapolis Police Shooting May Have Aired on Facebook

An Indianapolis man was fatally shot by police after a high-speed chase in an incident that appeared to have been broadcast on Facebook Live, sparking outcry and protests throughout the night.More than 100 people from the community gathered at the scene of the shooting to express their outrage Wednesday night, chanting “No justice, no peace!” as they demanded answers from police about the latest officer-involved death. Protestors continued demonstrating Thursday, with dozens marching through the streets before congregating outside of the Indianapolis Metropolitan Police Department headquarters. “We deserve better,” one community activist told The Indianapolis Star. “I am disgusted, horrified, tired, and angry.”‘You’re Gonna Kill Me’: Body-Cam Footage Shows Cops Mocking Dallas Man as He DiesThe Indianapolis Metropolitan Police Department said the incident began around 6 p.m. when officers began pursuing a man who they observed to be driving recklessly. After the driver exited the car, an officer chased him on foot before gunfire was “exchanged” at around 6:14 p.m., police said in a press release, without revealing who fired first. In the unconfirmed Facebook video of the incident, at least 13 or 14 gunshots can be heard. In another video obtained by The Indianapolis Star, a detective who arrived after the shooting can be heard saying: “Looks like it’s going to be a closed casket, homie.” “We are aware of inappropriate comments made by an IMPD detective” on the live stream, Indianapolis MPD Chief Randal Taylor said at a Thursday press conference. “Let me be clear: These comments are unacceptable and unbecoming of our police department.” While Taylor did not confirm the authenticity of the Facebook live stream, he did stress he was “concerned with the things on social media,” stating he thinks that some comments online “lack trust as to what occurred.” Authorities have not yet identified the name of the driver but said he and the officer who shot him were both black men. Family members identified the driver to local media outlets as 21-year-old Dreasjon “Sean” Reed. The officer who fired the fatal shot has been placed on administrative leave pending further investigation.“I feel like to lose a life, especially at a young age, there’s never going to be justice,” Jazmine Reed, the 21-year-old’s sister, told WISH, adding that her family watched the pursuit and shooting on Facebook as it happened. “Cause he’s gone—there’s never justice for that. Even if somebody was to get time or whatever for it, it’s never going to be justice because he’s never coming back.” The sister said she drove to the scene after watching the video, not knowing whether her brother was still alive. “I shouldn’t have to bury my little brother,” she added.The Indianapolis MPD said the incident began after two officers saw a Toyota Corolla being driven “recklessly.” They followed the driver in unmarked cars and asked for assistance as they said the vehicle continued “at a high rate of speed” and the operator was “disobeying all traffic signals” and nearly hit another car. In the Facebook video, titled “High-speed case lol,” Reed, who is shirtless, appears nervous as he speaks to his 2,000 viewers and points his camera to show the moving police cars behind him.“Almost lost him y’all!” he says. “Almost got rid of his ass!”Video Shows Florida Deputy Violently Yanking Middle Schooler’s Hair During ArrestAt one point, he appears to pull over and stop his car. Authorities say the driver disregarded “the officers’ verbal commands to stop” and ran out of the car, prompting an officer to chase him on foot.“I’m on 62nd and Michigan,” Reed says in the video, just before exiting the vehicle. “I just parked... I’m gone.” He added: “Please come get me! Please come get me! Please come get me!”Reed can then be heard running for approximately 30 seconds, as a voice behind him yells: “Stop! Stop!”“Fuck you,” Reed replies. Indianapolis Metropolitan Police Department Assistant Chief Chris Bailey said during a Wednesday news conference that the officer first used his taser, but it’s unclear if it worked and is not seen on the purported video from the scene.“It is believed at this time that shots were fired by both the officer and the suspect,” Bailey said.In the video, Reed appears to start screaming before collapsing on the ground. About eight seconds later, 11 or 12 gunshots can be heard in rapid succession. The live stream did not show Reed talking about a gun or firing a weapon. After a brief pause, two more shots can be heard as the camera faces the sky while the opening lyrics of Young Dolph’s “16 Zips” appears to be playing off the phone. By the end of the gunfire, more than 4,000 people had tuned in to watch the live stream, according to the Star.Bailey said Indianapolis Emergency Medical Services arrived shortly after and pronounced the driver dead at the scene. The officer was uninjured.Taylor on Thursday stated that a “loaded gun” was recovered at the scene that appeared to have been fired twice and that it belonged to the driver. He added that disciplinary action will be taken against the detective who made the “casket” comment.After the incident, the Facebook Live video, which has been widely shared on social media, was removed from the victim’s account, Bailey said. Bailey added that authorities are aware of Facebook videos.Cop Charged With Assault After Video Shows Him Slamming Suspect’s Head Into Pavement“Both the officers and the detectives have done their due diligence in preserving that evidence through the proper legal channels, and if it’s associated that there’s information on there that’s appropriate for the investigation, they’ll utilize it,” he said.Taylor added Thursday the police officers involved in the shooting were not wearing body cameras, but he has no reason to believe they acted inappropriately. But after the press conference, dozens of protesters took to the streets demanding more police action, shouting “all lives matter,” as drivers stopped their cars and put their fists out their windows in solidarity.About eight hours after that shooting, Indianapolis police fatally shot another man during an investigation into a burglary at an apartment complex. Authorities said that around 1:30 a.m. Thursday, four officers responded to the apartment and were immediately fired upon by a man with a rifle. All four officers “returned fire” and hit the man, who was pronounced dead at the scene, police said in a news release. In response to both incidents, Taylor stressed at a Thursday press conference that he will provide residents with “the truth whether we are right or wrong.”“We have long talked about the kind of police department we want to be—one that serves with the community, that's not policed at—a police department that is trusted, one where every resident feels a comfortable calling,” Taylor said. “We recognize and are saddened that this mutual trust that is so valued has been eroded over the last 24 hours.”Investigators are now conducting a separate investigation into that shooting, and police said there’s evidence the victim called 911 with the intent of ambushing the responding officers. “Our hearts this morning are with the families who lost loved ones during these tragic events. All of us are trying to make a new normal in an un-normal time. Incidents like these do not help restore normalcy to our community,” Chrystal Ratcliffe, the president of the NAACP branch in Indianapolis said in a statement.The American Civil Liberties Union of Indiana on Thursday called for a “prompt, thorough, and transparent investigation” into Reed’s death.“Whether someone is unarmed or armed, compliant or resistant, police officers should be properly trained in de-escalation tactics and turn to the use of force only as a last resort, not a first option,” the statement read. Read more at The Daily Beast.Got a tip? Send it to The Daily Beast hereGet our top stories in your inbox every day. Sign up now!Daily Beast Membership: Beast Inside goes deeper on the stories that matter to you. Learn more.





red

Coronavirus: Staggered work times considered when lockdown eases

Transport Secretary Grant Shapps says it could help maintain social distancing on public transport.




red

Coronavirus: Nearly two million claim universal credit

About 8,000 job centre staff have been redeployed to process claims for financial help, minister tells MPs.




red

Coronavirus: Tesla ordered to keep main US plant closed

It reportedly planned to re-open on Friday, but authorities say this could lead to more virus cases.




red

Uber says 'no sacred cows' amid coronavirus crisis

The firm has already announced job cuts affecting 14% of its staff, but more measures may be needed.




red

Call for credit card freeze on porn sites

More than 10 leading bodies say porn sites stream content featuring child sexual abuse and sex trafficking.




red

Redis 6.0 released

#302 — May 1, 2020

Read on the Web

Database Weekly

Redis 6.0 Released — The next major release of the popular data structure server is here. Redis is at the heart of so many data systems nowadays that any major release is big news but 6.0 packs in a lot of new bits and pieces that make it more robust and capable of modern workloads, including:

Salvatore Sanfilippo

You Can Now Do Serverless Streaming ETL with AWS Glue — If you want to analyze data on the fly as it arrives, you can now use AWS Glue (AWS’s ETL service) with streaming platforms like Kinesis Data Streams or Kafka which opens up a lot of opportunities as demonstrated here.

Danilo Poccia (AWS)

Monitor Database Performance End-To-End with OOTB Dashboards — Datadog’s customizable, built-in dashboards allow you to collect and visualize custom metrics, like saturation and resource utilization, in real-time. Unify your metrics, traces and logs in one platform. Try it free with a 14-day trial.

Datadog sponsor

Can Apache Kafka Replace a Database? - The 2020 Update — Kafka is a stream-processing system but the idea of using it to store data isn’t uncommon. This post analyzes Kafka’s core concepts from the database perspective.

Kai Waehner

PostgreSQL Gets a Parallel Processing Boost — Swarm64 started life as a FPGA-driven way to accelerate Postgres’s performance for analytics and data warehouse tasks, but can now work without FPGAs too.

Datanami

Using SQL in RStudio

Irene Steves

A Jepsen Security Report on Dgraph 1.1.1Jepsen is well known for their work in putting databases and related systems through their security paces. Here, the Go-powered distributed graph database Dgraph gets analyzed.

Jepsen

MongoDB Makes Its Compass GUI FreeCompass provides a powerful interface to work with MongoDB databases. It’s source was made publicly available last year as well.

MongoDB, Inc.

eBook: The Most Important Events to Monitor in Your Postgres Logs — In this eBook, you will learn about the Top 6 Postgres log events for monitoring query performance and preventing downtime.

pganalyze sponsor

Pantry: Free Cloud-Based Storage for JSON Data — Provides “perishable”, though secure, data storage for small projects via a RESTful API. Data is erased after a period of inactivity. There are quite a few projects like this and while they don’t suit long term production use, they can come in handy for hackathons, quick personal projects, teaching, etc.

Rohan Likhite

Liftbridge 1.0: Lightweight, Fault-Tolerant Message Streams — A server that implements a durable, replicated message log for the NATS messaging system.

Liftbridge




red

Students 'being ignored' over fee-refund claim

MPs consider a petition signed by 330,000, asking for students to get money back on fees this year.




red

VE Day: Red Arrows flypast over central London

The Red Arrows fly over an empty central London to celebrate the 75th anniversary of VE Day.




red

The Web We Lost: Luke Dorny Redesign

Like 90s hip-hop, The Web We Lost™ retains a near-mystical hold on the hearts and minds of those who were lucky enough to be part of it. Luke Dorny’s recent, lovingly hand-carved redesign of his personal site encompasses several generations of that pioneering creative web. As such, it will repay your curiosity.

The post The Web We Lost: Luke Dorny Redesign appeared first on Zeldman on Web & Interaction Design.




red

Coronavirus: 'We need to recruit hundreds more live-in carers'

The CEO of a social care firm says there is a surge in demand for live-in carers due to coronavirus.




red

Coronavirus coffee farmer: 'We're definitely scared'

Many small coffee producers fear they will go under, as Covid-19 has shut down their usual buyers.




red

Building Redux Middleware

After writing my post a few months ago on building your own redux app, I have been asked a couple times to write a guide on creating redux middleware and how it works. This will be a quick post on how you can acheive anything with your own middleware!

##Basic middleware


const customMiddleware = store => next => action => {
  if(action.type !== 'custom') return next(action)
  //do stuff!
}

Applying it:

import { createStore, applyMiddleware, } from 'redux'
import reducer from './reducer'
import customMiddleware from './customMiddleware'

const store = createStore(
  reducer,
  applyMiddleware(customMiddleware)
)

Whaaa? store => next => action => I know that looks confusing. Essentially you are building a chain of functions, it will look like this when it gets called:

//next looks something like this:
let dispatched = null
let next = actionAttempt => dispatched = actionAttempt 

const dispatch = customMiddleware(store)(next)

dispatch({
  type: 'custom',
  value: 'test'
})

All you are doing is chaining function calls and passing in the neccesary data. When I first saw this I was confused a little due to the long chain, but it made perfect sense after reading the article on writing redux tests.

So now that we understand how those chained functions work, let’s explain the first line of our middleware.

if(action.type !== 'custom') return next(action)

There should be some way to tell what actions should go through your middleware. In this example, we are saying if the action’s type is not custom call next, which will pass it to any other middleware and then to the reducer.

##Doing Cool stuff

The official guide on redux middleware covers a few examples on this, I’m going to try to explain it in a more simple way.

Say we want an action like this:

dispatch({
  type: 'ajax',
  url: 'http://api.com',
  method: 'POST',
  body: state => ({
    title: state.title
    description: state.description
  }),
  cb: response => console.log('finished!', response)
})

We want this to do a post request, and then call the cb function. It would look something like this:

import fetch from 'isomorphic-fetch'

const ajaxMiddleware = store => next => action => {
  if(action.type !== 'ajax') return next(action)
  
  fetch(action.url, {
    method: action.method,
    body: JSON.stringify(action.body(store.getState()))
  })
  .then(response => response.json())
  .then(json => action.cb(json))
}

It’s pretty simple really. You have access to every method redux offers in middleware. What if we wanted the cb function to have access to dispatching more actions? We could change that last line of the fetch function to this:

.then(json => action.cb(json, store.dispatch))

Now in the callback, we can do:

  cb: (response, dispatch) => dispatch(newAction(response))

As you can see, middleware is very easy to write in redux. You can pass store state back to actions, and so much more. If you need any help or if I didn’t go into detail enough, feel free to leave a comment below!




red

Using Proxies with Redux Types

One of the most common problems that I run into when using Redux is trying to figure out why an action is not being captured by a reducer. For someone just getting starting with Redux, debugging this issue can be especially overwhelming because of how Redux manages data flow. So before you start pouring over configuration code, or the logic contained in your action creators and reducers, please, make sure your action types are defined and spelled correctly.

One of the most common problems that I run into when using Redux is trying to figure out why an action is not being captured by a reducer. For someone just getting starting with Redux, debugging this issue can be especially overwhelming because of how Redux manages data flow. So before you start pouring over configuration code, or the logic contained in your action creators and reducers, please, make sure your action types are defined and spelled correctly.

In any application that I have built, most bugs that I have run into are simply due to typos. However, the solution to this particular problem is harder to spot because no errors are raised when the application is run. Take a look at the snippet below.

// actionTypes.js

export const FETCH_FILE_REQUEST = 'fetch_file_request';
export const FETCH_FILE_SUCCESS = 'fetch_file_success';
export const FETCH_FILE_FAIL = 'fetch_file_fail';


// filesReducer.js

import {
  FETCH_FILE_REQUEST,
  FETCH_FILE_SUCESS,
  FETCH_FILE_FAIL
} from '../actions/actionTypes';

const filesReducer = (state = {}, action) => {
  switch (action.type) {
    case FETCH_FILE_SUCESS:
      return { ...state, file: action.payload };
    default:
      return state;
  }
}

export default filesReducer;

Assuming we dispatched an action with type FETCH_FILE_SUCCESS, the filesReducer should catch the action before the default case is returned. But what if that is not happening? Where do we start the debugging process. There does not appear to be anything wrong with the code in the reducer; the action type was imported and matches the case in the switch statement. There are no errors in the browser. Where is the issue?

You may have noticed that I misspelled SUCCESS in filesReducer.js, but the reason this can be hard to catch is because importing undefined types does not cause an error, so when we import FETCH_FILE_SUCESS, its value is actually undefined, so our reducer always hits the default case.

It would be nice if the existing import/export system could help us catch this. Unfortunately, since action types are just strings, validating their existence is challenging. Luckily, we have another option.

Enter Proxies

Proxies are a feature of ES2015 that allow us to customize operations on a object. They can be used in many different ways, and you can find some useful examples here and here. For our problem, this example from Mozilla looks promising:

let validator = {
  set: function(obj, prop, value) {
    if (prop === 'age') {
      if (!Number.isInteger(value)) {
        throw new TypeError('The age is not an integer');
      }
      if (value > 200) {
        throw new RangeError('The age seems invalid');
      }
    }

    // The default behavior to store the value
    obj[prop] = value;

    // Indicate success
    return true;
  }
};

let person = new Proxy({}, validator);

person.age = 100;
console.log(person.age); // 100
person.age = 'young'; // Throws an exception
person.age = 300; // Throws an exception

So if proxies can be used to validate that properties assigned to an object are of a certain type and value, we should definitely be able to ensure that our action types are never undefined, or else throw an error that will be easy for us to fix. Let’s refactor our actionTypes.js file.

// actionTypes.js

const types = {
  FETCH_FILE_REQUEST: 'fetch_file_request',
  FETCH_FILE_SUCCESS: 'fetch_file_success',
  FETCH_FILE_FAIL: 'fetch_file_fail'
}

const typeValidator = {
  get(obj, prop) {
    if (obj[prop]) {
      return prop;
    } else {
      throw new TypeError(`${prop} is not a valid action type`);
    }
  }
}

module.exports = new Proxy(types, typeValidator);

First, we define a object containing all our action types. Then we define our validator handler typeValidator. The get method inside our handler is called a trap, and provides access to the properties of a object. If the property we are looking for, an action type, in this case, exists in the types object, return that prop, unmodified. Otherwise, throw an error because the prop does not exist.

Finally, export a new proxy, passing the types object as the target and the typeValidator as the handler. However, it is important to note that the ES2015 module system does not work well with proxies, so module.exports and require() must be used for exporting and importing the types.

Barely any code needs to change in the reducer and action creator files, but in order for the action types to be imported successfully, we just need couple lines of code in a new file:

// actionTypesProxy.js

export const {
  FETCH_FILE_REQUEST,
  FETCH_FILE_SUCCESS,
  FETCH_FILE_FAIL,
} = require('./actionTypes');

// in the reducer and action creator files
// change '../actions/actionTypes' to
// '../actions/actionTypesProxy'

By creating a proxy to verify the existence of an action type, we no longer have to worry about correctly naming a property upon import because an error will be thrown in the browser console as soon as the application starts. So, reduce the number headaches you get when developing an application using Redux and start using proxies.

Interested in learning how to build applications using Redux with ReactJS. Check out this online course! Modern React with Redux