Shared posts

18 Jul 20:33

Rider Stories: Wendy in Portland

by Thea Adler

The follow post is a guest article written by Blix Bike rider Wendy.

Which model do you have? 

I currently ride a cream Komfort+.

How would you describe your bike usage before Blix?

Minimal, I had a bike but I was not anywhere close to a bike commuter.

In what way has your Blix been the most helpful?

My Blix has helped me convert to a full time bike commuter. I live just under 3 miles from my place of work but the route has some hills. I didn't have the time to walk, but sometimes biking would be a tad to strenuous to do in my work clothes. My Blix has been the ideal answer to my needs, I still get to feel more connected to my environment and get moving before the work day. 

What is your favorite part about riding a Blix?

I like that I can squeeze in my daily exercise into my commute so I don’t feel as bad if I’m too busy in my day to miss a workout. Now my limitations are so fewer that I am truly able to embrace a biking lifestyle, and ultimately a more sustainable lifestyle which has become very important to me. 

 

04 Jun 22:27

@stoweboyd

@stoweboyd:
04 Jun 19:57

The worst slides in Mary Meeker’s trends report

by Josh Bernoff

Mary Meeker’s annual Internet Trends Report for Kleiner Perkins is a comprehensive and provocative collection of data about technology change. It’s also the most cluttered, visually jumbled 213-slide pileup in the history of PowerPoint. Reading this deck is like walking through a construction site in which the Hell’s Angels are putting on three simultaneous Cirque de Soleil … Continue reading The worst slides in Mary Meeker’s trends report →

The post The worst slides in Mary Meeker’s trends report appeared first on without bullshit.

04 Jun 19:55

See Python, See Python Go, Go Python Go

by Andrey Petrov

Andrey Petrov is the author of urllib3, the creator of Briefmetrics and ssh-chat, and a former Googler and YCombinator alum. He’s here to tell us of a dangerous expedition his requests undertook, which sent them from Python, through the land of C, to a place called Go (and back again).

Today we're going to make a Python library that is actually the Go webserver, for which we can write handlers in Python. It makes Python servers really fast, and—more importantly—it’s a bit fun and experimental. This post is a more detailed overview of my PyCon 2016 talk of the same title. If you'd like to play along at home, this code was written in Go 1.6 and Python 3.5 and the entire complete working thing is open source (MIT license) and and it's available to clone and fork here.

First, a refresher:

Running a Webserver in Go

package main

import (
    "fmt"
    "net/http"
)

func index(w http.ResponseWriter, req *http.Request) {
    fmt.Fprintf(w, "Hello, world.\n")
}

func main() {
    http.HandleFunc("/", index)
    http.ListenAndServe("127.0.0.1:5000", nil)
}

Running a Webserver in Python

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello, world!\n'

if __name__ == '__main__':
    app.run(host='127.0.0.1', port=5000)

Running a Go Webserver in Python??

from gohttp import route, run

@route('/')
def index(w, req):
    w.write("Hello, world.\n")

if __name__ == '__main__':
    run(host='127.0.0.1', port=5000)

Yo--whaa???

That's right.

Want to give it a try right now? Hit this shiny button:

Deploy

How?

At first, Go was created to be run as a single statically linked binary process. Later, more execution modes were added to let us compile Go as dynamically linked binaries. In Go 1.5, additional modes were added to allow us to build Go code into shared library that is runnable from other runtimes.

Just like how all kinds of Python modules like lxml use C to run super-optimized code, you can now run Go code just the same. More or less.

Considerations

Before throwing everything away and starting fresh using this newfound power, there are some challenges that need to be considered.

Runtime Overhead

When a Go library is used from another runtime, it spins up the Go runtime in parallel with the caller's runtime (if any). That is, it gets the goroutine threads and the garbage collector and all that other nice stuff that would normally be initialized up when running a Go program on its own.

This is different than calling vanilla C code because technically there is no innate C runtime. There is no default worker pools, no default garbage collector. You might call a C library which has its own equivalents of this, then all bets are off, but in most simple cases you get very little overhead when calling C functions. This is something to consider when calling out to code that requires its own runtime.

Runtime Boundaries

Moving memory (or objects) between runtimes can be tricky and dangerous, especially when garbage collectors are involved. Both Go and Python have their own garbage collector. If you share the same memory pointer between the two runtimes, one garbage collector might decide that it's no longer used and reclaim the memory while the other runtime would be all "WHY'D YOU DO THAT??" and crash. Or worse, it could try to move it around, or change the memory's layout in a way that the runtimes disagree, then we'd get weird hard-to-diagnose heisenbugs.

The safest thing to do is to copy data across boundaries when possible, or treat it as immutable read-only data when it's too big to be copied.

Runtime Demilitarized Zone

When mediating calls between two runtimes like Go and Python, we use C in between them as a kind of demilitarized zone, because C has no runtime and we can trust it to not mess with our data all willy nilly.

see-python-go-runtimes

The Plan

In this proof-of-concept, we use the Go webserver, but we want to provide a Python handler that will get called when our route gets hit.

  1. Make a Go webserver, easy peasy.

  2. Make it into a module that is exported into a C shared library.

  3. Add a handler registry bridge in C.

  4. Add some helpers for calling Go interface functions from C.

  5. Add headers for importing the shared library in Python.

  6. Write our handler to use the C registry bridge in Python, and the helpers to interact with the data to create a response.

World of Go

Let's explore how to call C from Go and Go from C.

Calling C from Go

Calling C from Go is about as easy as it gets. In fact, we can embed C code in a comment right above an import "C" statement and the Go compiler will build and link it for us.

package main

/*
int the_answer() {
    return 42;
}
*/
import "C"
import "fmt"

func main() {
    r := C.the_answer()
    fmt.Println(r)
}

We use the magic C.* namespace to access anything from the world of C, even if it's not inlined directly above it. We can #include things as we normally would, too, to import code from whichever other C files we would like to use.

Additional reading material:

Calling Go from C

To call Go from C, we'll need to compile our Go code as a shared object and import it. To identify which Go API we want to expose in C, we export it explicitly with an //export ... comment directive.

package main

import "C"

//export TheAnswer
func TheAnswer() C.int {
    return C.int(42)
}

func main() {}

Three things about this code snippet:

  1. We need to make sure that the interface for the exported function is properly laden with C types. That means inputs and outputs all need to be C types, and our Go code will cast in and out of them as needed.

  2. Our shared object needs to be package main and have an empty main() function. Part of the process for CGO building into a shared library is creating an injection point for spawning the Go runtime.

  3. There are many nuances regarding passing memory from Go to C which are not expressed in this basic example. You can learn more on that in the links at the end of the section.

$ go build -buildmode=c-shared -o libanswer.so

This will create a libanswer.so shared object and a corresponding libanswer.h header file that we can reference from our C code.

Now we'll make our C code in a different directory and bring in the libanswer.so and libanswer.h files there.

#include <stdio.h>
#include "libanswer.h"

int main() {
    int r = TheAnswer();
    printf("%d\n", r);
    return 0;
}
$ gcc -o answer main.c -L. -lanswer
$ ./answer
42

Success! We called Go code from C.

More specific reading in the aforementioned links:

World of Python

Now onto the Python side of this business. Same idea, so let's look at how to call Python from C and C from Python.

Calling C from Python

There are two approaches to calling C from Python.

One method is using the C Stable ABI which lets us dive in with no additional dependencies. This works by explicitly defining all of the necessary headers and stubs that Python needs to figure out how to call the C code.

The other method is using CFFI, which automatically generates all of the headers and stubs for us. We'll explore the CFFI method for the sake of convenience.

# answer_build.py:
from cffi import FFI
ffi = FFI()

ffi.cdef("int the_answer();")

ffi.set_source("_answer",
"""
    int the_answer() {
        return 42;
    }
""")

if __name__ == "__main__":
    ffi.compile()

Calling the CFFI file will generate the necessary boilerplate for calling this corresponding C code from Python.

$ python answer_build.py
$ ls
_answer.c       _answer.o       _answer.so      answer_build.py

