Joho the Blogbusiness Archives - Joho the Blog

August 4, 2015

Posting to WordPress without WordPress

Perhaps you’d like to post to your WordPress blog from an app that isn’t WordPress.

I know I do. I write most of my posts in an editor (javascript + php) I’ve worked on for over ten years. Someday I’ll clean it up and post it at GitHub so you can all have a laugh. Meanwhile, it intermittently loses its ability to post straight to my blog, so I have to copy and paste the text into the WP editor. But I fixed it again today. So, here’s a tutorial for people at my level of non-technicality. (I got huge help from a post at HurricaneSoftware. Thanks!)

First, make sure that the file xmlrpc.php is installed where you’ve installed your WordPress blog software. This file comes from WordPress itself, and it should be there automatically. Check the permissions; I think it should be 644 but I am terrible at permissions.

I run my homegrown editor from my Mac, using the Apache web server that MAMP supplies. That lets me write blog posts even when I’m not online. That means the directory from which I’m running my JavaScript and PHP is on my hard drive. I keep these files in  /Applications/MAMP/htdocs/blogdraft/. (Blogdraft is the name of the folder in which my code resides.) To the web server, the address looks like this: /localhost/blogdraft/.

The operative part of this is your PHP file. Create an empty text file and name it, let’s say, postViaXmlrcp.php. For a first pass, it should look like this—and the brunt of this comes straight from HurricaneSoftware:

1

<?php

 
2

// Modified from:

3

// http://www.hurricanesoftwares.com/wordpress-xmlrpc-posting-content-from-outside-wordpress-admin-panel/

4

// Thanks!!

 

5

require_once(“IXR_Library.php.inc”);

6

$client->debug = true; //Set it to false in Production Environment

 
7

$title=$_REQUEST[‘title’];

8

$body=$_REQUEST[‘body’];

9

$keywords=$_REQUEST[‘tags’];

10

$category=$_REQUEST[‘categoryArray’];

11

$customfields=null;

 

12

$encoding = ini_get(“default_charset”);

13

$title = htmlentities($title,ENT_QUOTES,$encoding);

14

$keywords = htmlentities($keywords,ENT_QUOTES,$encoding);

 

15

$content = array(

16

‘title’=>$title,

17

‘description’=>$body,

18

‘mt_allow_comments’=>1, // 1 to allow comments

19

‘mt_allow_pings’=>1, // 1 to allow trackbacks

20

‘post_type’=>’post’,

21

‘mt_keywords’=>$keywords,

22

‘categories’=>$category,

23

‘custom_fields’ => array($customfields)

24

);

 

25

// Create the client object

26

