era

Beware: Pigeon House Literary / Druella Burhan


Posted by Victoria Strauss for Writer Beware®

The internet and social media have transformed writer/agent/publisher interactions in many ways, one of which is the proliferation of Twitter pitch events, such as #PitMad, #DVPit, and others.

While no online innovation has (so far) managed to supplant the traditional query-and request route, these events do attract plenty of reputable agents and publishers--unlike other purported shortcuts (*cough*Publishizer*cough*). However, inevitably, they are also stalked by marginals, amateurs, and even scammers.

For instance, Eliezer Tristan Publishing, which charged a $500 fee and went out of business just months after opening up, haunted #PitMad. Ditto for GenZ publishing, which charges authors $2,500. Burchette and Ferguson, a brand-new publisher staffed by people with zero relevant experience, participated in pitch events before they even launched (and went out of business shortly thereafter).

Then there's this:


I've gotten many, many other questions about approaches by dubious companies and individuals as a result of pitch events. All in all, therefore, it pays to be careful, and if you haven't heard of an individual or publisher who approaches you, to research them before responding. (You can contact me; I may have heard something.)

Which leads me to the subject of today's post. I might not normally devote an entire blog post to one marginal agent, but this one is such an egregious example, and seems to be so active on social media--including #PitMad--that I think she's worth a special feature.

Pigeon House Literary Agency launched just this past February. It's run by Druella Burhan, whose resume includes none (zero, zip) of the relevant background experience you typically want to see from a new literary agent--such as a professional writing resume, or having previously worked for a reputable agency or publisher.


The lofty claims Burhan does make are either unverifiable, or provably false. For instance, here's Harvard Medical's publication on its 2011 MD-PhD graduates. Surprise! There's no mention of Druella Burhan.

Here's some of Burhan's agenting philosophy:


The logo (for lack of a better word) at the top of this post provides a preview of the rest of the Pigeon House site (a Wix freebie), which is amateurishly formatted and clearly not proofread (several pages have fully-justified text, with words cut off at the end of lines--I mean, it's a Wix freebie, it's not like you have to be an expert to get it right) and rife with typos, grammatical errors, and bizarre word use. For instance,


That's bad, but here's what it originally looked like. Burhan changed it shortly after I tweeted about it:


There's more: the Who We Are page, which bafflingly proclaims that the agency will "strive to bring a supreme appealingness and picturesque style of books from darkness to life"; the Foreign Rights page, which erroneously cautions writers that "If a literary agent does not agree to take you on as an international client/author, you will not be able to sell books overseas"; the Referrals page, where Burhan bizarrely invites other agents to send her clients. And here's the contract she is sending out, which includes the same formatting/proofreading errors as her website, and is really just an embarrassment.

It's a perfect carnival of amateurism.

Am I being mean here? Maybe, but before you whip out the "everyone has to start somewhere" argument, consider Burhan's false claims about herself and her aggressive use of social media to recruit clients despite her obvious ignorance and complete lack of relevant qualifications (I first heard of her because she was trolling on Reddit, and she is actively inviting queries on her Twitter feed).

The damage an amateur agent can do is considerable--squandering clients' chances with substandard submissions, submitting to disreputable or incompetent publishers, inadequately understanding publishing contract language and therefore not capable of effectively negotiating it. An amateur agent may not drain a writer's bank account the way a scammer would, but the bottom line isn't that different: no sale, and lots of wasted time.

Writer Beware.




era

Jangan Lakukan Hal Ini Ketika Berada Di Rusia

Jika kalian memiliki niatan untuk mengunjungi Negara Rusia sebagai salah satu Negara dalam destinasi kalian. Maka, kalian harus mengetahui negaranya tersebut sebelum kalian melakukan sebuah kecerobohan di sana. Misalnya kalian harus mengetahui peraturan disana, harus tahu akan etika saat berkunjung ke Negara tersebut, dan harus paham juga mengenai apa saja yang bisa kalian lakukan dan […]

The post Jangan Lakukan Hal Ini Ketika Berada Di Rusia appeared first on anni-sanni.com.




era

Deliverables




era

Ethical Considerations

turn it off!!




era

Their Name Is Very Literal




era

Meera Sodha's vegan recipe for Assam tea malt oaf | The new vegan

A cheap, rich and sticky treat to eat with your favourite cuppa

Usually in a recipe, I like to contrast ingredients and watch them battle it out. But sometimes, when you want to go large on one flavour, it’s worth adding a few ingredients with similar profiles to cover all bases. Today’s loaf is a case in point: I wanted layers of malt on malt on malt – flavours of toast, coffee, toffee and rye bread – which comes from using malt extract and muscovado sugar together with my favourite tea, the robust, full-bodied Assam tea, AKA the thinking woman’s English breakfast.