Now to call it from Python, we'll need two more files: answer.py and an empty __init__.py (because Python).

# answer.py:
from _answer import lib

r = lib.the_answer()
print(r)

Here we go:

$ python answer.py
42

Success: we called C from Python!

This was cheating a bit, in the same way we cheated in the Go version because the C was embedded inside of Python code. But, it's not that far from a real world scenario: We could just as easily #include our way into all kinds of external C logic, even if that part is embedded.

There are other ways of doing this too, have a look at the CFFI documentation, but this will do for now.

Putting it together: gohttplib

Alternate title: The Go, The Bad, and the Ugly

The full source code with Python and C examples of gohttplib is available on Github: https://github.com/shazow/gohttplib

We're going to fly through the important bits really fast to get the idea of how it works and how to run it on Heroku.

The Go and C

package main

/*
typedef struct Request_
{
    const char *Method;
    const char *Host;
    const char *URL;
} Request;

typedef unsigned int ResponseWriterPtr;

typedef void FuncPtr(ResponseWriterPtr w, Request *r);

extern void Call_HandleFunc(ResponseWriterPtr w, Request *r, FuncPtr *fn);
*/
import "C"
import (
    "net/http"
    "unsafe"
)

var cpointers = PtrProxy()

//export ListenAndServe
func ListenAndServe(caddr *C.char) {
    addr := C.GoString(caddr)
    http.ListenAndServe(addr, nil)
}

//export HandleFunc
func HandleFunc(cpattern *C.char, cfn *C.FuncPtr) {
    pattern := C.GoString(cpattern)
    http.HandleFunc(pattern, func(w http.ResponseWriter, req *http.Request) {
        // Wrap relevant request fields in a C-friendly datastructure.
        creq := C.Request{
            Method: C.CString(req.Method),
            Host:   C.CString(req.Host),
            URL:    C.CString(req.URL.String()),
        }
        // Convert the ResponseWriter interface instance to an opaque C integer
        // that we can safely pass along.
        wPtr := cpointers.Ref(unsafe.Pointer(&w))
        // Call our C function pointer using our C shim.
        C.Call_HandleFunc(C.ResponseWriterPtr(wPtr), &creq, cfn)
        // Release the ResponseWriter from the registry since we're done with
        // this response.
        cpointers.Free(wPtr)
    })
}

func main() {}

Let's break it down.

We're exporting two functions into the C API:

  • ListenAndServe which is used to start our server.
  • HandleFunc which is used to register a callback handler for some route pattern.

Note that the exported functions all take in C.* types, because they'll be called from the C side of things.

There is a tricky bit here: The HandleFunc callback function pointer accepts two parameters: http.ResponseWriter and *http.Request. This isn't going to fly for two reasons. The first parameter is a Go interface and both C and Python have no idea what those are. The second parameter is a pointer to an instance which we can't share across the runtime boundary, because that's a big no-no (see the Considerations section).

For the *http.Request data structure, we make a C equivalent (typedef struct Request_ { ... }), populate it by copying the necessary values, and pass it forward instead.

For the http.ResponseWriter interface, we work around it by creating additional exported shims in Go. These shims call the interface's function in Go on behalf of C (more on that in a moment).

There is one more weird trick here: We need to pass some kind of reference to whichever interface instance we're talking about, get that back, and call the original interface without passing any memory pointers across the runtime. How do we do that safely? With our own pointer registry!

see-python-go-ptrproxy

There are three operations we care about, each one is just a couple of lines that saves a key in a lookup and the reverse.

type ptrProxy struct {
    sync.Mutex
    count  uint
    lookup map[uint]unsafe.Pointer
}

// Ref registers the given pointer and returns a corresponding id that can be
// used to retrieve it later.
func (p *ptrProxy) Ref(ptr unsafe.Pointer) C.uint { ... }

// Deref takes an id and returns the corresponding pointer if it exists.
func (p *ptrProxy) Deref(id C.uint) (unsafe.Pointer, bool) { ... }

// Free releases a registered pointer by its id.
func (p *ptrProxy) Free(id C.uint) { ... }

Now rather than passing in the entire http.ResponseWriter interface instance, we can register it in our pointer registry and pass along the id which will later come back to us. This is nice and safe because nothing outside of the Go runtime can modify the original memory space, all it can do is hang onto some opaque integer and hand it back later.

Let's take a quick look at our interface shims:

// C interface shim for ResponseWriter.Write([]byte) (int, error)
//export ResponseWriter_Write
func ResponseWriter_Write(wPtr C.uint, cbuf *C.char, length C.int) C.int {
    buf := C.GoBytes(unsafe.Pointer(cbuf), length)

    w, ok := cpointers.Deref(wPtr)
    if !ok {
        return C.EOF
    }

    n, err := (*(*http.ResponseWriter)(w)).Write(buf)
    if err != nil {
        return C.EOF
    }
    return C.int(n)
}

// C interface shim for ResponseWriter.WriteHeader(int)
//export ResponseWriter_WriteHeader
func ResponseWriter_WriteHeader(wPtr C.uint, header C.int) {
    w, ok := cpointers.Deref(wPtr)
    if !ok {
        return
    }
    (*(*http.ResponseWriter)(w)).WriteHeader(int(header))
}

Now, given our proxied pointer ID in C, we'll be able to call Write and WriteHeader on the underlying ResponseWriter that continues to live in Go. We could expand this to cover the full interface but, for the sake of our prototype, these two will do.

The Python

Let's skip the CFFI boilerplate we've seen before and dive right into our C-to-Python wrapper:

import os
from ._gohttplib import ffi

lib = ffi.dlopen(os.path.join(os.path.dirname(__file__), "libgohttp.so"))


class ResponseWriter:
    def __init__(self, w):
        self._w = w

    def write(self, body):
        n = lib.ResponseWriter_Write(self._w, body, len(body))
        if n != len(body):
            raise IOError("Failed to write to ResponseWriter.")

    def set_status(self, code):
        lib.ResponseWriter_WriteHeader(self._w, code)


class Request:
    def __init__(self, req):
        self._req = req

    @property
    def method(self):
        return ffi.string(self._req.Method)

    @property
    def host(self):
        return ffi.string(self._req.Host)

    @property
    def url(self):
        return ffi.string(self._req.URL)

    def __repr__(self):
        return "{self.method} {self.url}".format(self=self)


def route(pattern, fn=None):
    """
    Can be used as a decorator.

    :param pattern:
        Address pattern to match against.

    :param fn:
        Handler to call when pattern is matched. Handler is given a
        ResponseWriter and Request object.
    """
    def wrapped(fn):
        @ffi.callback("void(ResponseWriter*, Request*)")
        def handler(w, req):
            fn(ResponseWriter(w), Request(req))

        lib.HandleFunc(pattern, handler)

    if fn:
        return wrapped(fn)

    return wrapped


def run(host='127.0.0.1', port=5000):
    bind = '{}:{}'.format(host or '', port)
    print(" * Running on http://{}/".format(bind))
    lib.ListenAndServe(bind)

Just like we made C-friendly wrappers around Go's ResponseWriter and Request, here we're making Python-friendly wrappers around C's Request_ struct and ResponseWriter_* interface shims we made. All of this is just to hide CFFI's warts and make the exposed API somewhat idiomatic.

The final trick is converting our Python callback handler function into a C function pointer that can be passed back to Go. Luckily, CFFI has a convenient @ffi.callback(...) decorator which does all the nasty work for us.

Off to the races we go!

lolbenchmarks

It's fun to take a look at the performance characteristics of this kind of approach. Yes, yes, of course, this isn't Production Ready or anything, but for the sake of some laughs:

see-python-go-graph

Conditions: ab doing 10,000 requests with 10 concurrency on my 💻. If you want to see how it stands up on Heroku dynos, just hit the deploy button and see how it works for you:

Deploy

These are all basic "Hello, world\n" handlers. The first one is straight-up Go, then it's Go-to-C, then it's Go-to-C-to-Python (gohttp-python). It does pretty well.