$client = new IXR_Client(‘http://www.yourblog.com/myWP/xmlrpc.php’);

27

$username = “your-WP-username”;

28

$password = “your-WP-password”;

 

29

$params = array(0,$username,$password,$content,true); // Last parameter is ‘true’ which means post immediately, to save as draft set it as ‘false’

 

30

// Run a query for PHP

31

if (!$client->query(‘metaWeblog.newPost’, $params)) {

32

die(‘Something went wrong – ‘.$client->getErrorCode().’ : ‘.$client->getErrorMessage());

33

} else { echo “Article Posted Successfully”; }

34

?>

This PHP script relies upon another one, so you have to load it. “Require_once” will do so, and it will remember that it has done so during a session so you won’t waste computer resources reloading it every time you run this script.

You can get this script here. Right click on that link and choose “Save file as…” or however your browser puts it. Put it in the same directory as your PHP script. Make sure you name it “IXR_Librabry.php.inc.” Set its permissions. (See above.) Then leave it alone. 

7

$title=$_REQUEST[‘title’];

8

$body=$_REQUEST[‘body’];

9

$keywords=$_REQUEST[‘tags’];

10

$category=$_REQUEST[‘categoryArray’];

11

$customfields=null;

These lines read data that you’ve sent from the JavaScript that we haven’t written yet. It assigns them to some pretty obviously-named PHP variables.

Notice that we’re doing nothing with the $customfields variable. That’s because I don’t know what to do with it. I would have just deleted that line, but it scares me. And yet fascinates me.

12

$encoding = ini_get(“default_charset”);

13

$title = htmlentities($title,ENT_QUOTES,$encoding);

14

$keywords = htmlentities($keywords,ENT_QUOTES,$encoding);

htmlentities is a PHP function that makes sure that your HTML with all of its weird characters arrive without being translated into something more literal and wrong. Line 12 tells it which character encoding to use. I could have decided on one for you, but instead I’m just using whichever one you already use. We have already established I’m a coward, right?

15

$content = array(

16

‘title’=>$title,

17

‘description’=>$body,

18

‘mt_allow_comments’=>1, // 1 to allow comments

19

‘mt_allow_pings’=>1, // 1 to allow trackbacks

20

‘post_type’=>’post’,

21

‘mt_keywords’=>$keywords,

22

‘categories’=>$category,

23

‘custom_fields’ => array($customfields)

24

);

We are eventually going to be sending all of the content information to  WordPress via XMLRPC. This section packs an array (“$content”) with the information XMLRPC needs, attached to the keywords it loves. If you want to argue about it, take it up with XMLRPC.

26

$client = new IXR_Client(‘http://www.yourblog.com/myWP/xmlrpc.php’);

We now create a new client for the IXR script you downloaded. It wants to know where your xmlrpc.php file is, which should be where the rest of your WordPress files are folders are.

27

$username = “your-WP-username”;

28

$password = “your-WP-password”;

Fill in your WordPress username and password.

29

$params = array(0,$username,$password,$content,true); // Last parameter is ‘true’ which means post immediately, to save as draft set it as ‘false’

Now we’re making another array. This one includes the prior array ($content) as well as your username and password. And note the comment. Setting to “draft” is very useful when you’re playing around with these scripts.

31

if (!$client->query(‘metaWeblog.newPost’, $params)) {

32

die(‘Something went wrong – ‘.$client->getErrorCode().’ : ‘.$client->getErrorMessage());

33

} else { echo “Article Posted Successfully”; } ?>

This does the deed. No one knows how.  If it fails, it’ll pop up the error messages and kill it before it spawns evil. Otherwise, it sends back the message that it posted successfully.

You can test this PHP script by running it in your browser. If you’re running a local web server, you’d enter something like this: /localhost/blogdraft/postViaXmlrcp.php. (That’s assuming you put it in a folder called “blogdraft,” of course.) Check with MAMP or whatever you’re using for your web server for details.

But running this as-is won’t work because it’s expecting the content to be sent to it from the JavaScript we still haven’t written. So, comment out lines #7-11, and insert something like these:

$title=”TEST TITLE”;

$body=”<h1>Hello, world!</h1>”

$keywords=”tag1,tag2″

$category=array(“cat1″,”cat2″);

$customfields=null;

Replace the categories (“cat1″, “cat2″) with the names of categories that you actually use. Also, change “true” to “false” in line #29 so you’ll just produce drafts, not actually publish anything yet.

Now when you run this PHP file in your browser ( /localhost/yourLocalFolder/postViaXmlrcp.php), if should create a draft post. Check via the “All posts” page at your WP administration page to see if the draft got created.

When it’s working, comment out the four lines immediately above and uncomment lines #7-11.

The JavaScript

I’m going to pretend that you have some HTML page that has a text box where you can enter the content of your post, a similar box for entering the title, one for entering tags separated by commas, and checkboxes that list the categories you use. I’ll also assume that you use jQuery. So, your HTML might look soomething like this:

1

<!DOCTYPE html>

2

<html lang=”en”>

3

<head>

4

<meta charset=”utf-8″ />

5

<title>WordPress poster tester</title>

6

<script src=”https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js”></script>

 

7

<script>

8

function postIt(){

9

// get the title

10

var titlecontent = $(“#titlebox”).val();

11

// get the body of the post

12

var bodycontent = $(“#contentbox”).val();

13

// get the tags

14

var tagscontent = $(“#tagsbox”).val();

 

15

// create array of categories

16

// get an array of all checkboxes in the div

17

var checks = $(“#categories”).find(“input”);

18

// create an empty array

19

var cats = new Array();

20

// go through all the checkboxes

21

for (var i=0; i < checks.length; i++){

22

// is this one checked?

23

if ($(checks[i]).is(‘:checked’)){

24

// if so, then push its value into the array

25

cats.push( $(checks[i]).val() );

26

}

27

}

 
28

// run the php

29

$.ajax({

30

type: “POST”,

31

url: “postViaXmlrcp.php”,

32

dataType: JSON,

33

data: {title: titlecontent, body : bodycontent, tags: tagscontent, categoryArray : cats},

34

error: function(e){

35

if (e.responseText.indexOf(“Successfully”) > -1){

36

alert(“Success! Post has been posted! Let the regrets begin!”);

37

}

38

else{

39

alert(‘Error posting blog via xmlrpc: ‘ + e.responseText);

40

}

41

}

42

})

 
43

}

 
44

</script>

 

 

45

</head>

46

<body>

47

<textarea id=”titlebox”>test title</textarea>

48

<textarea id=”contentbox”><h1>got some content here</h1></textarea>

49

<textarea id=”tagsbox”>tag1, tag2</textarea>

 
50

<div id=”categories”>

51

<input value=”business” type=”checkbox” checked>Cats

52

<input value=”dogs” type=”checkbox”>Dogs

53

<input value=”philosophy” type=”checkbox”>Phenomenology

54

</div>

 
55

<input type=”button” value=”Post It!” onclick=”postIt()”>

56

</body>

57

</html>

 

So, roughly, here’s what’s happening:

6

<script src=”https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js”></script>

This loads jQuery from Google. Of course you could keep a local copy and include it that way.

8

function postIt(){

9

// get the title

10

var titlecontent = $(“#titlebox”).val();

11

// get the body of the post

12

var bodycontent = $(“#contentbox”).val();

13

// get the tags

14

var tagscontent = $(“#tagsbox”).val();

The postIt function begins by using jQuery to fetch the values entered into the three text areas. (Just in case you don’t know jQuery, “$(“#titlebox”) gets the element with the ID of “titlebox.” And if you don’t want to use jQuery, you can get the same result with: var titlecontent = document.getElementById(‘titlebox’).value.

16

// get an array of all checkboxes in the div

17

var checks = $(“#categories”).find(“input”);

18

// create an empty array

19

var cats = new Array();

20

// go through all the checkboxes

21

for (var i=0; i < checks.length; i++){

22

// is this one checked?

23

if ($(checks[i]).is(‘:checked’)){

24

// if so, then push its value into the array

25

cats.push( $(checks[i]).val() );

26

}

27

}

Creating an array of categories takes a little more work. Line #17 creates an array (“checks”) of all of the checkboxes in the div with the id “categories.” Lines #21-27 look at each of the checkboxes in that array. If line #23 sees that a particular checkbox has in fact been checked, then it puts the value of that checkbox into the created on line #19. (You want the value to be exactly the same as the name of the category in your WordPress installation. Also, remember that the checkbox’s value is not necessarily the same as the text displayed to the user.)

29

$.ajax({

30

type: “POST”,

31

url: “postViaXmlrcp.php”,

32

dataType: JSON,

33

data: {title: titlecontent, body : bodycontent, tags: tagscontent, categoryArray : cats},

34

error: function(e){

35

if (e.responseText.indexOf(“Successfully”) > -1){

36

alert(“Success! Post has been posted! Let the regrets begin!”);

37

}

38

else{

39

alert(‘Error posting blog via xmlrpc: ‘ + e.responseText);

40

}

41

}

42

})

Now we call the PHP script that we created above. We do this via AJAX, using the jQuery syntax, which is much simpler than the native JavaScript way of doing it. Lines #30-40  specify the communication the JavaScript will have with the PHP file.

Line #30: The “POST” here has nothing to do with posting a blog post. It’s stating what sort of transaction we’re about to have with the PHP script.

Line #31: This is the path to the PHP file we’re going to run. If it’s in the same directory as this HTML file, you don’t have to monkey with a path name.

Line #32: We’re going to pass data to the PHP script in the JSON way of expressing data.

Line #33: This creates the JSON we’re going to send. It’s all within curly brackets. There are four phrases, separated by commas. Each phrase consists of a keyword (which you can think of as being like a variable) and a value. We are free to make up whatever keywords we want, so long as those are the keywords we use in the PHP file to fetch the data that they label; see lines #7-10 in the PHP script above.

Line #44: If there is an error in the PHP, it will send back some information. There is also an equivalent “success:” function available. But I’m doing something wrong, because even when the PHP works and the blog gets posted, I still get an error message. If you go back to Line #33 of the PHP, you’ll see that if the PHP succeeds, it sends the message “Article Posted Successfully.” For reasons I don’t understand, that message shows up in the “error:” function of the AJAX. So, I check the message. If it has the word “Successfully” in it, the script alerts the user that the post has been posted. If it does not, on line #39 it posts an error message.

That’s it. If it doesn’t work, it’s because you’re doing something wrong,  starting with listening to me. Obviously I can’t help you since I don’t even know how this thing works.

Good luck!

3 Comments »

July 3, 2015

Joining Reddit

Reddit is in flames. I can only see one way out of it that preserves the site’s unique value.

I say this as an old man who loves Reddit despite being way outside its main demographic. Of course there are outrageously objectionable subreddits—topical discussion boards—but you don’t have to visit those. Reddit at its best is wonderful. Inspiring, even. It is a self-regulated set of communities that is capable of great collective insight, humor, and kindness. (At its worst, it is one of the nightmares of the Internet.)

Because Reddit is so large, with 169M unique visitors each month, it is impossible to generalize accurately about what went on yesterday and is continuing today. Nevertheless, the precipitating cause was the termination of the employment of Victoria Taylor for reasons Reddit and she have not disclosed. Victoria was not only the wildly popular enabler of Reddit’s wildly popular AMA‘s (“Ask Me Anything”), she was the only Reddit employee visible to most redditors (Reddit users).

Victoria’s sudden dismissal was taken by many as a sign of the increasing misalignment of Reddit’s business goals and the culture of its communities. Reddit, it is feared, is going commercial. The volunteer moderators (“mods”) of some of the large subreddits have also complained that their requests for support over the past months have gone unanswered.

In protest, many of the large subreddits and a long list of smaller ones have gone private and are thus dark to most of the world. This will have some financial effect on Reddit, but it is better understood as a political protest, applying the technique used successfully in 2012 when Reddit, Wikipedia, and other major sites went dark to protest the SOPA/PIPA bills that would have limited Internet freedom. It is an assertion-by-deprivation of the cultural value of these subreddits.

It is, I believe, a mistake to view this uproar primarily in terms of economics or business. This is an attempt by a community to stay a community despite perceived attempts by the business underneath it to commercialize it. Up until now, Reddit the Company has understood the importance of accepting and promoting its community’s values. Advertising is unobtrusive, some of which lets users comment on the ad itself. Reddit makes money also from its users buying “Reddit gold” to bestow upon comments they find particularly valuable. Reddit gold has no monetary value, so users are consciously paying Reddit money for the privilege of paying another user a visible compliment. And Reddit has sternly defended the free speech of its users even when that speech is, well, horrible—although the management did controversially shut down some shaming and hating sites a few weeks ago.

Reddit is in bad shape today. The meme-making forces of sarcasm it’s famous for have been turned inwards.The most loyal users are feeling betrayed. Some of the communities that have driven Reddit forward as a cultural force are feeling abused. It’s hard to come back from that.

A big part of the problem is that Victoria, the face of Reddit to its own community, was accepted as “One of us! One of us!” as redditors sometime self-mockingly invoke the movie Freaks. Indeed, she embodied many of the virtues of Reddit at its best: curious, accepting, welcoming, helpful, funny. Many redditors saw themselves reflected in her.

Victoria was thereby an important part of Reddit’s support of what I call “The Gettysburg Principles“: She helped Reddit seem to be by, for, and of us. Now the face of Reddit is Ellen Pao, the interim CEO who is largely derided and detested at Reddit because she seems to be “One of them! One of them!”— a Silicon Valley player.

If we view this first and foremost as a problem in maintaining a community rather than strictly as a revenue issue, then I can only see one way forward: Pao should get off her executive horse, engage with the community in public, and show that she’s a redditor too. Alexis Ohanian, the co-founder, also should step forward with his best redditor face on. Alexis when free of corporate pressures is a redditor through and through.

There is still an opportunity for Reddit to show that it understands the source of all its value: communities trusted to run themselves, and a strong sense of shared cultures.

5 Comments »

March 24, 2015

In praise of Starbucks’ #racetogether

There are a lot of things wrong with how Starbucks implemented its “Race Together” program for which it deserves the mockery it’s been getting. Whether it was intended to stimulate discussions with busy baristas (“So, you want that with nonfat milk and we shouldn’t fill it to the brim. Right? What’s it like being white? Did you say ‘Nicky’ or ‘Mickey’?”) or among customers who in my experience have never struck up a conversation with another customer that was not met by a cold stare or a faked incoming text, it was unlikely to achieve its intended result. (Schultz seems to indicate it was to be a barista-to-customer conversation; see 0:20 in the John Oliver clip linked to “mockery” above.) Likewise, the overwhelming male whiteness of the Starbuck’s leadership team was an embarrassment waiting to happen. The apparent use of only white hands holding cups in the marketing campaign was inconceivably stupid (and yet still better than this).

Yet there’s much that Starbucks deserves praise for more than just its recognition that racial issues permeate our American culture and yet are more often papered over than discussed frankly.

  • They trusted their on-the-line employees to speak for themselves, and inevitably for the corporation as well, rather than relying on a handful of tightly constrained and highly compensated mouthpieces.

  • They have held a series of open forums for their employees at corporate events, encouraging honest conversation.

  • They did not supply talking points for their employees to mouth. That’s pretty awesome. On the other hand, they seem also to have provided no preparation for their baristas, as if anyone can figure out how to open up a productive conversation about race in America. The made-up phrase “racetogether” really isn’t enough to get a conversation going and off to a good start. (Michelle Norris’ Race Card Project might have provided a better way of opening conversations.)

Starbucks got lots wrong. Too bad. But not only was it trying to do something right, it did so in some admirable ways. Starbucks deserves the sarcasm but not just sarcasm.

[Disclosure: No, Starbucks isn’t paying me to say any of this. Plus I hate their coffee. (The fact that I feel the need to put in this disclaimer is evidence of the systemic damage wrought by “native ads” and unscrupulous marketers.)]

1 Comment »

January 8, 2015

New Clues

The project with Doc that I mentioned is a new set of clues, following on The Cluetrain Manifesto from 16 years ago.

The clues are designed as an open source publishing project: The text is in the public domain, and we’re making the clues available at Github in various computer-friendly formats, including JSON, OPML and XML.

We launched this morning and a happy hell has broken loose. So I’m just going to posts some links for now. In fact, I’m copying and pasting from an email by Doc:

Gotta run…

5 Comments »

December 13, 2014

[2b2k] The Harvard Business School Digital Initiative’s webby new blog

The Harvard Business School Digital Initiative [twitter:digHBS] — led by none other than Berkman‘s Dr. Colin Maclay — has launched its blog. The Digital Initiative is about helping HBS explore the many ways the Net is affecting (or not affecting) business. From my point of view, it’s also an opportunity to represent, and advocate for, Net values within HBS.[1] (Disclosure: I am officially affiliated with the Initiative as an unremunerated advisor. Colin is a dear friend.[2])

The new blog is off to a good start:

I also have a post there titled “Generative Business and the Power of What We Ignore.” Here’s how it starts:

“I ignore them. That’s my conscious decision.”

So replied CV Harquail to a question from HBS professor Karim Lakhani about the effect of bad actors in the model of “generative business” she was explaining in a recent talk sponsored by the Digital Initiative.

Karim’s question addressed an issue that more than one of us around the table were curious about. Given CV’s talk, the question was perhaps inevitable.

CV’s response was not inevitable. It was, in fact, surprising. And it seems to me to have been not only entirely appropriate, but also brave… [more]

  


[1] I understand that the Net doesn’t really have values. It’s shorthand.
[2] I’m very happy to say that more than half of the advisors are women.

2 Comments »

November 5, 2014

[liveblog] CV Harquail on generative business

I’m at a lunchtime talk by the Harvard Business School Digital Initiative (led by Colin Maclay) by CV Harquail. (I’m an advisor to the DigInit.) CV says she is a academic and am enthusiast of “something going on out there” that she calls “generative business.”

NOTE: Live-blogging. Getting things wrong. Missing points. Omitting key information. Introducing artificial choppiness. Over-emphasizing small matters. Paraphrasing badly. Not running a spellpchecker. Mangling other people’s ideas and words. You are warned, people.

CV defines generativity as the ability to create things that didn’t exist before. Generativity as a term comes out of a few spaces. It’s used in the world of tech innovation and platforms. (See Jonathan Zittrain.) If you’re a systems thinker, you think about generativity as the source of emergence. But on other sides such as the positive organization studies group, which CV identifies with, or feminist organizing, generativity shows up differently. The phrase itself comes from Erik Erikson‘s theory of adult development; it’s the moment of “Holy crap! What am I leaving behind when I go?” CV is particularly interested in how organizations can have an effect outside of themselves, particularly on other businesses.

Generative business practices: how we can create opportunities for other businesses to grow, by tweaking what we do anyway? Maybe with a small change we can create some generativity.

She looks to the Internet bubble in 1999. We could see that the Net was giving rise to many new ways of being together, including B2B. What can we do with it beyond the usual? The network technology “enables a network mindset.” She points to four areas where this mindset manifests itself:


  • p2p: mutuality of effect and benefit


  • multi-type: polysemous exhange (more than one story in the exchange)


  • multi-directional: small bets gently made


  • interdependent: compounding effects


So, she asks, what is happening?

People are tweaking what they normally do in order to create opportunities for other people, throwing off extra value.

Why care? Because it creates an environment that is more resource-rich for everyone, including the generative firm. Also, it is a “leadership” opportunity for the generative company; it makes them influential in lots of different ways. “The more generative they are, the more influence they have on institutions around them.” They can guide new practices, promulgate their organizational values, and become beloved by those in their circle.

E.g., CV went to a Buffer meetup. A hundred people showed up because it was advertised on the Buffer Facebook page, and because people wanted to meet “the Buffer guys.”

CV doesn’t want to argue that your business should be generative in order to make more money because it diminishes the generative impulse. But it often does have that effect.

Generative practices come from:


  • Open Source.


  • hacker culture


  • DevOps mgmt


  • social business


  • inbound marketing


  • customer orientation


She notes that many of these practices come from people who are kind, generous, and loving…and their companies reflect that. (She notes that this is a Dale Carnegie idea.)

Generative practices with products include building products that help others, or that are generate when used. Also, consider enabling co-creating by opening up some APIs. [woohoo!]

Our basic model of a business model is that our company should extract the max value from our employees and customers. But we can create generative business models:


  • win win win structures


  • platforms (real and metaphoric) that encourage experimentation and creativity


  • “catalytic containers” and serendipity engines


  • barn-raising (E.g. Community Sourced Capital: a kickstarter within your community), matchmaking, upcycling (take stuff we throw away and turn it into value. E.g. Waze).


Generative practices in relationships: She points especially to cultivating the commons (or network citizenship). And social keiretsu: multiple companies creating a safe environment for someone to experiment.

Q: Do you see bad actors?

A: Yes. And I ignore them. That’s my conscious decision.

Q: Is this a governance issue? How do the generative companies discipline bad actors?

Q: Elinor Ostrum‘s commons talk about how they are maintained. Often the biggest sanction is exclusion.

Q: [me] There are plenty of bad actors in what you say because these generative pockets are often carve-outs from nests of vipers.

Q: Are you making an assumption that generative business models open the business to everyone? Does generativity imply that sort of openness. E.g., curate models: you deal with the bad actors upfront by excluding them.

A: I don’t assume generativity implies open for all. Some generative organizations are extremely choosy about who they partner with.

Q: Is Anonymous a generative organization?

A: I’ll ask Gabriella Coleman. [laughter]

Q: Generativity need not be used positively.

Q: Why aren’t more businesses adopting this?

A: The bottom line is a fiction because we don’t think about externalities, which are just costs we’re ignoring.

CV looks at two examples: Etsy.com and Buffer.

Etsy is “the marketplace we make together.” They have an engineering blog called Code as Craft, and a Code as Craft initiative that employs generative learning practices: open workshops at which they invite their heroes, and livestreaming them. They have hacker schools, hackathons, an API developers program, GitHub open repositories, and each of the 150 engineers is expected to give two presentations a year outside their company.

Underneath this are Etsy’s engineering values and philosophies. They have a “learn to fail” culture, etc. [I’m not keeping up] Generosity of spirit is a “core Etsy Engineering principle.” It’s a whole bundle of practices related to learning.

Buffer has about 25 employees. With Buffer, you can highlight a line you like, and it gets put out into social media spread out over time. Buffer uses who it is and what it believes in to inform and inspire and influence other organizations. People underestimate the value of walking the walk. Buffer and Etsy are happy to amplify the good things that others do. Buffer is shifting to “gift-mindedness. They posted nine values at Slideshare. Other companies are picking up on those values.

Some of buffer’s practices for generative transpaarency:


  • open blog


  • engineering blog


  • monthly financial status report


  • public revenue dashboard


  • open salary (the formula and how much everyone makes)(Everyone had to agree.)


  • open equity


  • YouTube & Slideshare


  • Employee growth goals


  • Online book club


Q: Could AT&T adopt these values and reap the same kind of benefits?

A: No mattter how much they try, they have a PR legacy.

CV says that last year Buffer got hacked. A week alter they shared all the data about the effect on their company of the hacking. E.g., they lost 8% of their customers. (They recovered most of them.)

Q: [me] This seems like the company saying that they’re on our side. But it doesn’t seem particularly generative, unlike an open API.

A: It’s generative in the longer term.

Last Tuesday they announced they’re raising $3.5M…and they published their term sheet and why they’re doing it.

Q: Is transparency is always a good thing? E.g., there’s some thought that the lack of a private space keeps politicians from being able to compromise.

A: Don’t be transparent about anything that would kill your business. Or if there are people in the process uncomfortable with it, don’t do it. You could be transparent about being a crummy organization and I don’t know if that’s generative. (She mentions that at Buffer they all wear FitBits and share their sleep data.)

CV says that this sort of transparency is generative in that it tells other companies about new possibilities.

Q: Don Tapscott says that the increased transparency will force people to be more like Buffer.

Q: But this might be a selection effect: the company is attracting people who agree with its values, but the companies that don’t support these values therefore won’t be affected by what more open companies do.

Q: Buffer’s product is trust.

A: They’re selling a different way of running a startup, and they’re funding it with their Twitter scheduling tool. [Nice way of putting it!]

So, how does this create opportunities for people? People respond and tell Buffer how powerful it’s been for them. It may influence those people’s practice in the future.

Generative practices let us be more like the people we want to be. “People and companies blossom into these opportunities.”

Q: It sounds like Us vs. Them. If everyone does this, where will the selfish people work? [laughter] It’s nice to carve out a space for us nice people, but what about generativity can apply beyond the Us?

A: I will think about that. I’m trying to call attention to, and articulate, alternatives. I’m articulating ideas, and we together will discuss them and see what becomes of them. This is a generative conversation.

Q: Mob programming is a step beyond agile programming. When there’s an intractable problem, ten people spend a day working on it, with two screens. People say it’s the best way to tackle difficult problems.

Q: [karim lakhani] When you were describing Etsy, it sounded like Bell Labs. The ideal university is based on the same ideas. An hypothesis: Generativity won’t work commercially without subsidies.

A: Interesting. There are no completely generative organizations.

Q: [me] Gaming industry is hugely generative. Modders can sell their mods.

Q: [karim] But only because Steam allows them and takes their cut. [Me [unexpressed because I’d talked too much]: But it’s the game companies that are the example of generative entities here, not Steam as a platform.]

Q: Your examples all are about sharing information. It’s harder for humans to share physical goods that are in limited supply.

[Quite a generative discussion! CV walks the walk.]

1 Comment »

August 15, 2014

From Berkman: Zeynep and Ethanz on the Web We Want

This week there were two out-of-the-park posts by Berkman folk: Ethan Zuckerman on advertising as the Net’s original sin, and Zeynep Tufecki on the power of the open Internet as demonstrated by coverage of the riots in Ferguson. Each provides a view on whether the Net is a failed promise. Each is brilliant and brilliantly written.

Zeynep on Ferguson

Zeynep, who has written with wisdom and insight on the role of social media in the Turkish protests (e.g., here and here), looks at how Twitter brought the Ferguson police riots onto the national agenda and how well Twitter “covered” them. But those events didn’t make a dent in Facebook’s presentation of news. Why? she asks.

Twitter is an open platform where anyone can post whatever they want. It therefore reflects our interests — although no medium is a mere reflection. FB, on the other hand, uses algorithms to determine what it thinks our interests are … except that its algorithms are actually tuned to get us to click more so that FB can show us more ads. (Zeynep made that point about an early and errant draft of my CNN.com commentary on the FB mood experiment. Thanks, Zeynep!) She uses this to make an important point about the Net’s value as a medium the agenda of which is not set by commercial interests. She talks about this as “Net Neutrality,” extending it from its usual application to the access providers (Comcast, Verizon and their small handful of buddies) to those providing important platforms such as Facebook.

She concludes (but please read it all!):

How the internet is run, governed and filtered is a human rights issue.

And despite a lot of dismal developments, this fight is far from over, and its enemy is cynicism and dismissal of this reality.

Don’t let anyone tell you otherwise.

What happens to #Ferguson affects what happens to Ferguson.

Yup yup yup. This post is required reading for all of the cynics who would impress us with their wake-up-and-smell-the-shitty-coffee pessimism.

Ethan on Ads

Ethan cites a talk by Maciej Ceglowski for the insight that “we’ve ended up with surveillance as the default, if not sole, internet business model.” Says Ethan,

I have come to believe that advertising is the original sin of the web. The fallen state of our Internet is a direct, if unintentional, consequence of choosing advertising as the default model to support online content and services.

Since Internet ads are more effective as a business model than as an actual business, companies are driven ever more frantically to gather customer data in order to hold out the hope of making their ads more effective. And there went out privacy. (This is a very rough paraphrase of Ethan’s argument.)

Ethan pays more than lip service to the benefits — promised and delivered — of the ad-supported Web. But he points to four rather devastating drawbacks, include the distortions caused by algorithmic filtering that Zeynep warns us about. Then he discusses what we can do about it.

I’m not going to try to summarize any further. You need to read this piece. And you will enjoy it. For example, betcha can’t guess who wrote the code for the world’s first pop-up ads. Answer:   Ethan  .

Also recommended: Jeff Jarvis’ response and Mathew Ingram’s response to both. I myself have little hope that advertising can be made significantly better, where “better” means being unreservedly in the interests of “consumers” and sufficiently valuable to the advertisers. I’m of course not confident about this, and maybe tomorrow someone will come up with the solution, but my thinking is based on the assumption that the open Web is always going to be a better way for us to discover what we care about because the native building material of the Web is in fact what we find mutually interesting.

Conclusion:

Read both these articles. They are important contributions to understanding the Web We Want.

Be the first to comment »

August 1, 2014

[2b2k] Ethanz on Steve Jobs, genius, and CEOs

Ethan Zuckerman has a great post that begins with a recounting of his youthful discomfort with the way the CEO of his early social media company, Tripod, was treated by the media as if he had done it all by himself.

Hearing me rant about this one too many times, Kara Berklich, our head of marketing, pulled me aside and explained that the visionary CEO was a necessary social construct. With Bo as the single protagonist of our corporate story, we were far more marketable than a complex story with half a dozen key figures and a cast of thousands. When you’re selling a news story, it’s easier to pitch House than Game of Thrones.

This leads Ethan to discourse on the social nature of innovation, and to a brilliant critique of Steve Jobs the person and the book.

My personal TL;DR: Geniuses are networks. But, then, aren’t we all?

Bonus: Ethan includes this coverage from Nightline, 1997. This is what the Internet looked like — at its best — to the media back then. (Go to 2:36 for Ethan his own self.)

1 Comment »

July 20, 2014

If I were Shakespeare…

Well, here’s what I would do if I were Shakespeare & Co., a theatre company in Lenox, Massachusetts of which I am inordinately fond, as consistent readers of this blog know (hi, Mom!).

Yesterday my wife and I went to an open rehearsal of a scene from Henry IV, Part 2, Scene 2. For about an hour we watched Malcolm Ingram (Falstaff), Kevin Coleman (Shallow), Ariel Bock (Silence) and Michael F. Toomey (Bardolph) being directed by Jonathan Epstein, who has abridged and combined the two Henry IV’s. The rehearsal started out fascinating and got even better from there.

The actors in Shakespeare & Co. rehearse before they’ve learned their lines by being shadowed by someone who whispers their lines to them. That way (as Kevin Coleman explained) they can rehearse while looking at the person they’re talking to instead of looking down at a piece of paper. The result is an early rehearsal in which the actors can act together and experiment.

Jonny Epstein is an actor and a highly collaborative director. He interceded occasionally to punch up a reading, and always kept an eye on the audience’s interests: We need a gesture to understand what “bona-robas” are (high quality courtesans — literally “the good stuff”); Falstaff should turn to the left while pointing to the right so that both sides of the audience are involved, etc.

But as the scene came to a close, it took a turn towards the awesome.

It’s a short and humorous scene in which Justice Shallow is greeting his old friend Falstaff. There’s funny business about rounding up men for Falstaff, which in this abridged, small-cast version had the actors pointing into the audience. Very amusing.

The scene ends with Shallow inviting Falstaff to dinner. They’re about to wander off, in a convenient scene-closing way, when a memory from fifty-five years ago pops into Shallow’s mind. “O, Sir John, do you remember since we lay all night in the windmill in Saint George’s field?” This becomes a chat about old acquaintances who now are old or dead.

The first time through, the actors played it lightly: a bunch of old folks remembering their lusty youths. But Epstein then suggested that they stop their funny business. Just stand there and talk. Without further direction, the actors changed everything: posture, cadence, expression, diction, interaction. And it became a scene about age and youth that touched me deeply.

It was, in short, a moment of transcendence. I got yer magic of the theatre right here.

  


Shakespeare & Co. is a great company, but it rarely plays to full houses. If I were them, here’s what I would do:

1. Video every lecture they give and put it on the Web for free. In fact, do more lectures, at least one for every play they produce. These lectures have been consistently fascinating. I want people to get used to looking up the Shakespeare & Co. lecture before going to see a Shakespeare play performed by any group.

2. Video a performance of each play presented, and post it for free on the Web. Have some of the summer interns do it. No one who comes would have stayed at home if they could have watched a video of it, especially since the company doesn’t have the resources to do studio-quality video production.

3. Post a second version of these videoed performances with a director’s track. Have the director and some of the actors explaining both the play and their decisions about it. We want teachers to play these scenes when introducing students to Shakespeare, and we want people who just saw a performance to then see the thinking behind it.

Now, there may be Actors Equity rules that prevent this, which would be a shame because videos like these would help expose the actors’ talents more broadly. And I suspect that Shakespeare & Co. may have reservations about posting content that’s not of the highest professional quality. If so: get over it! It’s the Web! Trust comes from imperfection.

In any case, when you’re in the Berkshires, do come. And bring the kids.

2 Comments »

June 18, 2014

[2b2k] The Despair of Knowledge

Jill Lepore has an excellent take-down in The New Yorker of Clay Christensen’s The Innovator’s Dilemma. Yet I am unconvinced.

I thought I was convinced when I read it. It’s a brilliantly done piece, examining Christensen’s evidence, questioning his methods, and drawing appropriate lessons, including wondering why we accepted the Innovator’s Dilemma for decades without critically examining it. (Christensen became so famous for it that his last name isn’t even flagged as a spelling error on my Mac.)

I got de-convinced by a discussion on a mailing list I’m on that points to some weaknesses in Lepore’s own argument, including her use of “cherry-picked” examples — a criticism she levels at Christensen — and her assumption that the continuity of companies, as opposed to their return on assets, is the right measure. As a person on the mailing list points out, John Hagel, John Seely Brown and Lang Davison take return on assets as a key metric in their book The Big Shift. And then someone else maintained that ROA is a poor measure of networked phenomena. That morphed into a discussion about the pragmatic value of truth: Does disruption provide a helpful framing for the New York Times as it considers its future?

The problem is that brains are truthy. They are designed to pay attention to things that seem to matter to us, bending our world around our concerns and interests. And brains are associative, so they make sense of the world — maybe even at the level of perception — by finding the relationships that seem to matter to us. In Heidegger’s terms, we are not indifferent knowing machines, but are creatures that care about what happens to us and to others. The brain is an unreliable narrator.

We now have access to an unfathomable sea of information that can contradict anything we settle on. That sea has been assembled by caring creatures and their minions, but it is so vast and global that it contains information beyond the caring and linking of any one of us. Every understanding can be subverted with a wink and a hand wave because all understanding simplifies a world that is resolutely and even necessarily complex. The universe outruns us.

Now we have machines that can look at masses of data and escape from our temptation to turn everything into a narrative. But those machines are limited by our decision about which data is worth gathering and connecting. There is hope in this direction, but it’s not clear whether we are capable of accepting the findings of machines that correlate without stories.

TL;DR: Our brains are truthy and the world is too big to make sense of. Not that that will stop us from trying.

 


[June 20:] Clay Christensen has cried foul in an interview.

14 Comments »

Next Page »