Prep 10 min
Cook 50-60 min
Serves 8-10

Continue reading...




era

Poem of the month: Primavera by Robin Robertson

for Cait

The Brimstone is back
in the woken hills of Vallombrosa,
passing the word
from speedwell to violet
wood anemone to celandine.
I could walk to you now
with Spring just ahead of me,
north over flat ground
at two miles an hour,
the sap moving with me,
under the rising
grass of the field
like a dragged magnet,
the lights of the flowers
coming on in waves
as I walked with the budburst
and the flushing of trees.
If I started now,
I could bring you the Spring
for your birthday.

Continue reading...




era

Twitter Thread: Kid's Letters Inspires Wholesome Vulnerability

Hugh Weber shared a Twitter thread about his 11-year-old's wild ride with the USPS, and it seems to convey a deeper message. Maybe it's a message that the beauty of humanity itself escapes through human beings' vulnerability. Brace yourself, cause this thread has been known to get the feels train rolling. 




era

Joseph Gordon-Levitt Turns Camera Back On Aggressive Paparazzi

This video is an oldie but goldie. Joseph Gordon-Levitt turns the tables on the paparazzi that were bombarding him with cameras and questions. It's a curious thing to see how the paparazzi react when being fed a ration of their own medicine. It's almost as if they don't like it, like really don't like it. 




era

Can virtual therapy help us cope with the coronavirus lockdown?

Many people are turning to virtual therapy and mental health apps to cope with the stress of the coronavirus pandemic, but they may not be as helpful as talking face to face





era

'Amazingly good news': New York healthcare workers not testing positive for coronavirus at higher rate than general public

New York has released more details into who has tested positive for the coronavirus in the state, and Governor Andrew Cuomo said the per cent of healthcare workers with Covid-19 is not higher than the general public.“That is amazingly good news,” Mr Cuomo said during his press briefing on Thursday.





era

Heat, humidity at edge of human tolerance hitting globe

Researchers found that temperature extremes previously thought to be rare have been recorded more than 1,000 times in 40 years.





era

Labour Party: Jennie Formby to stand down as general secretary

The former Unite official says it is the "right time" to move on with the party under new leadership.




era

Coronavirus: MPs urge churches to allow small funerals

Their letter says services can be held with "proper measures in place", amid the Covid-19 outbreak.




era

'Definitely not the real thing': why eracers can't go from the bedroom to the cockpit

With more and more F1 drivers making the move to esports during the lockdown and doing well, could an expert sim racer easily make the leap the other way?




era

Coronavirus: Lockdown life 'a challenge' for vulnerable children

Charities warn some children who are missing out on additional support at school are falling into crisis.




era

Workloads, acceleration, and making Postgres better

#353 — April 29, 2020

Read on the Web

Postgres Weekly

7 Things That Could Be Improved in Postgres — As 1990s dance pop group D:Ream sang in 1994, Things Can Only Get Better.. including Postgres ???? Luckily these are all ‘nice to have’s but I dare say we’ll see some of them (such as automatic tuning and auto-vacuuming improvements) appear over time.

Kaarel Moppel

How The Citus Distributed Query Executor Adapts to a Postgres Workload — Citus is the popular extension for horizontally scaling Postgres and its query executor has seen some huge updates lately.

Citus Data (Microsoft)

eBook: The Most Important Events to Monitor in Your Postgres Logs — In this pganalyze eBook, we are looking at the Top 6 Postgres log events for monitoring query performance and preventing downtime.

pganalyze sponsor

Swarm64 DA 4.0: A Database Acceleration Extension for Postgres — Swarm64 started life as a FPGA-driven way to accelerate Postgres performance, but can now work without FPGAs too. This is not a free product but if you want to give it a run, there’s a trial or it can be spun up from the AWS Marketplace.

Yana Krasteva

Postgres Performance Goalposts — An interesting heuristic from Bruce here on what to do if you expect your connections, queries, or write queries to be above/below certain levels.

Bruce Momjian

A Tale of Password Authentication Methods in Postgres“Let’s say you want to implement a password authentication method in a client/server protocol..” Here’s the story of how Postgres came up with its approaches.

Peter Eisentraut

How to Set application_name When Using psql — As Craig says: “Setting your application name in Postgres is SO USEFUL. It will help a lot for debugging when you’ve got multiple different apps/services connecting to the same database.”

Denish Patel