Keep in mind that this is with 10 concurrent requests, so werkzeug-flask probably chokes more on the concurrency than the response time being slow.

Name Total Req/Sec Time/Req
go-net/http 1.115 8969.89 0.111
gohttp-c 1.181 8470.97 0.118
gohttp-python 1.285 7779.87 0.129
gunicorn-flask 7.826 1277.73 0.783
werkzeug-flask 15.029 665.37 1.503

Again, this is for-fun off-the-cuff unscientific lolbenchmarks.

What's left?

We've discussed 80% of what's involved, but the remaining 80% is still available as an exercise for the reader (or maybe a future blog post):

  • The gohttp Python dependency comes pre-published to PyPI for your convenience, but you'll need build and distribute the dependency yourself if you want to tweak it further.
  • Play whack-a-mole with memory leaks. The current prototype is not safe or battle-tested by any means. Any time a C variable gets declared, we'll need to free it.
  • Implement the rest of the interfaces that we need. Right now there are only a couple of functions available but there is much more to build a full server. Pull requests welcome!

Handy links

More posts on this topic:

Automagic code generating:

04 Jun 19:54

Trov is a soon-to-be on-demand insurance platform for personal...



Trov is a soon-to-be on-demand insurance platform for personal possessions. 

I like the use case where my phone and laptop are insured whenever I walk out of my door with them, and then toggle back to uninsured when I return home (where they are covered by homeowners insurance).

04 Jun 19:54

theonion: Factory Robot Working On Some Of Its Own Designs...



theonion:

Factory Robot Working On Some Of Its Own Designs After Hours

Saying it had been mulling over the “fun little side project” for a while, an Electroimpact Quadbot reportedly put in some extra work after hours at the Boeing assembly plant Wednesday to try out a few of its own original designs. “It’s just something I like to tinker around with after I wrap up all my regular tasks for the day—plus, nobody here seems to mind since they were planning to throw out most of the scraps I use anyway,” said the four-armed, 30,000-pound robot, adding that the uninterrupted quiet time allowed it to experiment with various techniques and contemplate design problems more clearly and creatively than it could during business hours. 

More.

Cue the creepy music.

04 Jun 19:23

Vehicular Upside to Bike Lanes

by Sandy James Planner

3035580-inline-i-1-new-report-shows-that-protected-bike-lanes-are-good-for-everyone-not-just-cyclists

Price Tag editor Ken Ohrn  is one of the founders of HUB, the coalition of concerned cyclists across Metro Vancouver. We were talking about the remarkable story of cycling in Metro Vancouver, and the fact that within one decade HUB and its predecessor the Vancouver Area Cycling Coalition (VACC) have solidly put cycling on the urban agenda, and worked tirelessly for seamless, safe and separated cycling connections across the region.

The case has been made for the economic benefits of cycling and cycling lanes. Studies undertaken in Toronto and New York City commercial areas  clearly show that people traveling by walking, cycling, and transit spend more per month and visit more often than those people traveling by cars.  My TEDX talk  references studies in Toronto and New York City which clearly show that supporting active transportation augments shops and services’ bottom line.

For those people who are in cars, bike lanes are good too-the protected lanes in New York City actually allow car traffic to go faster through the city.  This report from the New York City’s Department of Transportation written in 2014 shows that bike lanes allow vehicular traffic to flow faster, and that pedestrian injuries decrease by 22 per cent on streets with bike lanes. Cycling injuries have gone down by as much as 65 per cent on previously troublesome streets.

Why do cars flow faster?  “Cars turning left now have pockets to wait in-so they’re less likely to hit a cyclist riding straight, but they also stop blocking traffic as they wait”. The result is better visibility for the motorist and the cyclist, and helps the traffic flow.

It’s worth taking a look at the NYC Department of Transportation link to see how the data is collected and interpreted. As past commissioner Janette Sadik-Khan said in her talk in Vancouver earlier this year “In God we trust, but everyone else bring data“.

New York City’s data shows us the way forward. One separated bike lane at a time.


04 Jun 19:22

All That Is Old Shall Be New Again

by Ken Ohrn

Aaron M. Renn tells a story in the Guardian about New York City’s many attempts to control the car, and a guy called “Gridlock Sam” (Sam Schwartz). As deputy traffic commissioner, he developed highly successful contingency plans to deal with the 1979 NYC transit strike. In some ways, this reminds me of Vancouver’s success at dealing with the road and other closures during the 2010 Winter Olympics.

NYC.Red.Zone

A failed idea from 1971

Today, we tend to think of congestion pricing as a new idea, but New York has been trying to implement some variant of it for decades. . . . The debate is only going to intensify. Traffic congestion is worsening in Manhattan, the subways are overcrowded and increasingly unreliable, and the state is struggling to pay for it all. Whether congestion pricing passes or not, the price will be paid, one way or another.

Many thanks to Todd Litman for the heads up.


04 Jun 19:21

Mary Meeker and the Postnormal

Mary Meeker posts her 2016 Internet Trends Report, and the analysis of global economic trends distills the major downdrafts in the postnormal era:

image

The early go-go growth days of the Internet are over (1). Emerging nations have slowed their frenetic growth (2). Government debt is rising, worldwide (3). Interest rates are near the weird zero boundary, where fiscal and monetary policy goes upside down and inside out (4). Population growth down, and age is up (5).

Welcome to the postnormal.

Meanwhile, governments are retrenching, continuing austerity policies that amplify the negatives in these trends. Risks are rising in all sectors.

The smart thing to do would be to increase investments in core infrastructure, spend to transition to sustainable energy, agriculture, and manufacturing, and provide incentives to slow the decline in bearing and raising children. But unless we have a Human Spring, and wrest control of the world back from the powers that be, the trends will likely continue in the wrong direction.

04 Jun 19:19

Dot

by russell davies

Everyone

As Martha's announced, I have a new job.

I'm going to be the interim CEO of doteveryone, the smart new team she's started to show what public value you can create with technology.

Interim while I help them find a proper CEO and so I can stay connected to the Co-op - there are also fantastic things happening there.

This is exciting. Doteveryone is properly ambitious, talented and daring and I think that I can help. 

04 Jun 19:16

Restoring Software's Good Name with a Humble Script

by Eugene Wallingford

In a Startup School interview earlier this year, Paul Graham reminds software developers of an uncomfortable truth:

Still, to this day, one of the big things programmers do not get is how traumatized users have been by bad and hard-to-use software. The default assumption of users is, "This is going to be really painful, and in the end, it's not going to work."

I have encountered this trauma even more since beginning to work with administrators on campus a decade ago. "Campus solutions" track everything from enrollments to space usage. So-called "business-to-business software" integrates purchasing with bookkeeping. Every now and then the university buys and deploys a new system, to manage hiring, say, or faculty travel. In almost every case, interacting with the software is painful for the user, and around the edges it never quite seems to fit what most users really want.

When administrators or faculty relate their latest software-driven pain, I try to empathize while also bring a little perspective to their concerns. These systems address large issues, and trying to integrate them into a coherent whole is a very real challenge, especially for an understaffed group of programmers. Sometimes, the systems are working exactly as they should to implement an inconvenient policy. Unfortunately, users don't see the policy on a daily basis; they see the inconvenient and occasionally incomplete software that implements it.

Yet there are days when even I have to complain out loud. Using software can be painful.

Today, though, I offer a story of nascent redemption.

After reviewing some enrollment data earlier this spring, my dean apologized in advance for any errors he had made in the reports he sent to the department heads. Before he can analyze the data, he or one of the assistant deans has to spend many minutes scavenging through spreadsheets to eliminate rows that are not part of the review. They do this several times a semester, which adds up to hours of wasted time in the dean's office. The process is, of course, tedious and error-prone.

I'm a programmer. My first thought was, "A program can do this filtering almost instantaneously and never make an error."

In fact, a few years ago, I wrote a simple Ruby program to do just this sort of filtering for me, for a different purpose. I told the dean that I would be happy to adapt it for use in his office to process data for all the departments in the college. My primary goal was to help the dean; my ulterior motive was self-improvement. On top of that, this was a chance to put my money where my mouth is. I keep telling people that a few simple programs can make our lives better, and now I could provide a concrete example.

Last week, I whipped up a new Python script. This week, I demoed it to the dean and an assistant dean. The dean's first response was, "Wow, this will help us a lot." The rest of the conversation focused on ways that the program could help them even more. Like all users, once they saw what was possible, they knew even better what they really wanted.

I'll make a few changes and deliver a more complete program soon. I'll also help the users as they put it to work and run into any bugs that remain. It's been fun. I hope that this humble script is an antidote, however small, to the common pain of software that is hard to use and not as helpful as it should be. Many simple problems can be solved by simple programs.

04 Jun 19:13

The Best Ergonomic Keyboard

by Melanie Pinola
ergonomic-keyboards-top

After another 11 hours of research and about 150 fresh hours of testing, we found that the Microsoft Sculpt Ergo is still the most comfortable ergonomic keyboard for most people. Of the dozen keyboards we tested since 2014, it is the only one to meet all of our ergonomic criteria, which include the possession of a separate number pad and support for both negative tilt and vertical “tenting.” The Sculpt Ergo’s manta ray-like design puts your hands in the most natural and comfortable position for long bouts of typing, and it’s also a solid wireless keyboard with keys that are crisp and satisfying to press.

04 Jun 18:52

Recommended on Medium: In fairness, the author writes:

“When we talk about the specifics of what is happening — the negative experiences each woman is having with harassment at conferences — I…

Continue reading on Medium »

04 Jun 18:52

Next Worldwide Flickr Photowalks on July 9th/10th!

by Matthew Roth
photowalk

We’re putting a call out for the next worldwide Flickr photowalks and we want you all to join with other Flickr members in the fun. Mark your calendars for July 9th/10th and prepare yourself for a great time with Flickr friends new and old. Check out the Flickr Worldwide Photowalks group for more details and discussions.

In case you’re looking for a theme for these worldwide Flickr photowalks, we’d recommend you bust out your macro lenses and get a little closer. Whether you’ve got a powerful 5x zoom for your DSLR or you use an OlloClip on your phone, you can get up close and discover a whole new world.

Curbside Texture

Because the suggested theme is macro and because the Macro Mondays group is one of the most engaged Flickr groups, we’re partnering with them and encouraging you to upload the photos you take from the photowalk to their group. The Macro Mondays’ theme for Monday, July 11th, will be Macro Textures. We hope you’ll get some great macros and that you share them in their group as well.

If you are organizing a photowalk in your area, please announce it in photowalk locations thread here. You may also want to let people know on the Facebook event page.

We look forward to seeing some of the amazing macro textures you take and to hearing the great stories about your event.

–Flickr Community Team

Taking a close up

04 Jun 18:52

Mobs, Tribes & Peers

by David Vogt

A new start-up venture emerging from Urban Opus is demonstrating how social networking data can help communities become stronger, smarter and more innovative.

The “wisdom of crowds” is like an urban myth: we want to believe, but tangible examples are hard to pin down.  And don’t crowds often turn into mobs?  Volatility and unpredictability make us wary of digital democracy. If collective humanity is to become a primary source of intelligence for smart cities we need to understand how to make ‘common sense’ not just absolutely reliable, but also quantifiably better than any other form of decision-centric information.

Peer Effects Inc. (PFX) is a Vancouver start-up that tackles this problem for a special kind of community, pointing the way for smart cities.  PFX enables quantifiable competency management for communities of professionals such as doctors, lawyers and engineers.  Such professionals are obliged to undertake continuing education to maintain their competency levels, but the impact of such education on quality of practice isn’t measured in systematic ways. Public demand for quality assurance is rising, yet subjecting professionals to periodic tests and random audits is counter to the concept of professionalism, just as testing a citizen’s knowledge of societal issues in advance of an election is counter to the concept of democracy.

PFX employs network effects within peer communities (the interactions between professional peers, and with professional content, within a virtual private network) to distill detailed individual and collective competency management analytics from everyday workflow.  In short, professionalism can be quantifiably validated, and the profession systematically advanced, simply by being professional.  Intelligence in a professional network can be harnessed.  It works because the shared values, experience and purpose of a peer network creates a powerful moderating influence and catalyst that isn’t easily available in an open social network.PFX

The PFX insight for smart cities is that every city is a complex tapestry of peer communities.  Every citizen feels affinity to a unique set of ‘tribes’, whether these are about work, neighbourhoods, music groups, sports teams, or whatever.  The strands of intelligence available from any single tribe may not be strong on its own, but meshing intelligence across tribes via intersecting interests of citizens can weave a bulletproof social fabric, and unbeatably reliable acumen.

When you model a city as a community of communities, intelligence doesn’t get lost in the crowd.

For further information about PFX and peer networks in smart cities, contact david dot vogt at urbanopus dot net.

04 Jun 18:51

Video is the new HTML

by Benedict Evans

Jonah Peretti made these numbers public late last year. To me, they're interesting because they show two distinct trends - proliferation of distribution platforms and proliferation of content models.

image.jpg

Each of these segments is a platform with a different model for acquiring users, and each is also a platform with a different content format. The way you get views, the kinds of content that works, and the kind of content that's possible are different. (Buzzfeed, of course, is amongst other things a machine for understanding and optimising for this environment.)

Within this proliferation, distribution models are moving towards both algorithmic feeds (Facebook, Twitter, Instagram) and manual curation (Snapchat Discover), and content models have on the one hand richer and more immersive formats (often delivered using video files) and on the other lighter-weight bandwidth-optimised text-based formats (AMP, Facebook Instant Articles). And though AMP and Articles are pitched on speed of loading, they're also, like video on Facebook or Snapchat, under the control of the underlying platform owner.

Meanwhile, half of the point of both Google's AMP and Facebook's Instant Articles (whether implicit or explicit) is that you get the bandwidth saving and the faster rendering by taking out all the ad tech and analytics JavaScript and instead using solutions from Google and Facebook. But equally, at the other end of the bandwidth scale, Snapchat Discover also makes you rely on the platform to tell you what's going on. In most of these cases, and especially Facebook or Snapchat, the host platform promises better information about use and user (and hence in theory better economics) than you can get from all that JavaScript. Maybe. And in parallel, you get not just new content and metrics but a new ad format, or Snapchat in particular, that can feel far more native and naturally part of the general content experience than any web banner.

That is, these models change how you get audience, what the audience sees, what you know about the audience and how you can make money from it. (And then, just to make life simple, something around a third of mobile web use actually happens as in-app views within Facebook.)

Next, while Facebook has Instant Articles, Google now has Instant Apps. You tap on a link, and 'native' (at any rate, not HTML) code instantly (hopefully) appears and runs. You could see this as the return of Java (and Android in a sense *is* Java), or the return of Flash. I think the Flash parallel works much more broadly, too. Snapchat Discover certainly looks like Flash - though technically the delivery format might be h264 video, the actual content looks a lot like what people were doing with Flash 10 years ago - rich, engaging, moving content blending sound, motion, animation and, sometimes, actual live-action footage. We've gone from delivering video with Flash to delivering Flash with video. That is, video is a new HTML - a new content delivery format, and not necessarily about live action at all. Instant Apps do the same but with the Android run time instead of Snapchat's, and though the Instant Apps demo at Google IO showed things that look like apps rather than content, the principle is the same - richer than HTML, but better than going to the app store. But even AMP or Instant Stories bear the same interpretation - we move away from plain old HTML and JavaScript to get better experiences.

One could also suggest that this means video (including GIFs, or whatever format you want to add) acts as a new card format - a way to encapsulate any kind of content and let it travel, shareably, across the Internet. Embedding a GIF or video into a social network feed is, again, an alternative to HTML as a content delivery format, and again, you can embed anything you want, including ads.