How to Upgrade Postgres from v11 to v12 on Ubuntu 20.04 — Now that Ubuntu 20.04 is out, this might be on your mind!

Paolo Melchiorre

Working with Amazon Aurora PostgreSQL: What Happened to the Stats? — Apparently there’s a bug with numerous versions of Aurora PostgreSQL that causes certain stats to be lost on restart.

Michael Vitale

Postgres Vision 2020 - Free Online Conference (June 23-24) — Learn how today’s IT leaders are using Postgres. Join from anywhere in the world and listen from 30+ Postgres experts.

EnterpriseDB sponsor

A Deep Dive into PostGIS Nearest Neighbor Search — Take a deep dive into the Postgres and PostGIS internals to find out how K-nearest neighbor accelerates local search.

Martin Davis

My Favorite Postgres Extensions: Part One — A basic high level look at pg_partman and postgres_fdw.

Nawaz Ahmed

Kanel: Generate TypeScript Types from Postgres

Kristian Dupont

Postgres.app: The Easiest Way to Get Started with Postgres on the Mac — I’ve used this for years, it’s super popular, but if there’s just a handful of developers out there who’d benefit from it and don’t know about it, this reminder will be worth it :-) It continues to get very frequent updates.

Jakob Egger, Chris Pastl, and Mattt Thompson

???? Upcoming Events

All in-person events we had listed are cancelled or postponed due to the COVID outbreak, so we're now linking to webinars, livestreams, and similar online events.

If you have any, just hit reply and if it's Postgres related (and either free or not too expensive) we'll include it in a future issue. Just one this week:

  • ???? Postgres Vision 2020 on June 23-24. A full attempt at an online Postgres conference across multiple days with multiple tracks.

???? – requires e-mail address or registration
???? – costs money to participate




era

Coronavirus: what we can learn from the war generation

What can younger people learn from the generations that lived through World War Two?




era

Virus vaccine research 'enormously accelerated'

A vaccine normally takes a decade to develop, but GSK and Sanofi want a viable coronavirus vaccine by the end of next year, GSK chief executive Emma Walmsley says.




era

Leveraging React for Easy Image Management

React is a good tool when it comes to building flexible and reusable UI components. However, it’s “one of those libraries” that cannot handle all the tasks involved in building a full fleshed UI project. Other supporting tools - such as a recently announced React SDK from Cloudinary - are available to provide solutions that the React core cannot.

In such cases where media (images and videos) becomes a heavy task to handle, Cloudinary simplifies the process with the new React SDK. Let’s build and image library with Cloudinary and React using the Cloudinary’s React SDK.

Prerequisites

The only requirements for using Cloudinary in your existing React project are to install the React SDK and the upload widget. If you do not have an existing React project and want to try these examples, take the following steps:

1. Install Dependencies

We need a minimal amount of dependencies so we can focus on building a media library and not structuring a React app:

{
  "name": "img-library",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "watch": "webpack -d --watch",
    "build": "webpack",
    "serve": "serve ./public"
  },
  "author": "",
  "license": "MIT",
  "devDependencies": {
    "babel-core": "^6.18.2",
    "babel-loader": "^6.2.9",
    "babel-preset-es2015": "^6.18.0",
    "babel-preset-react": "^6.16.0",
    "serve": "^1.4.0",
    "webpack": "^1.14.0"
  },
  "dependencies": {
    "axios": "^0.15.3",
    "cloudinary-react": "^1.0.1",
    "react": "^15.4.1",
    "react-dom": "^15.4.1"
  }
}

React (and React DOM) must be used since we are making a React app. The cloudinary-react dependency is Cloudinary’s React SDK, which we will soon see how it works. axios is a tool for making HTTP requests and, in our case, we will use it request images from the Cloudinary server.

# Install dependencies
npm install

2. Setup Webpack

Webpack is our build tool. Only minimal settings are required to have a build running and our React app compiling:

// ./webpack.config.js
var webpack = require('webpack');
var path = require('path');

var BUILD_DIR = path.resolve(__dirname, 'public');
var APP_DIR = path.resolve(__dirname, 'src');

var config = {
    entry: APP_DIR + '/index.jsx',
    output: {
        path: BUILD_DIR,
        filename: 'bundle.js'
    },
    module : {
        loaders : [
            {
                test : /.jsx?/,
                include : APP_DIR,
                loader : 'babel'
            }
        ]
    }
};

module.exports = config;

Basic configuration - an entry, output and loaders to handle the React .jsx files.

3. Entry Points

We need to create an entry point, as we specified in the Webpack configuration, and another entry point for the browser, which is an index.html file:

// ./src/index.jsx
import React, { Component } from 'react';
import { render } from 'react-dom';

class Main extends Component {
    render() {
        return (
           <div className="main">
               <h1>Scotchage</h1>
           </div>
        );
    }
}

render(<Main />, document.getElementById('container'));
<!-- ./public/index.html -->
<html>
<head>
    <!--Stylesheet-->
    <link rel="stylesheet" href="style.css">
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
    <!--Container for React rendering-->
    <div id="container"></div>
    <!--Bundled file-->
    <script src="bundle.js"></script>
</body>
</html>

4. Create Cloudinary Account

You need a Cloudinary account to continue with these examples. Sign up for free and store your credentials safely as shown on the dashboard:

Uploading Images

Before using the React SDK to deliver images from the Cloudinary servers, let’s use the awesome Cloudinary upload widget to upload images. First, we need to add this widget to our index.html:

<!-- ./public/index.html -->
<html>
<head>
   . . .
</head>
<body>
    . . .
    <!-- UPLOAD WIDGET -->
    <script src="//widget.cloudinary.com/global/all.js" type="text/javascript"></script>
    <script src="bundle.js"></script>
</body>
</html>

Next, we create a button, attach an event to it and upload an image once the button is clicked:

import React, { Component } from 'react';
import { render } from 'react-dom';

class Main extends Component {

    uploadWidget() {
        cloudinary.openUploadWidget({ cloud_name: 'CLOUD_NAME', upload_preset: 'PRESET', tags:['xmas']},
            function(error, result) {
                console.log(result);
            });
    }
    render(){
        return (
            <div className="main">
                <h1>Galleria</h1>
                <div className="upload">
                    <button onClick={this.uploadWidget.bind(this)} className="upload-button">
                        Add Image
                    </button>
                </div>
            </div>

        );
    }
}

render(<Main />, document.getElementById('container'));

The uploadWidget member method is the handler invoked by the click event to handle our image upload by calling cloudinary.openUploadWidget. openUploadWidget takes a config object and the upload callback handler. The config object must have at least cloud_name and upload_preset properties with valid values. You can read more about Cloud Names and Upload Presets.

Delivering Images with SDK

The Cloudinary React SDK has three major components, Image, CloudinaryContext and Transformation:

  • Image: This component is responsible for the actual delivery of images. It takes the image ID and asks the server for this image. When the image is provided, it is also responsible for painting the image on the browser.
  • Transformation: This component is used to apply transformations to images delivered with Image.
  • CloudinaryContext: You can specify Cloudinary configuration for each image on the Image component. This can be tedious when you are dealing with multiple images. CloudinaryContext allows you to apply configuration to a group of Images.

Most times you would end up with a structure like this:

<CloudinaryContext>
    <Image>
        <Transformation />
        <Transformation />
    </Image>
    <Image>
        <Transformation />
    </Image>
</CloudinaryContext>

Back to our demo app, we can request an image from the Cloudinary server and display it with the following components:

import React, { Component } from 'react';
import axios from 'axios';
import { CloudinaryContext, Transformation, Image } from 'cloudinary-react';
import { render } from 'react-dom';

class Main extends Component {
    constructor(props) {
        super(props);
        this.state = {
            gallery: []
        }
    }
    componentDidMount() {
    // Request for images tagged xmas       
axios.get('http://res.cloudinary.com/christekh/image/list/xmas.json')
            .then(res => {
                console.log(res.data.resources);
                this.setState({gallery: res.data.resources});
            });
    }
    uploadWidget() {
       // . . .
    }
    render(){
        return (
            <div className="main">
                <h1>Galleria</h1>
                <div className="gallery">
                    <CloudinaryContext cloudName="CLOUDNAME">
                        {
                            this.state.gallery.map(data => {
                                return (
                                    <div className="responsive" key={data.public_id}>
                                        <div className="img">
                                            <a target="_blank" href={`http://res.cloudinary.com/christekh/image/upload/${data.public_id}.jpg`}>
                                                <Image publicId={data.public_id}>
                                                    <Transformation
                                                        crop="scale"
                                                        width="300"
                                                        height="200"
                                                        dpr="auto"
                                                        responsive_placeholder="blank"
                                                    />
                                                </Image>
                                            </a>
                                            <div className="desc">Created at {data.created_at}</div>
                                        </div>
                                    </div>
                                )
                            })
                        }
                    </CloudinaryContext>
                    <div className="clearfix"></div>
                </div>
            </div>

        );
    }
}

render(<Main />, document.getElementById('container'));