This also points to another proliferation - metrics. When Snapchat says it has '10bn daily video views', what does that mean and what can one compare it with? How does one think about auto-playing video? What if the user doesn't hear the sound, or if there is no sound? One certainly can't compare it to TV viewing - or at least, only in terms of overall time spent on exactly the same basis as Facebook or any other piece of content. YouTube is at least conceptually the same form as TV, but Snapchat really isn't. And of course, it's the platform owners themselves who invent and report the metrics.

Extending this issue, if one cannot compare time spent, it's also tough to compare ad spend. Should time spent on a 'video' platform whose views are mostly silent, mostly scrolled past and mostly skipped count the same as time watching a hit show on a TV? How about time spent on a TV show playing on a screen on the wall while the family look at rich, engaging and interactive content (delivered using h264) on their smartphones?  (And what, skipping forward a bit, should one think about the value and engagement of ads in VR?)

This also makes me feel that mobile ad blocking is going to become even more problematic. Facebook has been the world's biggest ad-blocker for a long time, just as it's one of the world's biggest mobile web browsers. But if a platform sends me encrypted data from a single IP, that may be just a single h264 stream, that happens to have an ad somewhere within it, that's then rendered in a proprietary runtime on the device, how on earth can anyone strip that out? The biggest impact of any ad-blocking that does happen may be to drive content owners further away from the open web. 

One of my frameworks for thinking about mobile is that we're looking for another runtime - somewhere to build experiences on mobile that comes after the web and mobile apps - and that that new runtime will probably comes with new engagement and discovery models and possibly new revenue models too. It's pretty obvious that this is a useful way to look at Google Assistant or Facebook's Bots platform, but it applies to content as much as it does to code per se: Snapchat is just as much a development platform as Wechat, you just have to look at it from the right angle. The screen itself is the runtime, and the richer and more native you can be to that the better. 

04 Jun 18:51

Huawei vs. Samsung – Rivers of blood

by windsorr

Reply to this post

RFM AvatarSmall

 

 

 

 

 

Software is all that can save Huawei from rivers of blood.

  • Huawei has said once again that it wants to be the number one in smartphones before, but this time I think that it is serious.
  • Richard Yu, the CEO of Huawei’s consumer business re-iterated this intention at the Converge Technology Conference in Hong Kong and stated that he was prepared to be patient.
  • The problem is that although Huawei makes reasonably good margins in hardware, I think its profitability in smartphones is 2-4% in the best instance.
  • I have long believed that no-one has any real differentiation in Android smartphones and the only reason that Samsung makes a good return is because it has a huge scale advantage as it out ships its nearest competitor more than 2 to 1.
  • This is similar to what Nokia was able to achieve in its heyday when it commanded 40% global market share and EBIT margins of 20-25%.
  • This means that in order to avoid a bloodbath of brutal competition with Samsung, Huawei has to differentiate its products such that consumers are willing to switch from Samsung to Huawei without Huawei having to cut prices further than it already has.
  • Without that differentiation, Huawei will have to not only overtake Samsung in terms of volume but maintain at least a 2 to 1 advantage in terms of unit shipments in order to make 10-12% EBIT margins.
  • Even it gains a lot of share and becomes equal with Samsung by taking out all the smaller players who command around 30% of the market between them, all it will achieve will be a loss of profitability at Samsung as its volume advantage is eroded.
  • I think that achieving this goal without differentiation will be excruciatingly expensive and could easily force the Huawei’s consumer business into loss making territory for a long period.
  • Given that the outlook for infrastructure is deteriorating and that the ecosystem companies such as Facebook have declared war on network equipment (see here), I suspect that the willingness of the network business to subsidise this ambition will be limited.
  • Hence, the answer for Huawei has to be based in software.
  • There are two ways to do this.
    • First. Create compelling software and services that users love drive them to choose Huawei devices over the competition.
    • This will give Huawei the ability to price its products at a premium and gain share without having to compete solely on price.
    • With Google dominating the services offered on Android outside of China this will be difficult without beginning to compete directly with Google.
    • Second. Use software to ensure that Huawei phones work optimally with its other consumer electronic products.
    • This would then make a user who has a television or a smartwatch and so on to buy a Huawei smartphone, again giving some of the needed differentiation to increase pricing.
  • For Huawei I think that the market in China is more open than it is in the rest of the world.
  • This is because Google is absent in China and none of the big ecosystems have yet established a meaningful level of control over the hardware in the way that Google has.
  • Furthermore, Huawei’s app store is No. 5 in China with 8% market share giving it a beachhead from which to launch some differentiation.
  • I don’t think that Huawei’s software offering and its level of expertise in this area is nearly good enough yet to offer any real threat to Samsung but the intention is clearly there.
  • Either way this is going to be a long haul as Samsung shipped 2.7x more smartphones than Huawei did in Q1 16A (Counterpoint Research) despite the fact that Huawei gained a lot of market share over the last 12 months.
  • I still like Samsung for 2016, as I think Huawei remains a long way from offering a real challenge, but Samsung does need to start taking mitigating action now.
04 Jun 18:48

Where Do We Go From Here?

by Sandy James Planner

 

BOB_RENNIE

Bob Rennie of Bob Rennie Realty spoke to the Urban Development Institute (UDI) on Thursday, giving his professional and well thought out opinion on what is happening in Vancouver’s housing market. Bob and his family are what Malcolm Gladwell would call “early adapters”-they have renovated and restored a fabulous building in Chinatown way before that was fashionable, and share their love of good art and design with the community in their gallery.  And Bob quite simply, loves Vancouver and has his finger on the pulse of what makes this town tick-real estate.

Bob’s annual UDI speech is the hot ticket in town. Journalist Frances Bula who attended the talk and was tweeting in real-time, noted “if you ever feel lonely, tweet out a Bob Rennie speech. It’s like going to a crowded bar, but in a cloud”. Even if folks are not there, they want to be.

You can read the article by Jeff Lee of the Vancouver Sun  here. Jeff sums up Bob’s 2016 speech in five main points.

  1. Vancouver is not affordable.  For cheap houses, 26 sold under $750,000 last year. This year, 26 homes sold for under one million.  On the west side only THREE houses sold under 1.7 million.

2. Affordable housing is in the suburbs, not Vancouver.

3. Neighbourhood Groups in Vancouver involved in the planing process are male and                 old and set in their ways, and need diversity to embrace future generations.

4.  A speculation tax aimed at buyers who flip houses would assist the entry-level part               of the market.

5. There is no market and there is no supply of houses, so even with nearly 200 billion              dollars held in properties by people over 55, they can’t give it to their kids to buy                    homes.

Bob Rennie stated that this would be the last time he would be speaking to the Urban Development Institute. He has been a tremendous thinker and doer in real estate in Vancouver, and passionate about doing the right thing. I will miss him.

 

 

 


04 Jun 18:24

Trajectory Book 2, release June 7, 2016

by Rob Campbell

Trajectory Book 2 v1.0 is now uploaded and standing by, waiting to be auto-delivered to your Kindle on June 7th, 2016. If you haven’t got a copy yet, you can get your own for the introductory price of $4.99US, $5.99CAN. You can still buy it on release day if you’re not into the whole paying-for-something-before-you-can-get-it thing. To celebrate, starting right now, Trajectory Book 1 is on sale for $1.99 on Amazon US, $2.99 in Canada. Perfect books for binging on your summer vacation!

In the meantime, if you’ve read Trajectory Book 1 and haven’t left a review, you can still drop some stars on it on Amazon and Goodreads. Every review helps bump it up in the ranks and makes it that much more likely it’ll find its way onto a reader’s page in the Kindle store.

Preorder. What was I thinking?

It seemed like a good idea to set a deadline and have a target to shoot for. It was a great motivator. Amazon’s pressurey emails get increasingly menacing as you get closer and closer to the due date without a final version uploaded. It places some gentle stress and threatens with the possibility of losing preorder privileges for a year. I’m not sure, but I think the emails implied that they had other ways to exact their revenge from me. Subtle, terrible ways.

What fun!

Timing-wise, it was, perhaps, questionable. We were still looking for our place (found one!) and living with my folks who’ve been extremely generous letting us do this. Still, we’re aware that we’re invaders here and trying not to mess up my Mom’s rather specific decor with our stuff too badly, and mostly failing. I have headphones and computers all over the place. Without a dedicated desk to work off of, I’m distracted and uncomfortable. I need space to focus, so that’s a challenge. I lost a few days to driving the last of our stuff out here during the preorder run up. Really, I could have picked a further date to minimize some of that, but then it would have impacted our house search and you wouldn’t have a book to read.

In the end, we got it done, so that’s the main thing.

Now to go buy a house.

petitcodiac panorama

04 Jun 18:12

Inner Vision for the Weekend of June 3, 2016

by Gregory Han
inner-vision-2016-06-03-persimmon-tea

Sujeonggwa is a Korean tea made by simmering ginger and cinnamon sticks and then adding sugar and dried persimmons, garnished with pine nuts before serving. Photo: Gregory Han

Inner Vision is a weekly digest connecting the dots between great everyday objects and the cultures and techniques behind living well with them. Here, we move beyond recommendations and ratings, because just as important as knowing what to buy is knowing what’s possible using the products you’ve purchased.

Tea. Earl Grey. Hot: “As a rule of thumb tea has an average shelf life of two years—if properly stored.” And by “properly stored” that means airtight containers, kept between 60 and 80 degrees Fahrenheit, and placed away from windows, heat sources, and other aromatic ingredients that can taint the delicate aroma and taste of tea.

Being Prescribed a Chill Pill: “Only sleep cures fatigue,” says psychotherapist Zoë Krupka. Our obsession with striking a work-life balance often leads us to imagine fatigue is conquerable with the right mixture of exercise, diet, or meditation. But, she continues, “We need to be reminded of this because tired long-haul drivers can be deluded into thinking that coffee, a can of Mother or an upbeat bit of music might help them stay awake. For the madly overworked, we need reminding that the only cure for working too much is to stop. It’s as simple as that.”

You’re So Queued: Everyone knows the problem with Netflix isn’t a lack of movies or shows, but the difficulty of finding something to watch that fits your particular mood at that very moment. Using the five profiles allotted to every Netflix account into categories matching specific moods can help narrow down options, so you’re not caught in a never-ending loop of “what do I really want to watch?”

Sharper Than Valyrian Steel: The frosted-glass edge of car window can be a surprisingly effective stand-in for a knife sharpener when you’re hiking or camping and far from a dedicated sharpening tool. Outdoorsman Robert Arrington even proves his point—or rather, his edge—by shaving his own arm hair afterward!

Timely Advice: According to horologist Eric Wind, when it comes to vintage timepieces it’s the watch dial that makes up “99.9999% (or more)” of the value of any collectible model. Avoid gold-, chrome- or silver-plated models, take careful note of any visible inscriptions, and proceed with caution when the most recognizable of watch brand names pops up in listings. Wind offers plenty more informative advice about shopping for vintage watch deals on eBay, and shares some enviable, under-$200 purchases he has made over the years.

But I Haven’t Got a Stitch to Wear: Though a year without new clothing may seem challenging—and maybe even extreme for some—when you note that a million tons of clothing are tossed out annually, there seems more than a thread of reason behind Sarah Sweeney’s decision to step out of the consumerist echo chamber cajoling us all to “buy, buy, buy” in the name of fashion.

“Any fool can find answers. The people who ask new questions, they’re the geniuses …”

Power to the Pibil: I have a bad habit of eating entire group-sized portions of cochinita pibil all by myself. A seductively simple Yucatán dish of citrus- and spice-rubbed pork wrapped in banana leaves, the swine is cooked long and slow until the meat falls apart at mere approach. Wrapped in fresh corn tortillas and topped with pickled red onion, that first bite is just like heaven (even if the molten hue of achiote seed and Ceylon cinnamon seasoning hints of hell), with every subsequent bite as gratifying as the one before it. Summer BBQ parties will never be the same once this recipe becomes part of your grill repertoire.

Now Let’s Get in Formation: Perhaps you’ve heard of the allegorical tale of Elzéard Bouffier, a fictional character who over the span of several decades single-handedly transformed a barren section of southern France into a verdant valley by planting one acorn at a time. A singular repetitive act practiced with dogged dedication is a powerful exercise in the formation of any habit, whether it be learning a new language, learning how to wake up earlier, or growing your very own forest.

A Magical Adventure Mobile: From the outside, their van looks like a typical commercial vehicle used to haul small goods. On the inside, “Magic”—a Nissan NV 2500 Mobile Office—is customized with 80 square feet of all the comforts and accoutrements of a home on wheels for a pair of climbing enthusiasts who’ve turned a road trip into an ongoing lifestyle.

Got an interesting story, link, resource, or how-to you think we should check out for consideration for our next issue of Inner Vision? Drop us a line with the subject “Inner Vision,” and we’ll take a look!

04 Jun 18:11

Ohrn Image — Public Art

by Ken Ohrn
Roundhouse

The Roundhouse, Vancouver


04 Jun 18:10

Mobi’s Rolling

by Ken Ohrn

Do you travel around Vancouver? Well, you’re about to get another option.  News from Mobi is that founding members like me will have access to some early bike installs in mid-June. There’s no launch date yet for big Mobi, other than “summer”. But it’s rolling.

Mobi’s people are in the middle of station location decisions based on over 6,000 suggestions from the public, and some guidelines of their own, based on experience from other bike share cities.

And a few sponsorship options may be available.  Hello, all that money out there, are you listening?  Make yourself cool in a very short time.

Mobi.Sponsor

Lucy Lau gives us a short course on bike-share in the Straight. And, she uses the delicious word “portmanteau” to describe “Mobi”, which  is a combo of the two words “more” & “bikes”, or is it “mobility” & “bicycle”. Feh — either way it works fine for me.

She compares Mobi to Evo and Car2Go in that once you have a membership, you pick up a bike, head to your destination, then dock it and walk away. It’s a one-way and done deal.

Mobi.Kohout

Mia Kohout, GM, Vancouver Bike Share, Inc.  (“Mobi”)

New to Cycling:  For Mobi newbies, here’s a suggestion via Dominika Lirette at Vancouver Magazine:

Bike Education

Vancouver Bike Share Inc. is partnering with HUB Cycling to provide bike education and road safety classes at a low cost. “They’re a cycling advocacy organization in Metro Vancouver, and they offer fantastic education programs where they do different levels of training,” Kohout says. “There are 100,000 Car2Go members in town, and I’d love to see 100,000 bike share users as well.”

Mobi.Course


04 Jun 18:10

Medium acquires Superfeedr

files/images/pubsubhubbub-2.jpg


Julien Genestoux, Medium, Jun 06, 2016


I found this claim interesting, especially from the perspective of my talk today: "We consume the web from mobile devices, we discover content on silo-ed social networks and, more importantly, the base metaphor for  the web is shifting from space to time." It's not unusual, though, to hear this perspective with respect to RSS; it reminds me of Dave Winer's 'river of news' concept. The otbher thing, of course, is the renewed interest in RSS from Medium, which is a rapidly growwing platform in its own right. But with Superfeedr, and especially PubSubHubbub, Medium is acquiring a whole distribution network.

[Link] [Comment]
04 Jun 18:09

Bluemix Essrntials

files/images/Bluiemix.JPG


IBM, Jun 06, 2016


More on the idea of applications being hosted in a cloud environment and developed  in situ: "Bluemix is an open-standards, cloud platform for building, running, and managing applications. With Bluemix, developers can focus on building excellent user experiences with flexible compute options, choice of DevOps tooling, and a powerful set of IBM and third-party APIs and services." This page links to a course outline the major features and application of Bluemix. You'll need an IBM account  to access the course (sorry, they haven't learned the meaning of 'open' yet).

[Link] [Comment]
04 Jun 18:09

The Friday File-Real Estate Mania

by Sandy James Planner

mania

You heard it on Friday File first-the “story of how Vancouver lost its affordability-and its mind.

Produced by Visual Capitalist which normally is focused on investments, Real Estate Mania presents in eight graphic panels the social, demographic and political history of how Vancouver developed from a boom town in 1887 to a sophisticated city.