Take one more look at the upload code:

 cloudinary.openUploadWidget({ cloud_name: 'christekh', upload_preset: 'idcidr0h', tags:['xmas']},
            function(error, result) {
            . . .

Each image is tagged with xmas, which serves as a way to request images with this tag as a collection. This is exactly what we are using the axios library to do when the component mounts:

axios.get('http://res.cloudinary.com/CLOUDNAME/image/list/xmas.json')
            .then(res => {
                console.log(res.data.resources);
                this.setState({gallery: res.data.resources});
            });

axios uses promises, so whenever the promise resolves in our case, we have a payload of images. We take advantage of React state to update our UI with the fetched resources.

Down to rendering, we configure the CloudinaryContext with our cloud_name, iterate over the gallery state that stores the images and displays them using the Image component. We also apply few transformations using the Transformation component.

For security reasons, Cloudinary will not allow you to make such request from the client unless you tell it to. The best way to go is to use the admin API via a backend SDK and then send the resource list to the client.

Updating State with New Uploads

We are able to upload images and request for images to be displayed on the user’s browsers. Here is how we update the displayed images instantly when the user uploads a new image:

uploadWidget() {
        let _this = this;
        cloudinary.openUploadWidget({ cloud_name: 'CLOUDNAME', upload_preset: 'PRESET', tags:['xmas']},
            function(error, result) {
            // Update gallery state with newly uploaded image
                _this.setState({gallery: _this.state.gallery.concat(result)})
            });
    }

Rather than logging the uploaded image information to the console, we update the gallery state, which bears the list of requested images, by concatenating the uploaded result to the gallery.

Image Management Simplified

Image uploads, transformation and delivery has never been easier. These tasks have been a serious challenge for developers. Cloudinary has created a way to abstract all this hard work, enabling you to simply plug and play.




era

Esperance 1-1 (6-5 pens) CD Guadalajara (UAE 2018)

Nine-man Esperance ended their FIFA Club World Cup UAE 2018 campaign on a high after a tense 6-5 penalty shoot-out win against Chivas in the match for fifth place.




era

A general view of the stadium during the FIFA U-17 World Cup India 2017 final

KOLKATA, INDIA - OCTOBER 27: A general view of the stadium during the FIFA U-17 World Cup India 2017 tournament at Vivekananda Yuba Bharati Krirangan on October 27, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images)




era

A general view of the stadium during the FIFA U-17 World Cup India 2017 final

KOLKATA, INDIA - OCTOBER 27: A general view of the stadium during the FIFA U-17 World Cup India 2017 tournament at Vivekananda Yuba Bharati Krirangan on October 27, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images)




era

A general view of the stadium during the FIFA U-17 World Cup India 2017 final

KOLKATA, INDIA - OCTOBER 27: A general view of the stadium during the FIFA U-17 World Cup India 2017 tournament at Vivekananda Yuba Bharati Krirangan on October 27, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images)




era

A general view of Spain dressing room

KOLKATA, INDIA - OCTOBER 28: A general view of Spain dressing room prior to the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images)




era

A general view of Spain dressing room

KOLKATA, INDIA - OCTOBER 28: A general view of Spain dressing room prior to the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images)




era

A general view of England dressing room

KOLKATA, INDIA - OCTOBER 28: A general view of England dressing room prior to the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images)




era

A general view of England dressing room

KOLKATA, INDIA - OCTOBER 28: A general view of England dressing room prior to the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images)




era

A general view of England dressing room

KOLKATA, INDIA - OCTOBER 28: A general view of England dressing room prior to the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images)




era

A general view of England dressing room

KOLKATA, INDIA - OCTOBER 28: A general view of England dressing room prior to the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images)




era

A general view of England dressing room prior to the FIFA U-17 World Cup India 2017 Final

KOLKATA, INDIA - OCTOBER 28: A general view of England dressing room prior to the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images)




era

A general view of the Spain dressing room prior to the FIFA U-17 World Cup final

KOLKATA, INDIA - OCTOBER 28: (EDITOR'S NOTE: Image was created as an Equirectangular Panorama. Import image into a panoramic player to create an interactive 360 degree view) A general view of the Spain dressing room prior to the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images)




era

A general view of action during the FIFA U-17 World Cup India 2017 3rd Place match

KOLKATA, INDIA - OCTOBER 28: A general view of action during the FIFA U-17 World Cup India 2017 3rd Place match between Brazil and Mali at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images)




era

A general view of the Spain team

KOLKATA, INDIA - OCTOBER 28: A general view of the Spain team prior to the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images)




era

Club World Cup veteran Basanta aims to save best for last