The firm states their infographic’s purpose “is to connect the dots between Vancouver’s history of speculation, demographic waves, public policy, and external pressures that have all had a hand in shaping today’s hot real estate market in the city“.

The graphic panels do include the real estate crash in the early 1900’s as well as the impact of Expo 86.

The graphics describe major events shaping and moving Vancouver real estate to higher values include the handing over of Hong Kong to China in the 1990’s, and the Canadian government’s  controversial Immigrant Investor Program. Rising assessment values are shown on aerial photos of the city, and there are lots of graphs and statistics to fuel a discussion over a coffee or two. Are we in a bubble? And if we are, when will it burst?

1375


04 Jun 18:09

Click For Sound

by britneysummitgil

0522092240718Mute

A favorite pastime of mine is listening to podcasts or stories while playing mindless mobile games. For me, it’s the perfect blend of engagement and passivity—just enough informational input to be stimulating while still being relaxing, and put-downable enough that I can pause to do other things like prepare a meal or… get back to work. The combination of aural and visual stimulus hits just the right balance. I’m always looking for other good combinations of aural and visual input for various tasks: a TV show I can watch while organizing my PDFs, the right music for reading, another for writing, and so on. Proliferation of media texts, and the increasing availability of them, has made much of my life a mixing and matching of sensory inputs.

The degree of this mixing and matching is in part afforded by digital media. Of course, other media epochs had their own soundscapes and visual texts, like listening to a record while reading or watching television while sewing. But the multitude of options for sensory input in digital media is of a different quality. And as platforms alter their interfaces and affordances, the character of our sensory experience of media changes as well.

Autoplay is one of the many blights upon the internet. I have a personal policy of not linking to any website that has an audible autoplay. In my early years on the internet, nearly every website had some kind of autoplay advertising, and I remember clicking and scrolling everywhere trying to find the pause button so my friends and I could watch our Destiny’s Child music video in peace. Then, for a long while, autoplay seemed to go away, or at least lessen. Ad blockers played an important role here. But now, autoplay videos are once again everywhere, with news sites being the worst offenders.

Can autoplay be done right? I think it can, and I hate to admit it, but Facebook seems to have the right idea. Their integration of autoplay in the newsfeed has been relatively unobtrusive and quite functional for a website whose updates so often disappoint users. Videos only play when they are on screen, audio only plays when clicked, and you can scroll back up to a video and it will continue playing right where you left off.

But I never click for sound. To be more accurate, 99.9% of the time, I don’t click for sound. An informal survey of my friends suggests that a lot of people don’t. It’s likely because so often the sound is… disappointing. How many people have ruined a perfectly good video of cats chasing lasers with some high pitched, annoying keyboard music? Even when the music is done well, as is often the case with Buzzfeed’s Tasty videos, it just isn’t worth it. Personally, the inclusion of sound in a 42 second video about mini biscuit pepperoni pizza balls isn’t worth the click. And then, I have to exit out of the video before it automatically starts playing another. What a hardship!

It’s difficult for those of us raised in the era of popular mass media to understand the viewing experience of silent film. But there seems to be a resurgence of silent visual media that, rather than developing under the constraints of media, develops thanks to the affordances of media.

Take Reddit for example. If someone posts a 1:30 long gif or HTML5 video on r/mildlyinteresting, inevitably someone will ask why on earth they didn’t just post the video. And, inevitably, someone will respond with why they prefer the silent version: I’m at work, or it loads faster, or I listen to music when I browse Reddit and why does the sound on this video of glass blowing matter anyway? I’m much more likely to open a link to a silent gif than a video; even if it’s the same content and the same length, it simply feels like less of an investment.

Walter Ong wrote a great deal about the ways media developments change our entire sensory experience and, subsequently, our cognition. Father Ong divided these media developments into three major categories: primary orality, literacy, and secondary orality. Primary orality describes cultures that do not have written language. Ong lays out several features of these cultures: memorization strategies such as proverbs and alliteration, circular story telling devices, and the interiority of thought. Literacy introduced very different language practices, such as linear thinking and abstraction.

Secondary orality came with the onset of electronic media; while Ong did not theorize this last concept in great detail, he was interested in the ways auditory media reintroduced some of the characteristics of primary orality. His argument was not that these characteristics had disappeared with literacy, but rather that human experience existed on a continuum of orality and literacy, and that electronic media such as the telephone and television had the potential to introduce a more hybrid phenomenon.

But what of digital media? Because digital media produces such a complex and variable mediascape, it is much more difficult to develop the kind of straightforward and containable categories that made Ong’s work so influential. Oren Soffer (academic text with paywall) introduced the concept “silent orality” as it occurs in SMS texts. This work analyzed the oral features of written, conversational text, troubling the idea of secondary orality and the division of primary orality and literacy.

Ong characterized electronic media as oral because, of course, of its aural quality. Fitting silent visual media into this schema is considerably more difficult because Ong did not make room in his continuum of orality and literacy for visual communication. Once visual communication becomes silent, as in the case of click for sound videos and gifs, its effect on the sensory experience becomes more difficult to describe. Perhaps a new category in Ong’s schema is needed—visuality may be a good start. With this category we may distinguish between aural visuality and silent visuality, and begin to theorize why silent videos are so popular across digital media from texting to social media.

Britney is on Twitter.

04 Jun 18:04

The Internet as Conspiracy Theory

by David Banks

21359643669_fa6ab6e1d8_z

“The founding practice of conspiratorial thinking” writes Kathleen Stewart, “is the search for the missing plot.” When some piece of information is missing in our lives, whether it is the conversion ratio of cups to ounces or who shot JFK, there’s a good chance we’ll open up a browser window. And while most of us agree that there are eight ounces to every cup, far fewer (like, only 39 percent) think Lee Harvey Oswald acted alone. Many who study the subject point to the mediation of the killing –The Zapruder film, the televised interviews and discussions about the assassination afterward—as one of the key elements of the conspiracy theory’s success. One might conclude that mediation and documentation cannot help but provide a fertile ground for conspiracy theory building.

Stewart goes so far as to say “The internet was made for conspiracy theory: it is a conspiracy theory: one thing leads to another, always another link leading you deeper into no thing, no place…” Just like a conspiracy theory you never get to the end of the Internet. Both are constantly unfolding with new information or a new arrangement of old facts. It is no surprise then, that with the ever-increasing saturation of our lives with digital networks that we are also awash in grotesque amalgamations of half-facts about vaccines, terrorist attacks, the birth and death of presidents, and the health of the planet. And, as the recently leaked documents about Facebook’s news operations demonstrate, it takes regular intervention to keep a network focused on professional reporting. Attention and truth-seeking are two very different animals.

The Internet might be a conspiracy theory but given the kind, size, and diversity of today’s conspiracy theories it is also worth asking a follow-up question: what is the Internet a conspiracy about? Is it a theory about the sinister inclinations of a powerful cabal? Or is it a derogatory tale about a scapegoated minority? Can it be both or neither? Stewart was writing in 1999, before the web got Social so she could not have known about the way 9/11 conspiracies flourished on the web and she may not have suspected our presidential candidates would make frequent use of conspiratorial content to drum up popular support. Someone else writing in 1999 got it right though. That someone was Joe Menosky and he wrote one of the best episodes of Star Trek: Voyager. Season 6, Episode 9 titled The Voyager Conspiracy.

In The Voyager Conspiracy Seven of Nine, a former Borg drone who can download and upload data like a computer but still has the reasoning capacities of a fleshy human brain, has decided to upload the ships’ logs into her mind. As a literal cyborg Seven can leverage the storage capacity of a computer with the analytic capabilities we (and even the Federation) have yet to build into an artificial intelligence. No time is spent explaining why anyone would want to do such a thing but perhaps the reason we need no explanation is the same reason anyone thought Siri would be a good idea.

The initial results of her experiment are great—Seven correctly deduces that photonic fleas have disrupted power flow to the sensor grid—but things go awry from there. She quickly starts making connections across disparate events that are “highly speculative” (to borrow a phrase from Vulcan Security Officer, Tuvok) but difficult to disprove. Seven accuses Captain Janeway of plotting to send a Federation invasion force into the Delta Quadrant but not before accusing First Officer Chakotay of plotting to mount a similar invasion against the Federation. The episode crescendos with Seven attempting to flee the ship out of fear that she is the subject of a third elaborate conspiracy to use her as a science experiment.

In the final act of the episode Seven reports that the technology “functioned within expected parameters. Unfortunately, I did not.” It is a simple, elegant way to describe humans’ relationship to their creations. Like a wish granted by a monkey paw, we over-estimate our ability to handle technologies’ fulfillment of our desires. Seven starts by solving problems, then starts to question the motivations of powerful people, and finally turns inward convinced that everyone is out to get her. The first action is useful for a hierarchical organization like a ship. The first two actions are useful in a democracy. This third and final stage is definitely anti-social, perhaps even pathological, and so it is easy to dismiss this self-centered perspective as anathema to any sort of political or social organization.

Psychologists have studied conspiracy for a long time and have come to a similar conclusion. Daniel Jolley [PDF] cites one study that showed being exposed to one conspiracy theory made respondents more susceptible to believing subsequent conspiracy theories and were “unaware of the change in their conspiracy endorsement.” After being exposed to conspiracy theory material participants in one study “were less likely to engage with politics, relative to those who were exposed to information refuting conspiracy theories. This effect was shown to be caused by an increase in feelings of political powerlessness.” Jolley also cites multiple studies that show no particular demographic seems to “reliably predict conspiracy beliefs”, which Jolley interprets to mean that “we are all susceptible to conspiracy theories, which may subsequently help explain why conspiracy theories have flourished. Conspiracy theories appear to be viral apathy.

Political apathy, however, is not the same as total social isolation. Michael Wood, after citing the same Stewart essay quoted above, notes that “research has shown that people who once were afraid to express their opinions openly are now free to gather with like-minded individuals on forums, blogs, and social media, developing opinion-based communities of a breadth and depth never seen before.” Conspiracy in the age of the Internet, according to Wood, has become increasingly vague because the power to debunk has risen alongside the power to question. Instead of describing a plot with an intended goal (e.g. The U.S. faked the moon landing to win the space race.) conspiracy theories describe vague yet menacing government agencies. The idea that the bombings at the Boston Marathon and the Sandy Hook shooting were both false flag operations populated by crisis actors is a good example of post-internet conspiracy. They are specific stories about vague anxieties that the government and other powerful organizations are antagonistic to your existence.

Jolley and Wood are missing something though. Actually quite a few things. Perhaps it is true that everyone is equally capable of believing a conspiracy theory but I suspect there are lots of structural concerns –race, class, and gender positionality just to name a few—that factor into which conspiracy any given person believes in or gets introduced to. For example, Pasek et al. [PDF] show that conservative-leaning white Americans are overwhelmingly more likely to believe that Barack Obama is a secret Kenyan Muslim. Reporting has also shown that it is largely well-educated, affluent parents that believe vaccines cause autism. Conspiracy theories are not, as Stewart claims, “all over the map: … right wing one moment and left-wing the next.” Or at least they aren’t anymore. As conspiracy theories have come into the mainstream they have made real changes to the world: preventable diseases, both biological and ideological, have broken out and they have a very particular political character.

It makes sense then, that recent political candidates have been greatly rewarded by not only citing conspiracy theories, but weaving them into a larger narrative of inequality brought about by elites beholden to foreign interests. The resulting story may seem ideologically confusing –rarely in American politics do we see a candidate defend social safety net programs while deriding illegal immigration—but it is populism, pure and simple.

Again, science fiction is instructive here. 9/11 is often treated as an inflection point for so many socio-political trends and conspiracy theories are no different. The recent X-Flies miniseries shows how the conspiracy theory terrain has shifted over the last 30 years. Whereas the original X-Files series (which ran from 1992 to 2002) cast the conspiracy theorist as a lone searcher for the truth, the reboot must account for a robust conspiratorial culture that has blossomed within populist political circles. “Since 9/11,” Skinner says in the first episode of the 10th season, “this country has taken a big turn in a very strange direction.”

When the original series launched public trust in government was at an all-time low of 18 percent. It went off the air amidst a potent combination of contract disputes and skyrocketing post-9/11 nationalism, but now we have come back to our senses and trust has fallen even lower. Except this new mini-series must deal with a very different conspiratorial terrain that is far more conservative and lucrative. One where the military, small businesses, and the police are the only institutions capable of garnering trust from over half of the population. Conspiracy among government elites is so expected and widely-believed that far-right media personalities not only have a big audience, they can build a successful business off of it. (Not to mention successful primary campaigns.)

The new X-Files perfectly mirrors Americans’ new relationship with political prominence, conspiracy, and governmental over-reach: Scully and Mulder find themselves making uneasy alliances where left and right means less than agitating a populist revolt against elites. The plot of the first and last episodes revolve around a conservative millionaire YouTube personality who wants to help them reveal The Truth but neither of the agents trust his motivations any more than they trust the elites within the FBI. It is a bargain many young leftists are considering themselves: compromise one’s deepest-held values and accept the offer to be brought back into the elite’s fold, or join with the conservative populist with whom you share a common enemy?

In considering the power of the Internet to spread conspiracy theories we have to take into account who is best poised to take advantage of widespread doubt. We have to remember that Seven cast a finger at authority first, but ultimately made it about herself. Such self-centered behavior can cause reactionary, anti-social behavior that easily maps onto open-ended, post-internet. Such vague anxieties are the proving ground for strong-man political campaigns. At the heart of conspiracy theories are disparities of power and any powerful person that promises to act on behalf of the people who “know the truth” can build an immensely successful campaign to extend that power. If the internet is a conspiracy theory, it is a mass of tangled, obscured lines of power that put the individual at the heart of the web. It is a theory that distorts the material relations of authority and constructs a truth that, ultimately, implicates everyone and no one. That truth is out there and to resist it, is futile.

David is on twitter: @da_banks

04 Jun 15:51

Hangouts v10 Introduces Direct Share, Group Invitation Links, and More

by Rajesh Pandey
With the announcement of Allo and Duo at Google I/O last month, many — including me — thought that Google is done with Hangouts. Even though the company suggested otherwise, Google has always treated Hangouts like a step-child. With today’s update to its Android app though, the company is finally adding a number of enhancements to the app indicating that it has still not forgotten about the Google Talk successor. Continue reading →
04 Jun 15:51

Google Maps for Android Gains a Beta Version

by Evan Selleck
Beta apps are common enough for Android, allowing developers to push out new software, and test out future updates, before rolling out the update to the public. Continue reading →
04 Jun 15:49

Snapchat rumoured to have more daily users than Twitter

by Rose Behar

Snapchat, the app where you can make yourself look like a dog and send it to your friends, is becoming an ever more serious contender in the social media game.

Bloomberg reports that, according to an inside source within the company, Snapchat has 150 million daily users, which is more than the approximate 140 million that analysts estimate for Twitter.

That figure was partially reached by looking at Twitter’s monthly active users, which number 310 million according to the company’s most recent earnings report. In the third quarter of 2015, Twitter CFO Anthony Noto said 44 percent of monthly users are active each day in Twitter’s top 20 international markets, and that the company would disclose if there was any drastic change. Since nothing has since been disclosed, it would suggest a daily active user count of around 136 million.

This is a slightly embarrassing state of affairs for the ten-year-old Twitter, which once held the position of being the second most used social platform under Facebook, before being outpaced by Facebook’s own children companies: Instagram, Messenger and WhatsApp.

If true, it means it has just been surpassed by a four-year-old social app built on the sole premise of sending messages, videos and pictures that quickly disappear after being delivered. While that once may have sounded like a gimmick, the platform has proved its staying power, and certainly convinced investors of its worth. In May 2016, it raised $1.81 billion, pushing its valuation to a purported $18 billion.

Related reading: Snapchat raises $1.81B in latest round of funding

SourceBloomberg