Shared posts

15 May 09:39

Vancouver Mayoral Race — Chaos In Unity

by Ken Ohrn

Fractured on the left; chaotic on the right.  What’s a poor voter to do?

Our favourite, harried, Vancouver-centric podcasting politicos at The Cambie Report return YET AGAIN, this time with coverage of new entrants to the mayoral race. Big feet stomping into the scene…and renewed vigour in the debate on all the issues. (ie. housing)

My idiosyncratic precis follows, without any guarantee of accuracy or completeness. Starting with the announcement from federal NDP MP Kennedy Stewart (almost formerly of Burnaby South)…

Cambie Report (28:46): a Precis

Kennedy Stewart Announcement and Mario Canseco Thoughts

Stewart’s Main Focus — Issues highlights

Focus on housing – ruining our city, major stressor
Economy – must work for all; big money and lobbyists must go
Climate & environment – stop profiteers who leave messes behind
Opiod crisis

Other remarks

Fractured progressives??? – not completely true, large numbers are concerned about NPA gov’t
NPA => Harper Conservatives who will make life worse for everyone but themselves
Running due to many calls from business, workers, renters, owners
Running to unite progressives and keep NPA out of City Hall. Make city more affordable

Questions:

Long history in academic work on city politics including a textbook
Focus like a laser on housing

Podcaster Observations:

Running as independent, somewhat puzzling
Who will run as Vision mayor candidate?
Light on policies in questioning
He has a big profile – only Bremner may rise to his level
Progressives are still chaotic; right is chaotic in a different way

Mario Canseco:

NPA spikes Bremner? Fracture of center-right. Fracture of Centre-left.
Bremner thoughts: lots of member signups may not be enough when going city-wide; polling shows negatives for him; questions about his lobbying in the past (may have been NPA Board rejection rationale)
Chernen?? – no focus on housing; appeal may be limited to traditional LaPointe-type voters; hard calculation to estimate old-NPA vote base against possibly fractured centre-left vote.
Stewart: Canseco’s poll (why?); still some reference to Vision (KM pipeline); Vision supporters seem to favour Stewart; is anti-pipeline base enough?
Other Lefties? Partisan mind-set is diminishing due to compelling independents;
Non-Resident voting poll
Campaign financing poll – a factor in mayoral defections
The Vancouver civic election unity movement – deadlines coming; Diane Watts’ fate, lessons here for Adriane Carr and Kennedy Stewart

Further thoughts on Mr. Stewart HERE and HERE. With thanks to Dan Fumano in PostMedia outlet the Vancouver Sun:

So if any Vancouver voters are confused at this point about what the ticket will look like in October, perhaps they shouldn’t feel too bad, considering the fact that Stewart, who has a PhD from the London School of Economics and is currently on leave from SFU’s School of Public Policy where he has taught about democracy, acknowledged that the whole rapidly changing scene is a bit muddy right now.

At Thursday’s news conference, Stewart told reporters: “I’ve spoken with all the parties, and I’ve just decided (running as an independent) is the best way forward. Their processes are a little unclear to me and they keep changing.”

In an interview following the news conference, Stewart told The Vancouver Sun that the political landscape in Vancouver right now, less than six months from the election, “is so tumultuous, you don’t even know what’s going to happen the next day, with the NPA, and with Vision also, and COPE.”

Shauna Sylvester is sticking in the mix — note THIS campaign event set for Saturday May 12, 0930 – 13:00.  Its purpose is to ” . . . kickstart our people-powered campaign”.

Adriane Carr remains quiet, but seems to be simply waiting.  Like all others, I’ll bet she’s spending time estimating potential voter numbers and outcomes, which in her case would seem to end up at:  council? mayor? nothing?

Ian.Campbell.Squamish

Ian Campbell:   From our “Coming Out Of Nowhere” Department: Mr. Campbell, the hereditary chief of the Squamish Nation, may consider a run with Vision Vancouver for Mayor of Vancouver.

With thanks to Charlie Smith in the Georgia Straight:

In a phone interview with the Straight, the 44-year-old hereditary chief and elected councillor of the Squamish First Nation said that he’s seriously considering seeking the Vision Vancouver nomination for mayor.

“We’re all in the same canoe but there are many different paddlers,” Campbell said. “So I think the idea of we’re a large village—we’re a family made up of many diverse players—that excites me on how we can inspire.” . . .

Vision Vancouver councillor Andrea Reimer is one of Campbell’s strongest supporters, noting that he has been “negotiating some of the most difficult discussions in this country in an urban conext with both the provincial and federal governments”.

15 May 09:39

Winner, Name that Ware April 2018

by bunnie

The ware for April 2018 is an SAE 316L stainless steel cerclage currently embedded in my right kneecap. There’s also a pair of 2.5mm holes drilled lengthwise through the patella, and a set of sutures woven into my quadriceps, neither of which show up in an X-ray. The hardware is to repair a double-break of my knee; I simultaneously suffered a patellar avulsion fracture and a tear of the quadriceps tendon. It’s rare to get both injuries at once, but hey why do anything half-assed. As for how it happened – well, you’ll have to believe me that it’s just from falling while walking on flat ground. There was a puddle of greasy/soapy water outside a hawker stall and boom, I’m unable to walk for months. I wish I had some cooler story, so that’s why I had this month’s competition – to try and find a better bar story. To that end, gratz to perlfriend for the most imaginative story; email me for your prize!

This was my first time going through major surgery. I’ve previously had some minor patches and cuts, where I only used local anesthesia and watched the surgeon perform. As a hardware guy, I think your body is the most fascinating piece of hardware you’ll ever own so I don’t miss an opportunity to take a peek inside when maintenance is required (to clarify, I find it totally gross to watch other people’s surgeries, but somehow when it’s my own body its different – my sense of wonder overtakes my aversion to blood).

So I’ve never been put full under before. When the anesthesiologist came to interview me, I asked what my options were for local anesthesia. She then tried to convince me that general anesthesia is very safe because they have this computer running some complicated algorithm that considers my weight and height to dose me correctly. Besides the fact that they had to estimate my weight because I couldn’t stand on a scale, my inner monologue was screaming “As a hardware engineer, putting my life in the hands of a computer sounds terrifying” but instead I manage to ask politely, “and what happens if the computer has a problem?” At which point she smiles and re-assures me that she’s constantly monitoring my vital signs and trimming the dosage.

Side note, a friend of mine later on pointed me to an article where apparently some infusion pumps have Wifi that’s on during surgery and the protocol is pathetically hackable. OK, medical equipment makers: there’s some equipment that simply should not be IoT, and an infusion pump is absolutely one of them. There is simply no valid reason for the computer attending to the dosage level of a potentially fatal chemical to be spending any cycles answering TCP packets. Death by DDoS is not an acceptable scenario. If you need to push an update, do it by a USB disk or a plug-in Ethernet jack, so they can at least air gap the damn thing during an operation.

Had I known about the wifi vulnerability of anesthesia infusion pumps, I probably would not have consented to general anesthesia, or at least asked to check that the model they were using had no IoT capability. But the anesthesiologist finally convinced me under the argument that the local procedure would require sticking a needle into my spinal cord and withdrawing cerebrospinal fluid, and I’m like, I don’t know what that is but it sounds important for my brain to work and I kind of like my spinal cord intact, so maybe it’s not worth the risk.

So, I finally consent to being put under. Propofol, the drug she used to initiate anesthesia, is pretty incredible. It acts within seconds, and despite taking over an hour to metabolise in the liver, it clears from the brain in minutes so you can come out of anesthesia quickly. I have to wonder how they discovered it, or developed it. Anyways, the anesthesiologist inserted an IV into my right hand – I appreciated her attentiveness to the detail that I’m left-handed – and proceeded to administer the propofol. I could definitely feel the propofol as it entered my system. I had the same feeling of pins and needles that one gets when a limb falls asleep, a sort of searing, prickling pain. The pain quickly shot up my arm, then a warm wave of prickling across my face, and then…

I’m in the recovery room, and my surgeon is there giving me the post-op interview. About 2.5 hours of my life went by and I had no memory of it. Sure enough, no nausea or dizziness – the anesthesiologist did a good job. I was lucid and talking to the surgeon about the operation. Then, maybe about five or maybe fifteen minutes later, my body goes into shock – I’m shivering uncontrollably, and I’m starting to become acutely aware of the pain in my knee.

Apparently, during the surgery, I was given Fentanyl and Ultiva, both potent opioid painkillers. They give it to you because even though you’re out, your body has autonomous responses to pain that can complicate surgery with excess bleeding and so forth. From what I read, both clear pretty quickly, so I’m guessing the onset of shock corresponded with the painkilling effect of the injected opioids wearing off.

I know exactly what drugs and equipment they used because at the conclusion of the surgery I was given a detailed itemized bill of everything involved; above is a tiny sample of it. It was fascinating to reverse engineer the surgery from the BOM. That’s how I knew they used a 2.5mm drill bit, how I knew they put a breathing tube in me, and that I also got injected with Aloxi to help suppress nausea. I actually sort of wish I knew about the drill bit ahead of time, because I would have asked to keep it. I figured they’re throwing it away so getting the surgical-grade 2.5mm bit that was used to drill holes in my body to use later on to drill mounting bosses would be pretty neat.

Just for the record, the overall hospital bill including surgeon’s fees, surgical materials, OT rental, recovery ward, drugs, X-rays and my first round of physiotherapy was about S$20.7k, or US$15.5k at the prevailing exchange rate. This is considered expensive by Singapore standards, as I went to one of the nicer private hospitals for the operation, but as I understand it is quite cheap by US standards. Fortunately my insurance covered all but about $350 of it.

This was also my first time using opioid painkillers in a serious way. I’m deeply concerned about the addictive nature of opioids, so I don’t take them lightly. I had taken Vicodin once before when I had a wisdom tooth removed, and I remember it having the effect of “moving the pain sideways” – it felt like the pain was just outside arms length, so I could ignore it if I wanted to, but I definitely knew it was still there. Knee surgery was about a hundred times more traumatic than getting a wisdom tooth removed, and for the first day there’s a terrific amount of pain. So they gave me Targin, which is a mix of oxycodone and naloxone.

Targin is a clever way to manage opioid addictiveness. Oxycodone is the opioid; naloxone is the stuff they use to treat opioid overdoses, and it blocks the painkilling effects. Nalaxone is mixed in with the oxycodone to prevent mis-use (crushing & snorting or injecting), and naloxone is poorly absorbed through the digestive system, so when taken orally the oxycodone can still work. For a short time. When the surgical painkillers wore out, basically all the pain receptors in my knee were screaming at me and informing me rather viscerally about what I already knew intellectually – that my knee was cut up, had holes drilled in it, wired up with stainless steel, fibers woven into the muscles, and stitched back together. So I got one dose of Targin, which kicked in in about 20-30 minutes. The oxycodone effect was pretty strong – the acute pain just went away, everything felt okay and I drifted into sleep…only to be woken up about 2-3 hours later by the pain in my knee, presumably due to the nalaxone component finally kicking in and suppressing the opioid effect. However, I was only allowed one Targin pill every 12 hours, and thus had only acetaminophen to manage the pain until the next scheduled dose. It was definitely manageable with some distraction, but there was no way I was going back to sleep again. I could see how oxycodone could be addictive; everything just seemed so okay despite everything being incredibly wrong, so I’m grateful they mixed it with nalaxone and administered it such that my final memory of the trip was being clobbered with my knee pain rather than a lingering desire for more.

Of course, the pain doen’t end in 24 hours, but they “graduated” me to a weaker painkiller, Ultracet. The Ultracet is a mix of Tramadol and acetaminophen. Tramadol itself really kicks in only after it’s processed by the liver into desmetramadol by the enzyme CYP2D6, and I’m heterozygous for a copy with reduced activity. I guess that might explain why when I took the prescribed dosage of two pills it was reasonably effective, but when I halved it to one pill I felt almost nothing at all. Overall, Tramadol was less effective at painkilling and more effective in just making me feel a little dizzy and sleepy. In addition to binding to opioid receptors, it’s also a seratonin releasing agent, a bit like MDMA. So during the daytime I would just deal with the pain by distracting myself with work, and at night time when trying to fall asleep, I’d take the Ultracet and sleep like a baby – I was sleeping almost 12 hours a night for the couple weeks after surgery, which I think was extremely helpful in my recovery. Significantly, Tramadol doesn’t quite suppress pain; like my one experience with Vicoden, it turns it into a fact I’m aware of but can deal with. When I would sleep, my dreams would be deep and lucid, but my brain would often reference the pain in my knee and ascribe it to some random weird dream explanation, like trying to go in for a big penalty kick in a soccer game over and over again. Fortunately, Tramadol didn’t feel like it had too much of an addiction risk for me – the awake-state “high” was a bit unpleasant, as I don’t particularly enjoy the dizziness or drowsiness. It was more of a sleeping aid, as it allowed my mind to let go of the pain in my knee while falling asleep. I was finally able to wean myself off painkillers entirely and fall asleep drug-free about two weeks after the operation, but in a weird way I ever so slightly missed that really sound sleep I’d have while on them. Opioid painkillers are no joke. They’re absolutely essential for dealing with pain, but take them with discipline and caution.

While the story behind the accident itself wasn’t very interesting, I did find going through the surgery, healthcare system, and drugs to be an interesting learning experience.

15 May 09:38

Weeknote 19/2018

by Doug Belshaw

Next week I’m working from home on Moodle stuff, and attending the Thinking Digital Conference on Thursday, as well as the pre-conference workshop and dinner on Wednesday afternoon/evening.

15 May 09:38

Name that Ware, May 2018

by bunnie

The Ware for May 2018 is shown below.

This month’s contest isn’t about naming a ware. Instead, the challenge is to guess the total amount of vias + holes on the NeTV2 PCB. The closest (or first correct) guess will get a DVT-revision of the board (same as the one shown above) as a prize! Please note: depending on your country of residence you may have to cover import duties or VAT.

At the end of this month, once the contest is over, I’ll upload the PCB source files to a public repo. The contest would be just too easy otherwise :)

15 May 09:37

Thomas opening Reboot, with my name as sponsor ...

by Ton Zijlstra

Thomas Opening Reboot
Thomas opening Reboot, with my name as sponsor on the banner

Last night at my birthday party one of the guests was Sam. He had just finished his Masters in 2009, when I invited him to Reboot in Copenhagen. A conference I first visited in 2005, which became a turning point in my professional life. In 2009 I was a main sponsor, and one of the perks was bringing people to the conference for free. Sam was one of them. At my birthday party he told me how that had been a pivotal point for him, an eye opening experience so shortly after his masters. He went on to create similarly inspiring events in the Netherlands with others, and remarked how spoilt he was with being able to do that. Awesome how paying the spirit of Reboot forward has influenced people till this day.

15 May 09:36

Google’s Big AI Advance Is… Script Theory?

by mikecaulfield

Like many people I watched Google’s demo of their new Android system AI calling up a hair stylist and making an appointment with trepidation — was this ethical, to not disclose that it was an AI?

But now that the smoke has cleared, I’m realizing something a bit more disturbing. After years of Big Data  and personal analytics hype, the advance that Google demonstrated is an application of 1970s AI work that requires none of that.

Setting up a haircut appointment is a social script. It has a sequence of things that happen, usually in a predictable order. The discovery of the importance of social scripts in computational understanding of communication was a big part of what Schank and Abelson brought to the field of AI in the 1970s.

Scripts were important both in terms of computers navigating standard social situations, but also in understanding stories about those situations. When I studied linguistics, one of my favorite little facts was you could often discover socially legible scripts by noticing how stories were elided. For instance, if I say “So I go to a restaurant, and the server gives me the bill…” no one stops me and says “Wait, you got a bill before you ate anything? And who is this server person?” The understanding in storytelling is I can evoke a script and then start at the part of the story that deviates from the script. That’s how core they are to our thinking and discourse, and Schank and Abelson made the case in the 1970s that mapping out these scripts would be core to computer understanding as well.

While less physical than dining, booking a haircut over the phone is a script too. It follows a particular sequence and has slots where the unique bits go.  In general we find out if I am in need of a particular stylist, and then drill down on a date and time. Importantly, it works because I’ve learned the script and I know the things the hair stylist will ask and I have the answers the stylist requires. I know I need to provide date, time, and stylist, and I might need to supply a rough time of day preference — mornings, afternoons, end of day, before work. On the other hand, I know the stylist is not going to ask me if I’d rather have a chair nearer to the window or the bathroom or what type of music I prefer in the salon.

Here’s the thing: The precise nature of social scripts is that they often allow people with no knowledge of one another to negotiate transactions successfully. Preferences figure into that but are usually easily enumerated by each party — because that’s part of the script.

Because of this, I don’t really need personal analytics to discover that I like my cappuccinos extra dry. I have years of experience walking through scripts where I’ve learned to specify that, and the script has a very specific spot where that goes. The script has taught me how to concisely enumerate my preferences in ways useful to baristas.

In fact, analytics in these situations end up being a lesser reflection of the explicit inputs into the script. For example, Google might search my flight booking data and find I like window seats towards the front, that I prefer Alaska and layovers with a bit of buffer in them. But the patterns I produce in what I get for flights aren’t a mysterious secret sauce discovered by analytics, they’re the product of me specifically asking for nine things when I book flights. Nine things I can easily rattle off, because I’ve been doing the “booking a flight” script for years.

So here’s the question about the “haircut” demo: if the nature of the social script is you *don’t* need deep knowledge or background for the script to work, then what’s all the talk about personal data being Google’s prime AI asset about? What’s all the machine-learning hype?

After years of sucking up all our data Google’s big AI advance is… Script Theory. Which requires none of this. Maybe we should be talking about that.

15 May 09:36

1 GBit/s At Home Was Yesterday! 10 Gbit/s Is The New Black!

by Martin

While I’ve had a 1 Gbit/s Fiber connection at home in Paris since 2014 with speeds well beyond 250 Mbit/s downlink and 50 Mbit/s uplink, most people in Germany can still only dream of fiber connectivity. So while I consider myself fortunate with fiber in Paris and at least 50 Mbit/s down – 10 Mbit/s up in Cologne the next step has now been taken, 10 Gbit/s symmetric for home users!

Golem reports (already a few weeks ago) that Swiss mobile and fixed operator ‘Salt’ has now started offering 10 Gbit/s fiber connectivity (XGS-PON) in 30 cities in Switzerland in cooperation with local utilities that have deployed fibers to homes for around 50 swiss francs a month. The router delivered with the offer has one 10 Gbit/s Ethernet port and four ‘standard’ Gbit/s Ethernet ports. Yes, the 10 Gbit/s are shared, but hey, that’s quite a comfortable sharing situation…

So much for what you can do with fiber once it is there. And now to back to my 50 Mbit/s down – 10 up…

15 May 09:36

Can markets for intent data even be a thing?

Doc Searls is optimistic that surveillance marketing is going away, but what's going to replace it? One idea that keeps coming up is the suggestion that prospective buyers should be able to sell purchase intent data to vendors directly. This seems to be appealing because it means that the Marketing department will still get to have Big Data and stuff, but I'm still trying to figure out how voluntary transactions in intent data could even be a thing.

Here's an example. It's the week before Thanksgiving, and I'm shopping for a kitchen stove. Here are two possible pieces of intent information that I could sell.

  • "I'm cutting through the store on the way to buy something else. If a stove is on sale, I might buy it, but only if it's a bargain, because who needs the hassle of handling a stove delivery the week before Thanksgiving?"

  • "My old stove is shot, and I need one right away because I have already invited people over. Shut up and take my money."

On a future intent trading platform, what's my incentive to reveal which intent is the true one?

If I'm a bargain hunter, I'm willing to sell my intent information, because it would tend to get me a lower price. But in that case, why would any store want to buy the information?

If I need the product now, I would only sell the information for a price higher than the expected difference between the price I would pay and the price a bargain hunter would pay. But if the information isn't worth more than the price difference, why would the store want to buy it?

So how can a market for purchase intent data happen?

Or is the idea of selling access to purchase intent only feasible if the intent data is taken from the "data subject" without permission?

Anyway, I can see how search advertising and signal-based advertising can assume a more important role as surveillance marketing becomes less important, but I'm not sure about markets for purchase intent. Maybe user data sharing will be not so much a stand-alone thing but a role for trustworthy news and cultural sites, as people choose to share data as part of commenting and survey completion, and that data, in aggregated form, becomes part of a site's audience profile.

15 May 09:36

Starbucks: One Place to be Working Anywhere

by Andy Abramson

When Starbucks first arrived on the scene I’ll admit I was a bit late to the party. When it came to coffee I was more of an after a meal coffee person, not a coffee addict. In reality, it was Wi-Fi that got me hooked on Starbucks. I would spend time locating the Wi-Fi locations that in their day were powered by T-Mobile and take the tiniest of laptops I had, and even some Wi-Fi enabled phones, and do all I could to work from a Starbucks.

Along the way I quickly learned that Starbucks was not really ready for Wi-Fi or what would become “Conference Room S.” They didn’t have enough tables for co-working, nor did they have enough power outlets. While that may still be an issue is some older locations that have not been updated, I have to say, if any company has embraced the Anywhere Worker concept of where people can be Working Anywhere it has been Starbucks. And if any company missed the mark in keeping that cultural workplace shift, and is now playing catch-up, it was T-Mobile who had the real estate, and as Machiavelli wrote in “The Prince,” so well, “Territory establishes control.”

And now that T-Mo and Sprint are merging, Wi-Fi installed in all of their locations would have made Starbucks even more essential to the Anywhere Worker. But I digress. Starbucks to me has always been the McDonalds of coffee. They nailed the concept of consistency early on, giving customers a uniform experience all over the nation, and now around the world. Even more so, Starbucks has really grasped the concept of being the place people meet. It can be for a catch up, for a first date, for a short, informal business meeting or even where students of all ages meet and gather to work together. While Regus and WeWork may be the “co-working” hubs of many, Starbucks, like libraries has been the co-working spot of choice of so many for so, so long.

Like McDonalds, Starbucks has embraced the concept of the drive through. Over the past week, I have sat inside many a Starbucks as I have gone on the road, taking my restored sports car for a spin….a long one at that, and as I have watched first hand, the drive throughs are Starbucks boldest and best move yet. While the mobile app lets you order and pick up, the drive through phenomena is really interesting.

Just as when Starbucks first went with Wi-Fi, they’re still learning. The number of staff focused on mobile often leaves the inside the coffee shop line waiting to place their order or receive it in many high volume traffic locations.

So, while the drive through is high on convenience, it’s often low on speed, especially if you use the Starbucks app while heading to your favorite location.  Yes, you can order on your mobile, time your arrival, and be sitting in line while someone ahead of you orders their fresh milk, double shot, mocha, cappuccino, extra foam, cinnamon and extra something, while all you ordered was a double shot espresso and a bagel. McDonalds this past year solved the long wait vs. short delivery time and regular drive through order, with a waiting area for those who have more challenging, larger or more complicated orders.

When Starbucks does that, they will have perfected the drive through and pick up the order experience. But, until then, the lines will grow, and the experience will only get better…...

15 May 09:35

SotD: You Really Got Me

Oops, we’ve been too long without a Maximum Rock and Roll song; thus this Kinks classic. The Kinks are cool but to be honest, there are only a couple of their songs that stick in your head from one year to the next; this is one of them. But if you’re too young to have seen them perform at their peak, you missed something special.

The Kinks

I remember a concert at some huge hockey rink in the early Eighties; I have rarely in my life been so entertained. It was a big stage with two long runways out into the crowd; one for Ray Davies, the other for Dave. Their rock-n-roll moves were exciting and graceful and seemed totally spontaneous, which meant they’d practiced a lot or had just been on tour for a long time.

There was this thing that I guess was a routine part of Kinks gigs back in the day: Every song or two, some woman would burst out of the crowd, charge up on the stage, and throw a big hug on Ray Davies, who grinned a huge grin every time. Then she’d be courteously escorted off-stage by a security guy. It was kind of hilarious.

The performance were fast and committed and just totally fun. Then, at the end of the show, they pulled this awesome trick: There were a few big hits that hadn’t been played, so we were expecting lots of encores. They came back pretty fast, not making the crowd work for it, played one minor, song, said, “Thanks, bye”, left the stage, and suddenly the house lights came up. Twenty thousand people howled in outrage and in about three seconds, they killed the house lights, and the Kinks roared into You Really Got Me while the crowd was still yelling. I’ll never forget it.

The whole experience is nicely captured on their live One for Road album, which is really great; it’s effectively a greatest-hits package that captures a lot of the energy and fun of the shows; way more than the sum of its parts.

This is part of the Song of the Day series (background).

Links

Spotify playlist. The One for the Road live version on Amazon, iTunes, Spotify. Here’s a nice live video from about 1980.

15 May 09:34

Sony Kando 2.0

Caution: semi-connected rambling ahead...

bythom US CA Monterey ZS200 21487


The Urban Dictionary describes “kando” as "one who excels in an activity to a level of such proficiency as to make the opposition and fellow teammates alike appear mentally challenged.” …

15 May 09:34

Can you do Functional Programming in any language?

by Eric Normand

Can you do functional programming in any language? Is it possible to do functional programming in C, in Java, in assembly, in Ruby, or do you need a functional language? What is a functional language anyway?

Transcript

Can you do functional programming in any language? Is it possible to do functional programming in C, in Java, in assembly, in Ruby, or do you need a functional language? What is a functional language anyway?

My name is Eric Normand, and these are my thoughts on functional programming. The short answer is yes, you can do functional programming in any language.

Functional programming is a paradigm. It’s all in your mind. It’s how you break down problems. It’s how you see things. It’s how you think about the problem, and how you structure solutions.

If you’re thinking about the thing in terms of actions, calculations, and data, then yes. You can do functional programming in any language. Just like you can do object-oriented programming in any language.

Object-oriented programming is also a mindset. It’s a paradigm. You could figure out how to make an object system with messages passing around in C.

In fact, I’ve done that before. What I found though, and what I think a lot of people find when they do something like that, when they create a little object-oriented system in a language like C, is that so much relies on the discipline of the programmer because you could always slip out of that object-oriented programming. You can sneak behind the nice veneer you put on, and just mess with pointers, and do all the C stuff that C allows you to do.

If you’re doing functional programming in C, you would have all of those same possibilities. They would tempt you. People who are really good at functional programming, who are used to it, who are well versed in how to solve problems with it, they tend to…and they like functional programming, too. They’re choosing to do functional programming.

They’re going to have a better time because they’re choosing to use functional programming. It is a choice that they are imposing on the language on the program that they’re writing. Even if the language doesn’t provide something, they will write it themselves.

They have this discipline. That is what allows them to do functional programming, even when the language is not really helping them. That’s my short answer. A short answer is yes, you can do functional programming in any language.

The long answer is you probably don’t want to. One reason is that relying on discipline might work if you’re writing a small program or you’re writing a program by yourself or on a very small team, you can handle the discipline of it.

You can handle the copy on right discipline or the append only semantics or the lack of any help figuring out what is an action and what is the computation. It’s all discipline. You have to know this thing is an action. I shouldn’t call it from a computation or a calculation.

[background sounds only]

Eric: The other thing, the other part of the question is, if you’re going to…yes, you can do functional programming in, let’s say JavaScript. If you don’t know functional programming, you’re not going to learn it in JavaScript. It’s like trying to learn to speak a natural language, like trying to learn.

Let’s say you don’t speak Spanish. You’re going to try to learn Spanish just from people who also don’t speak Spanish. Maybe just from a book. You have no help. Sure you can do it with tons of willpower. Or you could get on a plane. You can fly it to a Hispanic country, a country that speaks only Spanish. You can start picking up this and that.

You have people to ask for help. All the signs are in Spanish. It’s just immersion in Spanish. You’re going to pick it up. You’re going to feel like this need to learn it. Even if you still learn it from a book, there’s a lot of stuff pushing you in that direction.

That’s been my experience with functional programming in other languages that you can do it. If you don’t already know functional programming, you’re going to feel it’s not right. You’re not going to learn it. You’re never going to get over that hump because you can always just revert back to whatever the language is, whatever is natural for that language.

That’s what I find, is people who say, “Oh, I know functional programming. Sorry, I’m learning functional programming. I’ve heard I can do it in JavaScript.” You’re going to learn this much functional programming and not really get the meat of it. There’s a lot of people who…it’s all cool. They don’t get very deep into functional programming.

That’s cool if that’s how deep they want to go. There’s deeper stuff that they’re going to miss because they’re not forced to find functional solutions by their language.

[background sounds only]

Eric: Just like you can learn to say “gracias” and that kind of thing. Just from picking it up. You’re not going to learn it. You’re not going to learn all the Spanish by doing that. Even conversational Spanish.

Yes, you can do functional programming in any language. It’s going to take discipline.

You’re not going to be able to learn functional programming and three is, it’s going to be a pain. That discipline could be a real pain. It could feel unnatural. It could feel like it doesn’t really work in that language. It could feel like it’s not the language’s fault, it’s functional programming’s fault.

Functional programming is totally impractical. It could feel like that. I don’t recommend people try if they’re not already well-versed in functional programming.

I do not recommend they try doing something like functional Java, functional JavaScript as an introduction to functional programming. It’s going to feel like, “Why am I jumping through all these hoops? Why am I copying everything? Why can’t I just modify this variable?” It doesn’t make sense because they’re right.

My language is letting me do that. It’s the simplest solution. Why should I do this other thing? Of course, the answer is, until you do all functional programming everywhere, immutable everywhere, you don’t realize the benefits.

That brings us to what is a functional language. Of course, it’s one of those controversial topics where you can say, there’s no real answer. Anytime someone actually tries to define it they’re missing stuff. It opens up the doors for argumentation and flame wars.

I don’t want to go there and say, “Here’s the definitive answer. Here’s the definitive way of defining what a functional programming language is, what it takes to be a functional language.”

I actually don’t think it’s that meaningful. When I use the term, what I mean is a language that helps you do functional programming. A language that helps you do functional programming in whatever way that the language chooses. In Haskell, it helps you do functional programming because everything is immutable by default.

You have functions which are pure. You can do calculations. You have an IO type for doing your actions. The language helps you. The type system helps you by separating those things out, the calculations from the actions. I also think that Clojure is a good functional language. It’s functional because it has immutable data structures by default.

It doesn’t help you separate out the calculations from the actions very much. It does encourage you to separate them out. They have been separated out in much of the core library, for instance.

It also helps you do that stuff I’ve talked about before, about reasoning, about the actions, reducing, collapsing the states of the actions into a smaller set so that things become more manageable. Because it does all that, I say that it’s a functional language.

JavaScript has functions, has higher-order functions. It doesn’t have the immutable data structures. It doesn’t encourage immutability in any way. It’s much less so. If you want, you can call it a continuum. It also encourages this other style where you’re using mutable objects and have these methods. It has the class syntax.

It’s actually not so functional when you look at it as a whole. There is a nice functional subset in there which would make it really nice for doing functional programming if you could restrict everything to that subset. I would say that that’s a pretty good functional language.

It’s a mutable functional language. You can work around that with a little discipline. Anyway, that’s how I think about it. It’s a spectrum. I think language subsetting is an interesting idea.

Like JavaScript, “Aw, it’s this thing that everyone in the world is going to use.” You can find a little slice of JavaScript that works for you. You can set up some linters and have a reasonable functional language there. Is that too windy in the microphone? It’s pretty windy from my perspective.

All right. For those of you who have stayed till the end, you have something special. There’s something I want to say that’s related to this immersion in the functional language to help you learn functional programming. I worked in Haskell for over two years, almost three. What I mean is I was immersed in Haskell.

I was immersed in a language that was definitely functional. There was almost no other style possible in Haskell. I had already done a lot of Clojure on the side on my own projects and used it at small things at jobs and stuff that wasn’t going to go into production.

An immersion in Haskell really taught me to appreciate the separation between calculations and actions. Just in a way that I find that a lot of Clojure programmers don’t appreciate the immersion in it, and the type discipline, too.

The type discipline of…this is probably a topic for another episode. Just like in actions where anything is possible really, you want to restrict that. You want to collapse down the possible states into a fewer number. If you have something where the order matters maybe you can make the order not matter.

The two states where you have A comes first or B comes first, now you can make it doesn’t matter. It’s the same. You get the same answer. You collapse the two states down into one state. Just in that same way, I feel the type discipline that Haskell’s type inference engine enforces, collapses states.

A Clojure programmer might say, “I’m going to return a number or a string or nil.” That’s really three possible states. You’re going to have to check those later. Whatever consumes that return value. You’re going to have to. You’re going to have to check. You’re going to have to branch. You’re going to have to do something based on what you got there.

Whereas in Haskell you can only return one thing. If you do want to return multiple different things, you have to be very explicit and encode that in a type. You’re making that choice, “This is important enough. I’m going to use all these cases later, so I’m going to make a type for this.”

In Clojure, we’re much more loosey-goosey. That opens up the possible states. States are multiplicative. They compose by multiplying each other.

All right. That’s going to be another episode, so stay tuned. Subscribe to the podcast. Subscribe to the YouTube channel.

This has been Eric Normand. I’ll see you later. Bye.

The post Can you do Functional Programming in any language? appeared first on LispCast.

15 May 09:32

Faulty Logic

by Linda Besner

For the past few months, a single advertisement has been relentlessly popping up in my Twitter feed. “Tired of the internet shouting factory?” it asks. “Welcome to Kialo.” The name is Esperanto for “reason,” and the site is a collaborative debating platform where you can host or join discussions and contribute to arguments on both sides. The promise is of a certain kind of orderly hush, a philosophers’ glade where — through quiet, structured dialogue — initiates can cleanse themselves of intellectual impurities and dress their thoughts in the plainest, most honest garments. I decided to start a debate on a topic that had become a pressing concern in my world, and which I felt genuinely conflicted about: Should art made by artists accused of abuse be removed from cultural institutions? The site is built so that each argument branches into a tree, with each statement being broken down into further pro and con discussion. As the debate’s administrator, I had the primary responsibility for assessing where other contributors’ statements should fit, and for helping them break down their initial entries into concise propositions.

Within a few days of beginning the discussion, I noticed some dirty footprints starting to muddy up my glade. Even though everyone had the freedom to argue on both sides of the debate, vanishingly few of my fellow symposiasts were interested in building the argument for excluding the work of abusive artists. While the site’s users are anonymous, most of the usernames were male, and I was fielding a lot of entries like, “Are you suggesting abusers should be psychologically abused by being told what they produce is worthless?” The other noticeable, and related, problem was just how much trouble people had in following the structural rule meant to guide us to building coherent arguments: that each entry should be a concise claim. As a microphone at a Q&A after a film screening seems to have magical properties that make audience members forget what questions are, here was the opposite effect — would-be debaters seemed to forget what statements were.

Laying out coherent arguments is harder than it looks

Laying out coherent arguments is harder than it looks. In the course of a debate against Stephen Douglas in 1858 (the famous series of debates on slavery, for which the Lincoln-Douglas debate style was named) Lincoln accused his opponent of using “a specious and fantastic arrangement of words, by which a man can prove a horse-chestnut to be a chestnut horse.” As audience members, we are easily fooled by this kind of semantic juggling. When we try to formulate arguments of our own, we are likely to mix up the chestnut and the horse purely by accident.

In effect, it turned out that having a civilized, carefully managed, and logically coherent debate online did something I wouldn’t have expected — it made arguing boring and unsticky. I started neglecting my administrative duties and receiving notes from the site saying they understood that responding to suggested claims could be time-consuming, but that contributors “really make an effort” and it wasn’t nice to ignore them. Neither had the debate done much to advance my thinking on the topic I’d proposed. I started to wonder: Was logic an inappropriate tool with which to approach this question? When it was suggested that at issue might be how victims of abuse felt rather than what rights artists had, this avenue of discussion seemed to be a dead end — if this was about feelings, what was there to talk about?

Debate sites tend to advertise themselves as civilized upgrades to the fractiousness of online discourse. Idiots argue. Intellectuals debate, reads a banner on QallOut, where users can videoconference each other to debate topics like “The biggest problem facing the world is the federal reserve,” “The narrative of Christianity is unproven,” or “It is always wrong to deliberately kill a toddler.” These sites espouse the hope that online debate will demolish echo chambers, embolden truth-seekers, and shame the purveyors of bullshit, broadly defined. But the perceived value of debate online relies on a somewhat regressive notion: that logic has a purity that cuts across cultural and other identities. The fixation on logic as an ideal vehicle for human progress is less a reflection of the practicality of this means of resolving our shared issues than it is a longing for a moral framework beyond human perceptions.

Perhaps it’s that users aren’t being rigorous enough in their application of logic to contemporary questions. But more likely, the answer isn’t in a stricter adherence to the rules of formal debating, either in dedicated spaces or on social media. The utopic vision of human perfectibility through reason obscures what online spaces can actually offer: a broadening of our conception of what it is to be human.


Moderation of debate sites differs widely, as does the quality of discussion. I saw a debate on QallOut with the topic “A person’s clothing is not a cause of rape”; on debate.org I saw “Vote yes if you want to kill feminist as a sport,” and on createdebate.com I saw “The average Jew would kill you over a penny.” Of their position on hate speech, QallOut’s founders write, “If someone says something awful on QallOut, they need to step up and defend that” since “True hate speech can’t stand up to this kind of scrutiny, leaving the speaker looking foolish and discredited.” People talking through their disagreements one-on-one is seen as a grand project in which clashing viewpoints can be subdued by logical argumentation — and not just subdued, but actually resolved. Debate is presented as a good in and of itself, regardless of what exactly is being debated.

The Western consideration of rhetoric as an art begins with the Sophists, a philosophical movement that arose in Athens in the fifth century BCE. The Sophists believed there was no “truth,” only perception. Everyone lives inside their own all-enveloping universe in which the physical properties of reality, to say the least of its moral qualities, are entirely individual and can in no way be measured against a common yardstick. “Man is the measure of all things,” Protagoras wrote. If Protagoras thinks the water at the gymnasium is cold and Hippocrates thinks it is warm, then it is cold for Protagoras and warm for Hippocrates.

In private spheres of our lives, this relativism is (relatively) easy to work around — Protagoras can choose not to swim. But in the political sphere, when we are required to act together, how can we bridge the distance between our separate realities? The Sophists say that the best we can do under the circumstances is concede to the orator who is able to convince the largest number of people. Divorced from any objectively true vision of reality, the art of persuasion is all there is. If the majority decided to put Socrates to death, then Socrates’ death was, for all intents and purposes, the right thing.

The problem of relativism is one of Western philosophy’s Weebles; it tends to be knocked down only to pop back up again. Is it possible for us to know the truth about anything, and if so, how would we achieve this knowledge — also, how would we know if we had achieved it? Aristotle believed the evidence of our senses could help us describe and classify what was true about an octopus; relativism, in which one opinion was as good as another, he easily dismissed. He also set out a system of syllogisms by which we could judge whether an argument was consistent. In his seminal work, Rhetoric, he introduced the rhetorical terminology of ethos, logos, and pathos — the personal trustworthiness of the speaker, the logical coherence of the speech, and the appeal to the audience’s sensibilities.

Underlying much of the enthusiasm for debate is faith in a universal mode of reasoning which not only cuts through differences in experience, but renders them irrelevant

For Aristotle, rhetoric wasn’t simply batting arguments about without expecting to advance shared knowledge. This is where we get the idea of “sophistry” as a pejorative, meaning to disguise a bad argument as a good argument — systematizing logical deduction as a form of reasoning was meant to eliminate the possibility of being deceived by verbal tricks. Aristotle saw the possibility of misuse in laying out his theory of rhetorical tactics; in the wrong hands, persuasion could be used for ill. But he generally agreed with the site administrators of QallOut — that it would be easier to convince people of things that were just and good than of things that were not. So “the average Jew would kill you over a penny” should be easy to argue against, and your audience should find arguments against this thesis more persuasive.

Contemporary debate culture seems to be a cross-breed of Sophist and Aristotelian beliefs. Ethos, logos, and pathos, or related terms, sometimes appear on judges’ scoring sheets in contemporary high school or university debates — in Australia, debaters are judged on manner, matter, and method. Debates are a gamification of thinking in which the winner is the debater or debate team that manages to convince the judges — a good debater should be able to argue either side of the same question and win. This suggests that truth is relative and persuasion is all. However, debate is also lauded as a pro-social act, one in which people can improve their thinking and perhaps build greater consensus.

Today, the fundamental orientation of online debate culture is toward universals, which are more likely to spark a reaction. There is a heavy reliance on words like “always” and “never,” as well as a tendency towards extreme responses to perceived social ills: “That music glorifying violence against women should be banned,” “Schools should block YouTube,” “Affirmative action should be abolished.” It’s an indulgence in a fantasy of control — if I ran the world, I would make all prospective parents attend parenting classes, or abolish progressive taxation, or fund a space mission to Mars, and the rest of you, with your individual needs and experiences, would be subsumed under the wisdom of my one rule. The fact that the high schoolers in crookedly knotted ties or Redditors killing time are not in any position to see their proposals enacted differentiates this kind of academic debate from, for instance, parliamentary debate, in which there is a risk of actual consequences. Most of us engaging in academic debates have the luxury of taking ourselves very seriously, while also being protected from urgently needing to determine where truth or justice might lie.


Winning a debate is like winning a game of tennis in the sense that afterwards, tennis is essentially unchanged. You can’t solve tennis’ underlying tensions by playing it, and you do not lay a question to rest by debating it. The conventionally hopeful formulation that begins the exercise — “be it resolved” — is the first misdirection, as the chance of coming to a final answer, such that no one will ever need to discuss the question again, hovers around zero.

Sites that teach debating know this. ProCon.org offers students what would, in another context, seem like an invitation to plagiarism: lists of popular debate topics along with a rundown of common arguments on both sides, pithy quotes from experts, and rundowns of the history behind the pro and con sides. In the same way that you might study the French Defence or Alekhine’s gun in chess, there are recognizable gambits that lead to well-worn counter-moves. The game is to trap your opponent in a logical corner, and the first to contradict themselves loses. It’s a game that teaches us to pit the white and black positions against each other; at the same time, a utopic hope persists that at the end of the game, black and white could find themselves on the same side — the side of truth. They would get there, presumably, by way of logic. Underlying much of the enthusiasm for debate is faith in a universal mode of reasoning which could not only cut through differences in experience and vantage point, but render them irrelevant — if everyone could get onside of logic, they would reach a consensus.

The ostensible divorce of reasoning from identity becomes a meta-argument for universal truths and solutions. It works to shore up the idea that a logical truth will stand on its own no matter who is delivering it. Some users defend logic as if it were a personal friend under attack: Reddit hosts a subreddit called “a place for bad logic,” where users post examples of logical gaffes they’ve spotted on other subreddits — it’s fashionable for Redditors to perceive themselves as lone philosophers in a sea of undeveloped minds. A subreddit for “open debate” starts with a question about where to find a debate about gun control in which people use “actual arguments” rather than acting “like five-year-olds.” On Twitter, a search for the hashtag #logic is full of posts that extol, with cult-like fervor, the power of “objectivity” and “intellectual honesty” rather than feelings or experiences as the true tools of cognition. These calls are used to elevate status by aligning oneself with the purity of reason, which, if only those with false beliefs would listen, would bring them into an apprehension of truth. Declaring oneself on the side of logic sets up an implicit divide between the rational self and the irrational others — it requires at least a notional opponent.

The spirit of sites like Kialo and Qallout is one of reformist zeal, like the temperance movement: where most online arguing is rude and undisciplined, and easily veers into abuse and hate speech, the sites offering debate rather than argument promise to advance the human race through etiquette and rigorous logic, which will eliminate wrong or harmful beliefs through informed dialogue. But logical argumentation rarely makes people change their minds; neither does exposure to facts. In a 2016 article, researchers at Cornell analyzed data from Reddit’s ChangeMyView community, where users propose a thesis and invite others to debate. While the results showed that some tactics are better than others — using different words from those used by the original poster in order to shift the frame of the discussion; using specific examples; using more tentative phrasing rather than speaking with a show of certainty — the instances of the original poster actually changing their view were discouragingly few.

In the behavior of social media users posting under their real names, identity — contrary to logic-proponents’ assumptions may be among the strongest persuasive tools

Because Twitter is a public space, there is a perception that any statement made there should be open to challenge. Not being “open to debate” is an accusation that can exhaust members of marginalized groups, who are disproportionately called upon to defend statements about their experience. I live in Canada, where we are still struggling with the “truth” step in efforts to bring truth and reconciliation into relations between settlers and Indigenous peoples. Debates between Indigenous activists and settlers reluctant to revise the status quo haven’t felt like avenues to truth, because they tend to waste time on the premise that we live in a post-racial society — racism has been fixed, so boil water advisories on reserves, substandard housing and health care, crushing suicide rates, and an ongoing epidemic of apprehension of Indigenous children by the foster care system either aren’t real, or aren’t the consequence of racism. “Logic” is often invoked as an argument for discounting differences in experience in favor of an abstract notion of equality.

Just as anonymity allows users to try out opinions they’re not comfortable voicing in their offline worlds — ideas can be more extreme because repercussions for socially unacceptable opinions are limited — the invocation of open debate in service of truth lets users attempt to cover their prejudices and bad faith with a veneer of dispassion. Further, we know that logic has little to do with how people actually process information, especially when it comes to the kinds of beliefs we would describe as “debatable.” The topic I raised on Kialo, for instance — about whether the work of artists accused of abuse should be removed from cultural institutions — would have made much more sense with emotional context from the #MeToo movement.


Under the right circumstances, debate is fun. The very word calls up an image of a hazy dorm room at three in the morning, when every high undergraduate thinks they’re on the cusp of finally solving the big questions. It’s exciting to encounter ideas you’ve never heard before, and to imagine what it feels like to be from another family or another part of the country, where the things you take for granted seem outlandish. The quest for self-definition requires some trial and error, and other people can help us test our beliefs by pushing us to formalize the arguments that underwrite them. Or we might be persuaded into a new camp, adopting beliefs on topics we hadn’t even thought about before.

For all the talk of universality, it’s the poddish nature of these discussions that makes them feel vital — making some progress towards elucidating what we think, and therefore who we are, in small groups of people who can become our friends. Debate in this sense is about intimacy rather than persuasion, a demonstration of trust: It’s easy to take mutual respect for granted when there’s nothing to disagree about, but a genuinely respectful relationship can accommodate disagreement. By respecting one another as debate partners, we become colleagues and collaborators in the pursuit of truth. We also inflate each others’ egos by conferring the status of philosopher on one another; two 18-year-olds who’ve read a chapter apiece of Plato’s Republic can make each other feel like cutting-edge intellectuals.

Inhabiting the platforms we share online can feel like walking down a dorm-room hall — some people are debating, but others are working, playing, talking, or flirting, and the intimacy we feel can be more persuasive than argument. At its best, social media allows us to see what other people care about. The consensual eavesdropping that Twitter or Instagram allow isn’t about testing one’s beliefs through logic, but it can offer a window onto other people’s worlds. Watching the clash of opinions can be much less instructive than listening to people who share a similar worldview and set of experiences talk freely to each other.

In his 2010 book The Honor Code: How Moral Revolutions Happen, philosopher Kwame Anthony Appiah shows that arguments are not what change people’s minds on moral questions — honor is. The end of dueling, or Chinese foot-binding, or the Atlantic slave trade, did not come about, Appiah writes, because of new or more convincing arguments — the arguments against these practices had been in place, sometimes for centuries, before most people were turned against them. What changed was the “honor world” — the group of people who understand and acknowledge the same codes of behavior. Dueling was illegal before it came to seem dishonorable, in part because a newly created popular press brought the aristocracy’s honor code into discussion in lower class circles. This exposure to ridicule or mimicry put a new complexion on a practice that had persisted despite all logical argument against it.

If debate doesn’t actually change minds, the rhetorical power of social media networks may work best as a way to insist on a broadening of our honor worlds. In the behavior of social media users posting under their real names, identity — contrary to logic-proponents’ assumptions may be among the strongest persuasive tools. If an honor world is about acknowledging the same codes of behavior, an expanding sense of one’s world can bring unquestioned values or practices into sharp relief. Most Canadians, for instance, would not consider it honorable to rob someone of their land or to break a treaty.


Debate, in its formal and informal manifestations, is generally conceived as a force for good — indeed, as one of the great hallmarks of civilization. This is partly because it is viewed as the alternative to physical violence as a way of solving disputes. But argument as an intellectual contest may also have the effect of favoring a contestant who does not necessarily have right on their side. Winning an argument may mean bringing forward a true and good thesis, but it may also mean persuading one’s judges of something untrue through force of personality or canny rhetorical stratagems. If a consensus view emerges, it may have everything to do with who is participating, who is judged trustworthy, and how much skin is in the game. But debate or physical violence aren’t the only options for finding a way to live together despite our differences, or for finding out who we are and what we believe.

It’s possible for digital interactions to enlarge our honor worlds by bringing us into closer contact with one another. As novels propose moral arguments through character development, digital spaces are best designed not for debating universals, but for developing our capacity to identify through difference. Interacting with a wide range of people with differing worldviews and experiences in digital spaces means more subconscious absorption of alternatives to the life we know. The idea of “debate” imposes an adversarial framework on online interactions, as well as privileging logic as a tool of discovery.


This essay is part of a collection of essays on the theme of DEBATE FETISH. Also from this week, Rob Horning on being always already convinced

15 May 09:29

Write code that's easy to delete, and easy to debug too.

Debuggable code is code that doesn’t outsmart you. Some code is a little to harder to debug than others: code with hidden behaviour, poor error handling, ambiguity, too little or too much structure, or code that’s in the middle of being changed. On a large enough project, you’ll eventually bump into code that you don’t understand.

On an old enough project, you’ll discover code you forgot about writing—and if it wasn’t for the commit logs, you’d swear it was someone else. As a project grows in size it becomes harder to remember what each piece of code does, harder still when the code doesn’t do what it is supposed to. When it comes to changing code you don’t understand, you’re forced to learn about it the hard way: Debugging.

Writing code that’s easy to debug begins with realising you won’t remember anything about the code later.

Rule 0: Good code has obvious faults.

Many used methodology salesmen have argued that the way to write understandable code is to write clean code. The problem is that “clean” is highly contextual in meaning. Clean code can be hardcoded into a system, and sometimes a dirty hack can written in a way that’s easy to turn off. Sometimes the code is clean because the filth has been pushed elsewhere. Good code isn’t necessarily clean code.

Code being clean or dirty is more about how much pride, or embarrassment the developer takes in the code, rather than how easy it has been to maintain or change. Instead of clean, we want boring code where change is obvious— I’ve found it easier to get people to contribute to a code base when the low hanging fruit has been left around for others to collect. The best code might be anything you can look at quickly learn things about it.

  • Code that doesn’t try to make an ugly problem look good, or a boring problem look interesting.
  • Code where the faults are obvious and the behaviour is clear, rather than code with no obvious faults and subtle behaviours.
  • Code that documents where it falls short of perfect, rather than aiming to be perfect.
  • Code with behaviour so obvious that any developer can imagine countless different ways to go about changing it.

Sometimes, code is just nasty as fuck, and any attempts to clean it up leaves you in a worse state. Writing clean code without understanding the consequences of your actions might as well be a summoning ritual for maintainable code.

It is not to say that clean code is bad, but sometimes the practice of clean coding is more akin to sweeping problems under the rug. Debuggable code isn’t necessarily clean, and code that’s littered with checks or error handling rarely makes for pleasant reading.

Rule 1: The computer is always on fire.

The computer is on fire, and the program crashed the last time it ran.

The first thing a program should do is ensure that it is starting out from a known, good, safe state before trying to get any work done. Sometimes there isn’t a clean copy of the state because the user deleted it, or upgraded their computer. The program crashed the last time it ran and, rather paradoxically, the program is being run for the first time too.

For example, when reading and writing program state to a file, a number of problems can happen:

  • The file is missing
  • The file is corrupt
  • The file is an older version, or a newer one
  • The last change to the file is unfinished
  • The filesystem was lying to you

These are not new problems and databases have been dealing with them since the dawn of time (1970-01-01). Using something like SQLite will handle many of these problems for you, but If the program crashed the last time it ran, the code might be run with the wrong data, or in the wrong way too.

With scheduled programs, for example, you can guarantee that the following accidents will occur:

  • It gets run twice in the same hour because of daylight savings time.
  • It gets run twice because an operator forgot it had already been run.
  • It will miss an hour, due to the machine running out of disk, or mysterious cloud networking issues.
  • It will take longer than an hour to run and may delay subsequent invocations of the program.
  • It will be run with the wrong time of day
  • It will inevitably be run close to a boundary, like midnight, end of month, end of year and fail due to arithmetic error.

Writing robust software begins with writing software that assumed it crashed the last time it ran, and crashing whenever it doesn’t know the right thing to do. The best thing about throwing an exception over leaving a comment like “This Shouldn’t Happen”, is that when it inevitably does happen, you get a head-start on debugging your code.

You don’t have to be able to recover from these problems either—it’s enough to let the program give up and not make things any worse. Small checks that raise an exception can save weeks of tracing through logs, and a simple lock file can save hours of restoring from backup.

Code that’s easy to debug is code that checks to see if things are correct before doing what was asked of it, code that makes it easy to go back to a known good state and trying again, and code that has layers of defence to force errors to surface as early as possible.

Rule 2: Your program is at war with itself.

Google’s biggest DoS attacks come from ourselves—because we have really big systems—although every now and then someone will show up and try to give us a run for our money, but really we’re more capable of hammering ourselves into the ground than anybody else is.

This is true for all systems.

Astrid Atkinson, Engineering for the Long Game

The software always crashed the last time it ran, and now it is always out of cpu, out of memory, and out of disk too. All of the workers are hammering an empty queue, everyone is retrying a failed request that’s long expired, and all of the servers have paused for garbage collection at the same time. Not only is the system broken, it is constantly trying to break itself.

Even checking if the system is actually running can be quite difficult.

It can be quite easy to implement something that checks if the server is running, but not if it is handling requests. Unless you check the uptime, it is possible that the program is crashing in-between every check. Health checks can trigger bugs too: I have managed to write health checks that crashed the system it was meant to protect. On two separate occasions, three months apart.

In software, writing code to handle errors will inevitably lead to discovering more errors to handle, many of them caused by the error handling itself. Similarly, performance optimisations can often be the cause of bottlenecks in the system—Making an app that’s pleasant to use in one tab can make an app that’s painful to use when you have twenty copies of it running.

Another example is where a worker in a pipeline is running too fast, and exhausting the available memory before the next part has a chance to catch up. If you’d rather a car metaphor: traffic jams. Speeding up is what creates them, and can be seen in the way the congestion moves back through the traffic. Optimisations can create systems that fail under high or heavy load, often in mysterious ways.

In other words: the faster you make it, the harder it will be pushed, and if you don’t allow your system to push back even a little, don’t be surprised if it snaps.

Back-pressure is one form of feedback within a system, and a program that is easy to debug is one where the user is involved in the feedback loop, having insight into all behaviours of a system, the accidental, the intentional, the desired, and the unwanted too. Debuggable code is easy to inspect, where you can watch and understand the changes happening within.

Rule 3: What you don’t disambiguate now, you debug later.

In other words: it should not be hard to look at the variables in your program and work out what is happening. Give or take some terrifying linear algebra subroutines, you should strive to represent your program’s state as obviously as possible. This means things like not changing your mind about what a variable does halfway through a program, if there is one obvious cardinal sin it is using a single variable for two different purposes.

It also means carefully avoiding the semi-predicate problem, never using a single value (count) to represent a pair of values (boolean, count). Avoiding things like returning a positive number for a result, and returning -1 when nothing matches. The reason is that it’s easy to end up in the situation where you want something like "0, but true" (and notably, Perl 5 has this exact feature), or you create code that’s hard to compose with other parts of your system (-1 might be a valid input for the next part of the program, rather than an error).

Along with using a single variable for two purposes, it can be just as bad to use a pair of variables for a single purpose—especially if they are booleans. I don’t mean keeping a pair of numbers to store a range is bad, but using a number of booleans to indicate what state your program is in is often a state machine in disguise.

When state doesn’t flow from top to bottom, give or take the occasional loop, it’s best to give the state a variable of it’s own and clean the logic up. If you have a set of booleans inside an object, replace it with a variable called state and use an enum (or a string if it’s persisted somewhere). The if statements end up looking like if state == name and stop looking like if bad_name && !alternate_option.

Even when you do make the state machine explicit, you can still mess up: sometimes code has two state machines hidden inside. I had great difficulty writing an HTTP proxy until I had made each state machine explicit, tracing connection state and parsing state separately. When you merge two state machines into one, it can be hard to add new states, or know exactly what state something is meant to be in.

This is far more about creating things you won’t have to debug, than making things easy to debug. By working out the list of valid states, it’s far easier to reject the invalid ones outright, rather than accidentally letting one or two through.

Rule 4: Accidental Behaviour is Expected Behaviour.

When you’re less than clear about what a data structure does, users fill in the gaps—any behaviour of your code, intended or accidental, will eventually be relied upon somewhere else. Many mainstream programming languages had hash tables you could iterate through, which sort-of preserved insertion order, most of the time.

Some languages chose to make the hash table behave as many users expected them to, iterating through the keys in the order they were added, but others chose to make the hash table return keys in a different order, each time it was iterated through. In the latter case, some users then complained that the behaviour wasn’t random enough.

Tragically, any source of randomness in your program will eventually be used for statistical simulation purposes, or worse, cryptography, and any source of ordering will be used for sorting instead.

In a database, some identifiers carry a little bit more information than others. When creating a table, a developer can choose between different types of primary key. The correct answer is a UUID, or something that’s indistinguishable from a UUID. The problem with the other choices is that they can expose ordering information as well as identity, i.e. not just if a == b but if a <= b, and by other choices mean auto-incrementing keys.

With an auto-incrementing key, the database assigns a number to each row in the table, adding 1 when a new row is inserted. This creates an ambiguity of sorts: people do not know which part of the data is canonical. In other words: Do you sort by key, or by timestamp? Like with the hash-tables before, people will decide the right answer for themselves. The other problem is that users can easily guess the other keys records nearby, too.

Ultimately any attempt to be smarter than a UUID will backfire: we already tried with postcodes, telephone numbers, and IP Addresses, and we failed miserably each time. UUIDs might not make your code more debuggable, but less accidental behaviour tends to mean less accidents.

Ordering is not the only piece of information people will extract from a key: If you create database keys that are constructed from the other fields, then people will throw away the data and reconstruct it from the key instead. Now you have two problems: when a program’s state is kept in more than one place, it is all too easy for the copies to start disagreeing with each other. It’s even harder to keep them in sync if you aren’t sure which one you need to change, or which one you have changed.

Whatever you permit your users to do, they’ll implement. Writing debuggable code is thinking ahead about the ways in which it can be misused, and how other people might interact with it in general.

Rule 5: Debugging is social, before it is technical.

When a software project is split over multiple components and systems, it can be considerably harder to find bugs. Once you understand how the problem occurs, you might have to co-ordinate changes across several parts in order to fix the behaviour. Fixing bugs in a larger project is less about finding the bugs, and more about convincing the other people that they’re real, or even that a fix is possible.

Bugs stick around in software because no-one is entirely sure who is responsible for things. In other words, it’s harder to debug code when nothing is written down, everything must be asked in Slack, and nothing gets answered until the one person who knows logs-on.

Planning, tools, process, and documentation are the ways we can fix this.

Planning is how we can remove the stress of being on call, structures in place to manage incidents. Plans are how we keep customers informed, switch out people when they’ve been on call too long, and how we track the problems and introduce changes to reduce future risk. Tools are the way in which we deskill work and make it accessible to others. Process is the way in which can we remove control from the individual and give it to the team.

The people will change, the interactions too, but the processes and tools will be carried on as the team mutates over time. It isn’t so much valuing one more than the other but building one to support changes in the other.Process can also be used to remove control from the team too, so it isn’t always good or bad, but there is always some process at work, even when it isn’t written down, and the act of documenting it is the first step to letting other people change it.

Documentation means more than text files: documentation is how you handover responsibilities, how you bring new people up to speed, and how you communicate what’s changed to the people impacted by those changes. Writing documentation requires more empathy than writing code, and more skill too: there aren’t easy compiler flags or type checkers, and it’s easy to write a lot of words without documenting anything.

Without documentation, how can you expect people to make informed decisions, or even consent to the consequences of using the software? Without documentation, tools, or processes you cannot share the burden of maintenance, or even replace the people currently lumbered with the task.

Making things easy to debug applies just as much to the processes around code as the code itself, making it clear whose toes you will have to stand on to fix the code.

Code that’s easy to debug is easy to explain.

A common occurrence when debugging is realising the problem when explaining it to someone else. The other person doesn’t even have to exist but you do have to force yourself to start from scratch, explain the situation, the problem, the steps to reproduce it, and often that framing is enough to give us insight into the answer.

If only. Sometimes when we ask for help, we don’t ask for the right help, and I’m as guilty of this as anyone—it’s such a common affliction that it has a name: “The X-Y Problem”: How do I get the last three letters of a filename? Oh? No, I meant the file extension.

We talk about problems in terms of the solutions we understand, and we talk about the solutions in terms of the consequences we’re aware of. Debugging is learning the hard way about unexpected consequences, and alternative solutions, and involves one of the hardest things a programer can ever do: admit that they got something wrong.

It wasn’t a compiler bug, after all.

15 May 09:29

Every document copy stored on used digital photocopiers

by Nathan Yau

CBS News picked up four used photocopiers and looked at the hard drives. There was a lot of private information stored in them:

Nearly every digital copier built since 2002 contains a hard drive – like the one on your personal computer – storing an image of every document copied, scanned, or emailed by the machine.

In the process, it’s turned an office staple into a digital time-bomb packed with highly-personal or sensitive data.

If you’re in the identity theft business it seems this would be a pot of gold.

“The type of information we see on these machines with the social security numbers, birth certificates, bank records, income tax forms,” John Juntunen said, “that information would be very valuable.”

Okay, save the dramatics, it’s still disconcerting.

Not every photocopier makes it so easy to access copied documents, but it’s surprising that it’s still so straightforward with some machines these days. Then again, part of the responsibility belongs to the previous owners. As the Federal Trade Commission instructs, it’s like getting rid of a computer.

Tags: photocopier, privacy

15 May 09:29

How Would We Behave Without ‘Selves’?

by Dave Pollard


image: from Martijn Meijerink on skitterphoto.com, cc0
A growing number of researchers and theorists studying human nature, and the nature of the universe, from a wide range of disciplines, now seem to agree that most non-human creatures do not have, and have no need for, a sense of being separate ‘selves’ in control of and responsible for the bodies they seemingly inhabit.

Their argument is that, other than in moments of extreme stress, most creatures don’t see themselves, or anything else, as separate from the whole — they just are everything, and exist with no sense of time. That doesn’t mean they are in any way insensate — they live life full on and feel wonder and pain probably more than we do (with our tricks for buffering ourselves from reality). Their behaviour is the result of their embodied and enculturated ‘knowledge’, and requires no separate decision-making ‘self’.

In moments of extreme stress, the argument goes, these creatures’ evolved fight/flight/freeze instincts kick in, and briefly they act as if they were separate, until the danger has passed and they furiously ‘shake off’ the nightmare of the experience and return to just being everything. In this natural reality, they have no sense of time, no fears about the future, no fear of death, no anxieties. They don’t need them. Their bodies take care of themselves, so what possible use is there for the sense of a separate self?

Human babies apparently are born this way. Their sense of separateness emerges after birth (and is of course thereafter reinforced by every encounter with other humans who conceive of themselves as separate). So if it’s possible for us adults to access at all what it’s like to just be everything, it may be through a kind of intuitive remembering, or a glimpse in those rare moments when for a variety of reasons our separate self suddenly falls away, rather than through any spiritual journey or path.

Scientists are now discovering that human actions actually precede our brains’ ‘conscious decisions’ to perform that action — the separate self only rationalizes after the fact, and takes responsibility for having decided, what our evolved-to-thrive bodies have already started to do. Our human brains’ sophisticated models of reality, which allow us to think about the (actually non-existent) past and future, and to anticipate dangers to our (non-existent) separate selves and ‘learn’ from ‘their’ experiences as separate selves, were a logical evolutionary development, an extension of our instincts. But if so they are so slow and so utterly imprecise and simplistic that they are actually useless to us, and our listening to and believing their version of reality is likely at the root of much human mental and physical illness and suffering. We’d be better off without them.

Biologists and physicists, in addition to questioning the existence of time as other than a construct of the human mind, are starting to question the mind’s propensity for ‘knowing’-through-analyzing — breaking everything down into separate, discrete ‘parts’ as a means and precondition for making sense of it. Richard Lewontin for example argues in The Triple Helix that genes, organs, and environments are not separate from each other — there are no scientifically sensible ‘borders’ where one ends and the next begins. Everything makes more sense when seen holistically. Carry that to its natural conclusion, and what would make most sense is to accept that everything is one — particles and waves whose ‘separateness’ from everything else is just an invention of the mind.

To carry that argument further, it’s now accepted by many physicists that almost all of even the smallest-known element of ‘matter’ is — nothingness. Everything is mostly nothing. If so, and if as some scientific theorists now say there is no fundamental particle of matter or energy — ie it’s ‘turtles all the way down’ — then logically (1/∞) there is nothing. Everything is just an appearance. That is precisely what radical nonduality posits.

It could of course be argued that even if that is correct, it’s useless knowledge, a model without value — science as currently constituted can’t do anything with the realization that there is no time, no space, and no one. It’s equally useless as the foundation of a philosophy or religion. But if our bodies (absent the affliction of ‘selves’) know what to do, how to live, better than any empirical or scientific or philosophical or religious theory or model can improve upon, there is (again, absent selves) no need for anything to be useful.

Consider how we behave when emergencies arise — in an accident scene, or being on the verge of losing our grip at the top of a mountain. Those who have had those experiences say that while their thinking brains basically give up functioning in these situations, they are somehow able to achieve miraculous, “super-human” feats — when their selves are out of the way.

Of course, this is just a theory. It is hard to imagine that, if we could retain our sense of child-like (wild-like) wonder for our whole lives, we would thrive much better than we do with our calculating, imagining, patterning, probability-computing minds telling us what our separate selves ‘should’ do (or should have done) in any particular situation.

But let’s imagine for a moment this theory is true. How would ‘we’ behave if ‘we’ just lived our lives in wonder, free of the constraints and anxieties of separate selves? This is almost impossible to imagine (“this is what ‘we’ would be like if there was no ‘us’”), but here’s my guess:

We’re flying down to earth some millennia in the future. For a while we wonder whether there are any humans at all, since there are no cities, no monuments, no visible evidence of human presence of any kind. Until we notice, in some of the tropical rainforests (which due to climate change are not in the same places they are today), and along some of the warmer coasts, some rustling in the trees and darting movements along the forest floor.

There we see them, small tribes of naked apes — tall, strong, healthy-looking creatures. So we activate our cloaking devices and move in for a closer look.

To our surprise, they don’t look or act at all like the vestigial 20th century indigenous communities untouched by civilization culture that we have studied. True, they do have extensive ornamentation over their bodies and in their hair, which is likely a way of expressing their culture. But there is neither a tribal commonality to the designs on their bodies, nor a cohesion of style that would suggest the body canvas is a medium of self-expression. The art is more diverse and apparently improvisational, seemingly more about having fun and being creative than meaning something.

We’re listening for language, but all we’re hearing is a lot of birdsong, plus the calls of creatures we don’t recognize at all — newly evolved species perhaps? And then we realize that some of these sounds are coming from the humans — very complex but surprisingly short “check-ins” with tribe mates, we are guessing. We wonder if these post-civ humans are like birds in each having two distinct types of “voices” — ‘calls’ of warning and notification, and ‘songs’ of joy. Suddenly, that thesis gets some confirmation, as one human female sends out a long, rich line of song in some unknown language, and immediately others in the tribe join in in response, in a complex and improvisational harmony.

Soon, we realize that only a small part of these humans’ conversations are verbal — head movements, hand and arm and whole-body gestures, even subtle eye-movements are clearly conveying most of what these humans are ‘saying’ to each other. Their bird-like ‘calls’ seem to be used only when they are out of sight range of each other.

We had expected these post-civ cultures to be scavengers, using the surfeit of production of everything during civilization times as a means of continuing to use these useful and sometimes life-saving tools. But there is no evidence of anything that could really be called “technology” in this tribe.

So now we’re watching the faces of these humans, trying to decipher what they’re thinking and feeling. And the sense we get, the more we study them, is that while thoughts and feelings are arising in them, they are not much preoccupied with them; they flit across their faces but then are let go. What they perceive directly however — sights and sounds and other sensuous experiences — seems to impress them more deeply, and for much longer. Their faces easily and often take on expressions of wonder, almost child-like delight in the simplest noticing.

As we watch them, we realize that they have a powerful intuitive sense — they react instinctively and effectively faster than intellectual processing would allow. The look on their faces is attentive and peaceful, free from signs of stress and anxiety, but not what might be called ‘blissful’. Much of the time they are quite animated, strolling, dancing, doing flips and gymnastic or martial-art-like movements, exploring the areas around them, constantly in motion. But even then they are carefully sensing what is happening around them, and seem to sense things before they become immediately apparent.

We see them harvest foods — though browsing might be a better term, as if there are ‘gardens’ here we cannot discern them. The tribe members seem to know exactly what to eat and what not to eat, even the small children. Finding food seems to be no problem in the abundant forests where they live, so we try to figure out what they do with the rest of their time, aside from singing and body art. They seem exceptionally social and generous, touching and patting each other frequently, but to our surprise sex seems to be, while readily available, not especially frequent.

They spend a lot of time apparently doing what we would call ‘nothing’ — just sitting and watching and listening and sensing the world around them. This often leads to singing, solo or joined by others, but this singing is so gentle and quiet it seems more like purring than song. They sing often, it seems, but ‘talk’ only as much as they must. Their language, if it can even be called that, seems to be totally reactive to the immediate situation, and perceptual, not conceptual.

There seems to be no hierarchy among the tribe-members, perhaps because their lives are so easy and stress-free that they have no need for specialization or organization of activities. They seem highly spontaneous — they break into song or dance, and others join them, or don’t, with no perceivable pattern. If there is ritual here, we can’t see it. Their anarchism seems almost un-human, un-mammal-like, even — almost all indigenous human, primate and cetacean cultures we’ve studied seem more organized than this one.

This tribe seems to have no property, no possessions, personal or collective, not even shelters. This may be because they have no need of them, but it seems more consistent with their behaviour that they don’t even conceive of the idea of owning or possessing anything. It’s as if anything that happens is of no consequence to them — it is just what happens, the only thing that could happen.

More interesting still is that they don’t seem to have identities. Their members have different voice qualities, clearly enough that they could identify other individuals by these qualities, but they don’t seem inclined to do so. In fact their vocalizations seem more often directed to creatures of other species, and even to inanimate objects, than they are to other tribe-members. And one of their strangest behaviours is vocalization that is apparently directed to their bodies, or something within their bodies — using tones that seem instructional or reassuring or even self-hypnotic rather than self-reflective.

They seem astonishingly connected with the (other) wild species in their forest and coastlands, as if they could understand their ‘languages’ and ‘read’ their bodies and hence, their very way of being.

Many of the brainier 20th century mammal and bird species have been found to have what is called “theory of mind” — they are capable of seeing themselves and other creatures as separate entities and attributing characteristics to these creatures, and behaving accordingly. Strangely, this thriving, seemingly intelligent and healthy human tribe doesn’t show evidence of this capacity to differentiate at all. They just don’t seem to perceive of others as separate from themselves, and hence seem incapable of conflict with or deception of their tribe-mates, or other animals.

We also witnessed one wandering tribe member who was suddenly confronted by a jaguar. There was seemingly no thought of running or fighting, though from our perspective in the circumstances both actions would have been futile. Instead, the human seemingly just sat quietly and then fainted, and was quickly and peacefully devoured.

To avoid jarring the tribe-members too much by suddenly appearing to them, we instead transported and de-cloaked one couple from our group. But as we watch, we see that the tribe-members treat our people as if they were lost children — after showing us how to find food, and seeing that we were unwilling or unable to learn the lesson, they ignore us, as if we aren’t even there.

They seemingly have nothing to learn from us, nor us from them — we apparently live in utterly different, ‘unrealizable’ and unreconcilable realities. So we depart.

We cannot, of course, know whether this is how a tribe of people without the sense of being separate selves would behave, or whether they would thrive, or what it would be like to be them.

And I want to be clear that I don’t think the way of being I’m describing is anything like the way in which any known modern indigenous peoples live — I think we have much to learn from indigenous cultures but I don’t think they are any closer to a collective nonduality than we are. Nor do I think they are free from what I have called the ‘affliction’ of separate selves.

Would the planet be better off if humans were more like this imaginary future ‘self-less’ tribe, instead of like us? Would ‘we’ be happier, or rather, would we be at peace without always striving to be happier and being disappointed and anxious about everything that was not as our separate selves, and those we strive to please, hoped or expected?

And if we had a chance to give up our lives and live as they do, would we take the chance?

(PS: I’m thinking of writing a sci-fi/cli-fi novel about such a tribe of people. Thoughts on how to do this are welcome — I suspect it could be as hard to write as Riddley Walker.)

15 May 09:29

The Rumored Claims Are Wrong

Updated to add Fuji Rumors link.

It's that time of year. With most of the Japanese camera companies having now reported their fiscal year results, CIPA having provided their 2018 estimates and early revisions, and some actual real data from the year starting to accumulate, we've got lots of market share rumors and assertions and claims running around the Internet. …

15 May 09:28

Tea-maggedon Too, for the Disabled and Elderly

by Sandy James Planner

15a8044

While Price Tags has detailed the impending tea-mageddon that may occur when plastic straws are deemed ecologically unsound, and thus no longer available as an absolute necessity in bubble tea consumption, there are other groups which benefit from bendable, plastic straws — the elderly, and the disabled.

The importance of plastic straws for disabled users was commented on  Twitter by local disabled rights advocate Ms. Sinenomine. 

The BBC News also reported that most paper and plant-based alternatives are not flexible or suitable for drinks over 40C, therefore increases the risks of choking. Metal straws can be dangerous for people with neurological conditions such as Parkinson’s, whereas reusable plastic straws present hygiene concerns to people with specific health conditions.”

Just as we should be designing for universal accessibility in building, street and open space design, processes for banning single use plastics should also include user groups that are going to be disproportionately impacted by the ban. These groups need to be involved in finding a suitable alternative for continued use.

As one advocate speaking to the BBC observed, “businesses are understandably responding to environmental concerns, but in reacting so quickly the needs of their disabled customers risk becoming afterthoughts.”

embeddedimg_risksofstraws_850px_1-850x850

Image: Little Things.com

15 May 09:26

Why the ASMR Community Loves the Blue Yeti Microphone

by Kevin Purdy
Why the ASMR Community Loves the Blue Yeti Microphone

We recommend the Yeti by Blue as the best USB microphone because it’s easy to set up and produces clear results, but our expert audio testers dinged it for a few audio quirks. “Smacks noticeable,” wrote one. “Picks up mouth noise a bit,” another noted. “Definitely some sibilance” was the one negative a reviewer gave the Yeti, which they ranked the best overall.

15 May 09:23

Wi-Fi Alliance’s new standard aims to make mesh routers from different brands work together

by Rose Behar
google wifi in box

The advent of Wi-Fi mesh networks has eased a lot of home connectivity issues but there’s still one major inconvenience.

Mesh network sets from one brand, for example Eero, aren’t interoperable with sets from another brand, say Google Wifi.

The Wi-Fi Alliance, the Wi-Fi standards body itself, is now committed to changing that fact, however, with the announcement of a brand new standard: Wi-Fi Certified EasyMesh.

The idea behind the new standard is that different brands could sign on to the standard in order to make their mesh access points work together on the same network.

The tech also monitors network conditions and self-adapts as needed, reports the Wi-Fi Alliance. EasyMesh guides devices to the nearest and most appropriate access point — a benefit that mesh networks offer over Wi-Fi extenders.

Further benefits include assurances of Wi-Fi security and accepted protocols from the Alliance.

EasyMesh certification is expected to begin shortly, but Wi-Fi Alliance vice-president of marketing Kevin Robinson told The Verge that the Alliance isn’t sure when the first routers on the standard would come to market.

Existing mesh routers can also be updated to support EasyMesh.

Of course, while this all sounds great, there’s not a whole lot of reason for router manufacturers to sign on and encourage customers to purchase devices outside of the brand’s own ecosystem.

One can only hope that smaller brands will begin to sign on first to provide customers with a little incentive to take a chance on a lesser-known product.

Source: Wi-Fi Alliance Via: The Verge

The post Wi-Fi Alliance’s new standard aims to make mesh routers from different brands work together appeared first on MobileSyrup.

15 May 09:23

Android P may add automatic colour mode adjustment to Google Pixel 2

by Bradly Shankar
Google Pixel 2 back

One of the central criticisms of the Google Pixel 2 when it launched in October 2017 centred around the fact that the phone had a muted OLED colour display.

To address this, Google rolled out an update to the phone in early November that added a ‘Saturated’ colour mode.

Now, it seems like Google is looking to further enhance the Pixel 2’s colour offerings by adding a new ‘Automatic’ mode that can automatically adjust between vivid and accurate colours.

As spotted by XDA Developers, a series of code strings found in the Settings APK in Android P Developer Preview 2 point to the existence of such a mode:

<string name="color_mode_option_automatic">Automatic</string>
<string name="color_mode_summary_automatic">Adjust between vivid and accurate colors</string>

The Automatic mode would join the ‘Natural’ and ‘Boosted’ options currently offered in the Pixel 2.

It’s currently unclear exactly how the Automatic mode may work, but Google could presumably incorporate machine learning and artificial intelligence, just as it has done with many other of its tech features.

Source: XDA Developers

The post Android P may add automatic colour mode adjustment to Google Pixel 2 appeared first on MobileSyrup.

15 May 09:23

Users can disable some system notifications in Android P

by Jonathan Lamont
System UI notification settings on Android P

Google is offering users more control over their system notifications in Android P.

In previous versions of Android, users couldn’t mute or disable System and UI notifications like screenshot, low battery and network notifications. They showed up, set up shop in your notification tray and only went away when you dismissed them. Android 8.1 Oreo was the first indicator of change, allowing users to turn off notifications about apps running in the background.

Android DP1 was a notification free for all, giving users the option to turn off any and all notifications. DP2 disabled some options, leaving users with only a couple options.

Android System UI notification settings

For the System UI notifications, DP2 (right) disables everything except Battery — presumably the low battery notification — and Screenshots.

DP2 also has a new notification category called Hints. It isn’t entirely clear what falls under the hints channel, but this may be a feature that’s still being developed.

DP1 (left) added three new channels to the Android System notifications: ‘App Running,’ ‘Do Not Disturb’ and ‘System Changes.’ On top of that, DP1 lets you to toggle any of he channels off. Android 8.1 didn’t allow any to be toggled and DP2 restricts users to ‘Car Mode,’ ‘Developer Messages,’ ‘Apps Consuming Battery,’ ‘Network Alerts,’ ‘Network Available,’ ‘Physical Keyboard’ and ‘Virtual Keyboard.’

Android System notification settings

It’s good to see Google adding these options to Android. Some system notifications were quite annoying — take the app is using battery notifications for example. Hopefully Google eases up and allows users to toggle more than the select few enabled in DP2.

If you have the developer preview installed and want to take a peak at these settings yourself, it’s fairly simple. Go to ‘Apps & Notifications’ in Settings, tap See all apps and then tap the three blue dots at the top right of the screen and select ‘Show System.’

Then you can find both ‘Android System’ and ‘System UI’ in the app list. From there, just tap on the app to see it’s info screen and select ‘Notifications.’

Source: Android Police

The post Users can disable some system notifications in Android P appeared first on MobileSyrup.

15 May 09:22

TekSavvy is bringing cable internet to Sault Ste. Marie, Ontario

by Brad Bennett

Residents in Sault Ste. Marie, Ontario will soon have another internet option as TekSavvy prepares to bring its cable internet plans to the city.

The internet reselling company has brought four cable high-speed plans to the city, ranging in price from $23.95 to $69.95 CAD.

The cheapest plan comes in at $23.95 and will net users 400GB at 5MBps per month. To get this speed with unlimited usage, the price increases to $28.95.

The next two plans are on a promotion right now and cost $32.94 and $49.49. The cheaper of the two gives users 25MBps while the more expensive plan comes with internet speeds of 75MBps. Both of these prices are only for the first six months, but offer unlimited usage.

These two plans will cost $37.95 and $54.95 after the six month promotion ends. 

The most expensive of the plans has unlimited data at 150MBps and costs $69.95 a month.

There’s also a few other communities around Sault Ste. Marie that will be able to connected to TekSavvy’s cable services as well.

Source: TekSavvy

The post TekSavvy is bringing cable internet to Sault Ste. Marie, Ontario appeared first on MobileSyrup.

12 May 21:07

Innovation Should Be Legal. That’s Why I’m Launching NeTV2.

by bunnie

I’d like to share a project I’m working on that could have an impact on your future freedoms in the digital age. It’s an open video development board I call NeTV2.

The Motivation

It’s related to a lawsuit I’ve filed with the help of the EFF against the US government to reform Section 1201 of the DMCA. Currently, Section 1201 imbues media cartels with nearly unchecked power to prevent us from innovating and expressing ourselves, thus restricting our right to free speech.

Have you ever noticed how smart TVs seem pretty dumb compared to our phones? It’s because Section 1201 enables a small cartel of stakeholders to pick and choose who gets to process video. So, for example, anyone is allowed to write a translation app for their smartphone that does real-time video translation of text. However, it’s potentially unlawful to build a box, even in the privacy of my own home, that implements the same thing over the HDCP-encrypted video feeds that go from my set top box to my TV screen.

This is due to a quirk of the DMCA that makes it unlawful for most citizens to bypass encryption – even for lawful free-speech activities, such as self-expression and innovation. Significantly, since the founding of the United States, it’s been unlawful to make copies of copyrighted work, and I believe the already stiff penalties for violating copyright law offer sufficient protection from piracy and theft.

However, in 1998 a group of lobbyists managed to convince Congress that the digital millennium presented an existential threat to copyright holders, and thus stiffer penalties were needed for the mere act of bypassing encryption, no matter the reason. These penalties are in addition to the existing penalties written into copyright law. By passing this law, Congress effectively turned bypassing encryption into a form of pre-crime, empowering copyright holders to be the sole judge, jury and executioner of what your intentions might have been. Thus, even if you were to bypass encryption solely for lawful purposes, such as processing video to translate text, the copyright holder nonetheless has the power to prosecute you for the “pre-crimes” that could follow from bypassing their encryption scheme. In this way, Section 1201 of the DMCA effectively gives corporations the power to license when and how you express yourself where encryption is involved.

I believe unchecked power to license freedom of expression should not be trusted to corporate interests. Encryption is important for privacy and security, and is winding its way into every corner of our life. It’s fundamentally a good thing, but we need to make sure that corporations can’t abuse Section 1201 to also control every corner of our life. In our digital age, the very canvas upon which we paint our thoughts can be access-controlled with cryptography, and we need the absolute right to paint our thoughts freely and share them broadly if we are to continue to live in a free and just society. Significantly, this does not diminish the power of copyrights one bit – this lawsuit simply aims to limit the expansive “pre-crime” powers granted to license holders, that is all.

Of course, even though the lawsuit is in progress, corporations still have the right to go after developers like you and me for the notional pre-crimes associated with bypassing encryption. However, one significant objection lodged by opponents of our lawsuit is that “no other users have specified how they are adversely affected by HDCP in their ability to make specific noninfringing use of protected content … [bunnie] has failed to demonstrate … how “users ‘are, or are likely to be,’ adversely affected by the prohibition on circumventing HDCP.” This is, of course, a Catch-22, because how can you build a user base to demonstrate the need for freedoms when the mere act of trying to build that user base could be a crime in itself? No investor would touch a product that could be potentially unlawful.

Thankfully, it’s 2018 and we have crowd funding, so I’m launching a crowd funding campaign for the NeTV2, in the hopes of rallying like-minded developers, dreamers, users, and enthusiasts to help build the case that a small but important group of people can and would do more, if only we had the right to do so. As limited by the prevailing law, the NeTV2 can only process unencrypted video and perform encryption-only operations like video overlays through a trick I call “NeTV mode”. However, it’s my hope this is a sufficient platform to stir the imagination of developers and users, so that together we can paint a vibrant picture of what a future looks like should we have the right to express our ideas using otherwise controlled paints on otherwise denied canvases.


Some of the things you might be able to do with the NeTV2, if you only had the right to do it…

The Hardware

The heart of the NeTV2 is an FPGA-based video development board in a PCIe 2.0 x4 card form factor. The board supports up to two video inputs and two video outputs at 1080p60, coupled to a Xilinx XC7A35T FPGA, along with 512 MiB of DDR3 memory humming along at a peak bandwidth of 25.6 Gbps. It also features some nice touches for debugging including a JTAG/UART header made to plug directly into a Raspberry Pi, and a 10/100 Ethernet port wired directly to the FPGA for Etherbone support. For intrepid hackers, the reserved/JTAG pins on the PCI-express header are all wired to the FPGA, and microSD and USB headers are provisioned but not specifically supported in any mode. And of course, the entire PCB design is open source under the CERN OHL license.


The NeTV2 board as mounted on a Raspberry Pi

The design targets two major use scenarios which I refer to as “NeTV classic” mode (video overlays with encryption) and “Libre” mode (deep video processing, but limited to unencrypted feeds due to Section 1201).

In NeTV classic mode, the board is paired with a Raspberry Pi, which serves as the source for chroma key overlay video, typically rendered by a browser running in full-screen mode. The Raspberry Pi’s unencrypted HDMI video output is fed into the NeTV2 and sampled into a frame buffer, which is “genlocked” (e.g. timing synchronized) to a video feed that’s just passing through the FPGA via another pair of HDMI input/outputs. The NeTV2 has special circuits to help observe and synchronize with cryptographic state, should one exist on the pass-through video link. This allows the NeTV2 to encrypt the Raspberry Pi’s overlay feed so that the Pi’s pixels can be used for a simple “hard overlay” effect. NeTV classic mode thus enables applications such as subtitles and pop-up notifications by throwing away regions of source video and replacing it entirely with overlay pixels. However, a lack of access to unencrypted pixels disallows even basic video effects such as alpha blending or frame scaling.

In Libre mode, the board is meant to be plugged into a desktop PC via PCI-express. Libre mode only works with unencrypted video feeds, as the concept here is full video frames are sampled and buffered up inside NeTV2 so that it can be forwarded on to the host PC for further processing. Here, the full power of a GPU or x86 CPU can be applied to extract features and enhance the video, or perhaps portions of the video could even be sent to to the cloud for processing. Once the video has been processed, it is pushed back into the NeTV2 and sent on to the TV for viewing. Libre mode is perhaps the most interesting mode to developers, yet is very limited in every day applications thanks to Section 1201 of the DMCA. Still, it may be possible to craft demos using properly licensed, unencrypted video feeds.

The reference “gateware” (FPGA design) for the NeTV2 is written in Python using migen/LiteX. I previously compared the performance of LiteX to Vivado: for an NeTV2-like reference design, the migen/LiteX version consumes about a quarter the area and compiles in less than a quarter the time – a compelling advantage. migen/LiteX is a true open source framework for describing hardware, which relies on Xilinx’s free-to-download Vivado toolchain for synthesis, place/route, and bitstream generation. There is a significant effort on-going today to port the full open source FPGA backend tools developed by Clifford Wolf from the Lattice ICE40 FPGAs to the same Xilinx 7-series FPGAs used in NeTV2. Of course, designers that prefer to use the Vivado tools to describe and compile their hardware are still free to do so, but I am not officially supporting that design methodology.

I wanted to narrow the gap between development board and field deployable solution, so I’ve also designed a hackable case for the NeTV2. The case can hold the NeTV2 and a mated Raspberry Pi, and consists of three major parts, a top shell, bottom shell/back bezel, and a stand-alone front bezel. It also has light pipes to route key status LEDs to the plane of the back bezel. It’s designed to be easily disassembled using common screw drivers, and features holes for easy wall-mounting.

Most importantly, the case features extra space with a Peek Array on the inside for mounting your own PCBs or parts, and the front bezel is designed for easier fabrication using either subtractive or additive methodologies. So, if you have a laser cutter, you can custom cut a bezel using a simple, thin sheet of acrylic and slot it into the grooves circumscribing the end of the case. Or, if you have a low-res 3D printer, you can use the screw bosses to attach the bezel instead, and skip the grooves. When you’re ready to step up in volume, you can download the source file for the bezel and make a relatively simple injection mold tool for just the bezel itself (or the whole case, if you really want to!).

The flexibility of the PCI-express edge connector and the simplified bezel allows developers to extend the NeTV2 into a system well beyond the original design intention. Remember, for an FPGA, PCI-express is just a low-cost physical form factor for generic high speed I/O. So, a relatively simple to design and cheap to fabricate adapter card can turn the PCI-express card-edge connector into a variety of high-speed physical standards, including SATA, DisplayPort, USB3.0 and more. There’s also extra low-speed I/O in the header, so you can attach a variety of SPI or I2C peripherals through the same connector. This electrical flexibility, combined with PCBs mounted on the Peek Array and a custom bezel enables developers to build a customer-ready solutions with minimal effort and tooling investment.

The NeTV2 is funding now at Crowd Supply. I’m offering a version with a higher-capacity FPGA only for the duration of the campaign, so if you’re developer be sure to check that out before the campaign ends. If you think that reforming the DMCA is important but the NeTV2 isn’t your cup of tea, please consider supporting the EFF directly with a donation. Together we can reform Section 1201 of the DMCA, and win back fundamental freedoms to express and innovate in the digital age.

12 May 21:07

Skills-oriented Programming…

by Tony Hirst
12 May 21:07

Do you take public transit? Move it with Moovit [App of the Week]

by Jonathan Lamont
Moovit

If you’re anything like me, you take a lot of public transit.

In a city like Toronto, with such a variety of transit options, you’ll often find yourself taking two or more types of public transit. My commute spans three different vehicles from three different transit agencies. While Googling when the next bus is coming can sometimes be an effective (if aggravating) experience, there are better solutions.

Enter Moovit, a transit app on iOS and Android. MobileSyrup has written about Moovit before as the app continued to add features and support for Canadian cities that other apps just don’t have.

Searching routes in Moovit

Since MobileSyrup last wrote about Moovit, the app has received a facelift. Along with a fresh new look, Moovit gained some renown, solidifying itself as king of public transit.

Earlier this year, Moovit was nominated for the category of ‘Best build for billions experience’ at the 2018 Google Play Awards. It’s not hard to see why. Moovit makes getting around easy for over 2200 cities, including 31 Canadian cities (the full list can be found here).

Additionally, the app has support for all kinds of different types of transit. In the GTA alone, I’ve been able to plan routes using GO trains, TTC streetcars, Uber and even bike shares.

Why is Moovit king of public transit?

Service alerts on Moovit

Moovit is quite customizable. It features a number of route options, from ones with less walking to ones with less transfers. You can select from a number of different types of transit if you’re looking for a specific way to get around.

Users can set favourite stations, lines and make quick options for home and work. The app also features a wealth of offline public transit maps users can download.

Moovit also features an alerts section that makes it easy to see delays and service updates with a tap. Alerts is one of the many community driven features, where the over 150 million users can become ‘Mooviters‘ and help update information. Mooviters, currently made up of about 200,000 members, can also add lines, stations and schedules.

Moovit search and Be My Eyes partnership

Moovit claims to be adding a new city every 15 hours. As its network and community grows, so does its ability to serve accurate public transit information. The app features some incredible features, like real time arrival alerts for supported networks (TTC streetcars for example) that let you know exactly when to be at your stop. The app also features Live Ride, which alerts you when you arrive at your stop so you can focus on other things.

On top of all this, the transit app has partnered with Be My Eyes, a free service that connects people with a visual impairment to sighted volunteers over a live video call for assistance.

The partnership is working to make public transit more accessible for blind and low vision transit users. Be My Eyes was awarded best accessibility experience app in the 2018 Google Play Awards.

Overall, Moovit is a fantastic public transit solution with plenty of options for everyone. Moovit is available on iOS and Android.

The post Do you take public transit? Move it with Moovit [App of the Week] appeared first on MobileSyrup.

12 May 21:07

GDPR will pop the adtech bubble

by Doc Searls

In The Big Short, investor Michael Burry says “One hallmark of mania is the rapid rise in the incidence and complexity of fraud.” (Burry shorted the mania- and fraud-filled subprime mortgage market and made a mint in the process.)

One would be equally smart to bet against the mania for the tracking-based form of advertising called adtech.

Since tracking people took off in the late ’00s, adtech has grown to become a four-dimensional shell game played by hundreds (or, if you include martech, thousands) of companies, none of which can see the whole mess, or can control the fraud, malware and other forms of bad acting that thrive in the midst of it.

And that’s on top of the main problem: tracking people without their knowledge, approval or a court order is just flat-out wrong. The fact that it can be done is no excuse. Nor is the monstrous sum of money made by it.

Without adtech, the EU’s GDPR (General Data Protection Regulation) would never have happened. But the GDPR did happen, and as a result websites all over the world are suddenly posting notices about their changed privacy policies, use of cookies, and opt-in choices for “relevant” or “interest-based” (translation: tracking-based) advertising. Email lists are doing the same kinds of things.

“Sunrise day” for the GDPR is 25 May. That’s when the EU can start smacking fines on violators.

Simply put, your site or service is a violator if it extracts or processes personal data without personal permission. Real permission, that is. You know, where you specifically say “Hell yeah, I wanna be tracked everywhere.”

Of course what I just said greatly simplifies what the GDPR actually utters, in bureaucratic legalese. The GDPR is also full of loopholes only snakes can thread; but the spirit of the law is clear, and the snakes will be easy to shame, even if they don’t get fined. (And legitimate interest—an actual loophole in the GDPR, may prove hard to claim.)

Toward the aftermath, the main question is What will be left of advertising—and what it supports—after the adtech bubble pops?

Answers require knowing the differences between advertising and adtech, which I liken to wheat and chaff.

First, advertising:

    1. Advertising isn’t personal, and doesn’t have to be. In fact, knowing it’s not personal is an advantage for advertisers. Consumers don’t wonder what the hell an ad is doing where it is, who put it there, or why.
    2. Advertising makes brands. Nearly all the brands you know were burned into your brain by advertising. In fact the term branding was borrowed by advertising from the cattle business. (Specifically by Procter and Gamble in the early 1930s.)
    3. Advertising carries an economic signal. Meaning that it shows a company can afford to advertise. Tracking-based advertising can’t do that. (For more on this, read Don Marti, starting here.)
    4. Advertising sponsors media, and those paid by media. All the big pro sports salaries are paid by advertising that sponsors game broadcasts. For lack of sponsorship, media—especially publishers—are hurting. @WaltMossberg learned why on a conference stage when an ad agency guy said the agency’s ads wouldn’t sponsor Walt’s new publication, recode. Walt: “I asked him if that meant he’d be placing ads on our fledgling site. He said yes, he’d do that for a little while. And then, after the cookies he placed on Recode helped him to track our desirable audience around the web, his agency would begin removing the ads and placing them on cheaper sites our readers also happened to visit. In other words, our quality journalism was, to him, nothing more than a lead generator for target-rich readers, and would ultimately benefit sites that might care less about quality.” With friends like that, who needs enemies?

Second, Adtech:

    1. Adtech is built to undermine the brand value of all the media it uses, because it cares about eyeballs more than media, and it causes negative associations with brands. Consider this: perhaps a $trillion or more has been spent on adtech, and not one brand known to the world has been made by it. (Bob Hoffman, aka the Ad Contrarian, is required reading on this.)
    2. Adtech wants to be personal. That’s why it’s tracking-based. Though its enthusiasts call it “interest-based,” “relevant” and other harmless-sounding euphemisms, it relies on tracking people. In fact it can’t exist without tracking people. (Note: while all adtech is programmatic, not all programmatic advertising is adtech. In other words, programmatic advertising doesn’t have to be based on tracking people. Same goes for interactive. Programmatic and interactive advertising will both survive the adtech crash.)
    3. Adtech spies on people and violates their privacy. By design. Never mind that you and your browser or app are anonymized. The ads are still for your eyeballs, and correlations can be made.
    4. Adtech is full of fraud and a vector for malware. @ACFou is required reading on this.
    5. Adtech incentivizes publications to prioritize “content generation” over journalism. More here and here.
    6. Intermediators take most of what’s spent on adtech. Bob Hoffman does a great job showing how as little as 3¢ of a dollar spent on adtech actually makes an “impression. The most generous number I’ve seen is 12¢. (When I was in the ad agency business, back in the last millennium, clients complained about our 15% take. Media our clients bought got 85%.)
    7. Adtech gives fake news a business model, because fake news is easier to produce than the real kind, and adtech will pay anybody a bounty for hauling in eyeballs.
    8. Adtech incentivizes hate speech and tribalism by giving both—and the platforms that host them—a business model too.
    9. Adtech relies on misdirection. See, adtech looks like advertising, and is called advertising; but it’s really direct marketing, which is descended from junk mail and a cousin of spam. Because of that misdirection, brands think they’re placing ads in media, while the systems they hire are actually chasing eyeballs to anywhere. (Pro tip: if somebody says every ad needs to “perform,” or that the purpose of advertising is “to get the right message to the right person at the right time,” they’re actually talking about direct marketing, not advertising. For more on this, read Rethinking John Wanamaker.)
    10. Compared to advertising, adtech is ugly. Look up best ads of all time. One of the top results is for the American Advertising Awards. The latest winners they’ve posted are the Best in Show for 2016. Tops there is an Allstate “Interactive/Online” ad pranking a couple at a ball game. Over-exposure of their lives online leads that well-branded “Mayhem” guy to invade and trash their house. In other words, it’s a brand ad about online surveillance.
    11. Adtech has caused the largest boycott in human history. By more than a year ago, 1.7+ billion human beings were already blocking ads online.

To get a sense of what will be left of adtech after GDPR Sunrise Day, start by reading a pair of articles in AdExchanger by @JamesHercher. The first reports on the Transparency and Consent Framework published by IAB Europe. The second reports on how Google is pretty much ignoring that framework and going direct with their own way of obtaining consent to tracking:

Google’s and other consent-gathering solutions are basically a series of pop-up notifications that provide a mechanism for publishers to provide clear disclosure and consent in accordance with data regulations.

Specifically,

The Google consent interface greets site visitors with a request to use data to tailor advertising, with equally prominent “no” and “yes” buttons. If a reader declines to be tracked, he or she sees a notice saying the ads will be less relevant and asking to “agree” or go back to the previous page. According to a source, one research study on this type of opt-out mechanism led to opt-out rates of more than 70%.

Meaning only 30% of site visitors will consent to being tracked. So, say goodbye to 70% of adtech’s eyeball targets right there.

Google’s consent gathering system, dubbed “Funding Choices,” also screws most of the hundreds of other adtech intermediaries fighting for a hunk of what’s left of their market. Writes James, “It restricts the number of supply chain partners a publisher can share consent with to just 12 vendors, sources with knowledge of the product tell AdExchanger.”

And that’s not all:

Last week, Google alerted advertisers it would sharply limit use of the DoubleClick advertising ID, which brands and agencies used to pull log files from DoubleClick so campaigns could be cohesively measured across other ad servers, incentivizing buyers to consolidate spend on the Google stack.

Google also raised eyebrows last month with a new policy insisting that all DFP publishers grant it status as a data controller, giving Google the right to collect and use site data, whereas other online tech companies – mere data processors – can only receive limited data assigned to them by the publisher, i.e., the data controller.

This is also Google’s way of scraping off GDPR liability on publishers.

Publishers and adtech intermediaries can attempt to avoid Google by using Consent Management Platforms (CMPs), a new category of intermediary defined and described by IAB Europe’s Consent Management Framework. Writes James,

The IAB Europe and and IAB Tech Lab framework includes a list of registered vendors that publishers can pass consent to for data-driven advertising. The tech companies pay a one-time fee between $1,000 and $2,000 to join the vendor list, according to executives from three participating companies…Although now that the framework is live, the barriers to adoption are painfully real as well.

The CMP category is pretty bare at the moment, and it may be greeted with suspicion by some publishers.There are eight initial CMPs: two publisher tech companies with roots in ad-blocker solutions, Sourcepoint and Admiral, as well as the ad tech companies Quantcast and Conversant and a few blockchain-based advertising startups…

Digital Content Next, a trade group representing online news publishers, is advising publishers to reject the framework, which CEO Jason Kint said “doesn’t meet the letter or spirit of GDPR.” Only two publishers have publicly adopted the Consent and Transparency Framework, but they’re heavy hitters with blue-chip value in the market: Axel Springer, Europe’s largest digital media company, and the 180-year-old Schibsted Media, a respected newspaper publisher in Sweden and Norway.

In other words, good luck with that.

[Later, 26 May…] Well, Google caved on this one, so apparently Google is coming to IAB Europe’s table.

[And on 30 May…] Axel Springer is also going its own way.

One big upside for IAB Europe is that its Framework contains open source code and an SDK. For a full unpacking of what’s there see the Consent String and Vendor List Format: Transparency & Consent Framework on GitHub and IAB Europe’s own FAQ. More about this shortly.

Meanwhile, the adtech business surely knows the sky is falling. The main question is how far.

One possibility is 95% of the way to zero. That outcome is suggested by results published in PageFair last October by Dr. Johnny Ryan (@JohnnyRyan) there. Here’s the most revealing graphic in the bunch:

Note that this wasn’t a survey of the general population. It was a survey of ad industry people: “300+ publishers, adtech, brands, and various others…” Pause for a moment and look at that chart again. Nearly all those proffesionals in the business would not accept what their businesses do to other human beings.

“However,” Johnny adds, “almost a third believe that users will consent if forced to do so by ‘tracking walls’, that deny access to a website unless a visitor agrees to be tracked. Tracking walls, however, are prohibited under Article 7 of the GDPR…”

Pretty cynical, no?

The good news for both advertising and publishing is that neither needs adtech. What’s more, people can signal what they want out of the sites they visit—and from the whole marketplace. In fact the Internet itself was designed for exactly that. The GDPR just made the market a lot more willing to start hearing clues from customers that have been laying in plain sight for almost twenty years.

The first clues that fully matter are the ones we—the individuals they’ve been calling “users,” will deliver. Look for details on that in another post.

Meanwhile::::

Pro tip #1: don’t bet against Google, except maybe in the short term, when sunrise will darken the whole adtech business.

Instead, bet against companies that stake their lives on tracking people, and doing that without the clear and explicit consent of the tracked. That’s most of the adtech “ecosystem” not called Google or Facebook.

Google can say it already has consent, and that it is also has a legitimate interest (one of the six “lawful bases” for tracking) in the personal data it harvests from us.

Google can also live without the tracking. Most of its income comes from AdWords—its search advertising business—which is far more guided by what visitors are searching for than by whatever Google knows about those visitors.

Google is also also relatively trusted, as tech companies go. Its parent, Alphabet, is also increasingly diversified. Facebook, on the other hand, does stake its life on tracking people. (I say more about Facebook’s odds here.)

Pro tip #2: do bet on any business working for customers rather than sellers. Because signals of personal intent will produce many more positive outcomes in the digital marketplace than surveillance-fed guesswork by sellers ever could, even with the most advanced AI behind it.

For more on how that will work, read The Intention Economy: When Customers Take Charge. Six years after Harvard Business Review Press published that book, what it says will start to come true. Thank you, GDPR.

Pro tip #3: do bet on developers building tools that give each of us scale in dealing with the world’s companies and governments, because those are the tools businesses working for customers will rely on to scale up their successes as well.

What it comes down to is the need for better signaling between customers and companies than can ever be possible in today’s doomed tracking-fed guesswork system. (All the AI and ML in the world won’t be worth much if the whole point of it is to sell us shit.)

Think about what customers and companies want and need about each other: interests, intentions, competencies, locations, availabilities, reputations—and boundaries.

When customers can operate both privately and independently, we’ll get far better markets than today’s ethically bankrupt advertising and marketing system could ever give us.

Pro tip #4: do bet on publishers getting back to what worked since forever offline and hardly got a chance online: plain old brand advertising that carries both an economic and a creative signal, and actually sponsors the publication rather than using the publication as a way to gather eyeballs that can be advertised at anywhere. The oeuvres of Don Marti (@dmarti) and Bob Hoffman (the @AdContrarian) are thick with good advice about this. I’ve also written about it extensively in the list compiled at People vs. Adtech. Some samples, going back through time:

  1. An easy fix for a broken advertising system (12 October 2017 in Medium and in my blog)
  2. Without aligning incentives, we can’t kill fake news or save journalism (15 September 2017 in Medium)
  3. Let’s get some things straight about publishing and advertising (9 September 2017 and the same day in Medium)
  4. Good news for publishers and advertisers fearing the GDPR (3 September 2017 in ProjectVRM and 7 October in Medium).
  5. Markets are about more than marketing (2 September 2017 in Medium).
  6. Publishers’ and advertisers’ rights end at a browser’s front door (17 June 2017 in Medium). It updates one of the 2015 blog posts below.
  7. How to plug the publishing revenue drain (9 June 2017 in Medium). It expands on the opening (#publishing) section of my Daily Tab for that date.
  8. How True Advertising Can Save Journalism From Drowning in a Sea of Content (22 January 2017 in Medium and 26 January 2017 in my blog.)It’s People vs. Advertising, not Publishers vs. Adblockers (26 August 2016 in ProjectVRM and 27 August 2016 in Medium)
  9. Why #NoStalking is a good deal for publishers (11 May 2016, and in Medium)
  10. How customers can debug business with one line of code (19 April 2016 in ProjectVRM and in Medium)
  11. An invitation to settle matters with @Forbes, @Wired and other publishers (15 April 2016 and in Medium)
  12. TV Viewers to Madison Avenue: Please quit driving drunk on digital (14 Aprl 2016, and in Medium)
  13. The End of Internet Advertising as We’ve Known It(11 December 2015 in MIT Technology Review)
  14. Ad Blockers and the Next Chapter of the Internet (5 November in Harvard Business Review)
  15. How #adblocking matures from #NoAds to #SafeAds (22 October 2015)
  16. Helping publishers and advertisers move past the ad blockade (11 October 2015 on the ProjectVRM blog)
  17. Beyond ad blocking — the biggest boycott in human history (28 Septemper 2015)
  18. A way to peace in the adblock war (21 September 2015, on the ProjectVRM blog)
  19. How adtech, not ad blocking, breaks the social contract (23 September 2015)
  20. If marketing listened to markets, they’d hear what ad blocking is telling them (8 September 2015)
  21. Apple’s content blocking is chemo for the cancer of adtech (26 August 2015)
  22. Separating advertising’s wheat and chaff (12 August 2015, and on 2 July 2016 in an updated version in Medium)
  23. Thoughts on tracking based advertising (18 February 2015)
  24. On marketing’s terminal addiction to data fracking and bad guesswork (10 January 2015)
  25. Why to avoid advertising as a business model (25 June 2014, re-running Open Letter to Meg Whitman, which ran on 15 October 2000 in my old blog)
  26. What the ad biz needs is to exorcize direct marketing (6 October 2013)
  27. Bringing manners to marketing (12 January 2013 in Customer Commons)
  28. What could/should advertising look like in 2020, and what do we need to do now for this future?(Wharton’s Future of Advertising project, 13 November 2012)
  29. An olive branch to advertising (12 September 2012, on the ProjectVRM blog)

I expect, once the GDPR gets enforced, I can start writing about People + Publishing and even People + Advertising. (I have long histories in both publishing and advertising, by the way. So all of this is close to home.)

Meanwhile, you can get a jump on the GDPR by blocking third party cookies in your browsers, which will stop most of today’s tracking by adtech. Customer Commons explains how.

12 May 21:07

Untruths in Advertising

by pricetags
12 May 21:06

Bus Power in Seattle

by pricetags

How did a transit-backward town become a national poster child for ridership success?

So asks CityLab; since 2007, the fastest-growing city in the country has added nearly a quarter million jobs (thanks in considerable part to Amazon), and has grown in population by more than 15 percent since 2010.

Remarkably, though, Seattle has not gained more cars in its most congested areas. The number of commuters driving private vehicles downtown has declined by 10 percent since 2010, even as new residents and workers have spiked. 

By and large, new arrivals are instead choosing to ride the bus. Seattle’s King County Metro has seen an 8 percent increase in bus riders over the past nine years, and gained about 700,000 rides between 2016 and 2017 alone.

“… buses are often the fastest means to equitable and efficient transit for large numbers of people. In that respect, Seattle’s example as an overnight bus haven seems incredibly useful. It demonstrates a simple and powerful truth: Build a system that works, and riders will come. …”


(Madison McVeigh/CityLab)

“It comes down to math,” said Andrew Glass Hastings, the director of transit and mobility at the ‎Seattle Department of Transportation. “At the pace we’re growing, we can’t move people in cars. That is hugely involved in success. If we let buses get mired in congestion, we wouldn’t see these ridership increases.”

Translation: People wouldn’t take the bus if it didn’t travel through Seattle’s core employment centers this rapidly and frequently. By keeping high-capacity modes moving swiftly, transit-only lanes keep riders happy. The first lesson for any transportation planner looking to reverse-engineer Seattle-style success — make room for buses. …

Seattle’s downtown transit tunnel is the only tunnel in the world where buses and trains share right-of-way.
https://giphy.com/embed/2A83ZHgpJy3T8EEPJo

Laura Bliss/CityLab, via GIPHY

Among the transit experts I spoke to, that was the top recommendation for other cities. Dedicated right-of-way, after all, is perhaps the top distinguishing factor between buses and the “first class” mode of public transit in most cities—heavy rail systems such as trains and subways, which don’t mix with traffic. Their right-of-way is for safety, but it also allows trains to offer fast and frequent service.

“That’s become inherent to the way we use subway systems, while buses have taken on this stigma of being smelly, slow, and unreliable,” said Kari Watkins, a professor of transportation engineering at Georgia Tech who earned her Ph.D. at the University of Washington. “But there’s nothing inherent to a bus that makes it that way.” Breaking the bus/rail paradigm is central to what Seattle has achieved.

Part of that’s been by force, since Seattle lacks a legacy rail system. Historically speaking, despite its progressive bonafides, the city has not been much of a transit leader. …

The ground began to shift in the mid-1990s, when Washington State set up some the most restrictive land use laws in the country. Middle-class exurbanites fed up with the horrendous traffic and degraded wildlands created by Seattle’s 1980s population boom got state legislators to rein in traffic and sprawl with the Growth Management Act of 1990, now famed in urbanist circles. Seattle followed suit by designating 30 neighborhoods as “urban villages,” where growth and density would be concentrated to produce more walking and fewer vehicle-miles traveled. …

That might be the next tip for transportation planners in other cities: Get your land-use laws in line. And get on the phone with the private sector, where benefits departments may also be looking to get employees to work faster and cheaper than subsidizing parking. …

That’s another key thing a city needs to avoid a transit death spiral: money. Historically, Seattle has received little transit funding from the state, which famously lacks an income tax.  … In 2016, voters said yes to Move Seattle, a nine-year, $930 million transportation levy for street safety improvements and redesigns that give pedestrians, cyclists, and transit riders more room. Meanwhile, King County Metro has been systematically upgrading bus fleet and shelters: In 2015, the agency retired 146 buses and replaced them with 179 new ones. It promises a fully electric-powered fleet by 2034. …

Seattle has made moves to limit the presence of Uber, Lyft, and other on-demand vehicles on city streets, and to require the companies to share trip data so that public officials can understand their effects on transportation systems. Meanwhile, transit leaders are also focused on providing service that keeps better-off riders from being easily lured away. There’s another important lesson from Seattle: In an era where many cities are freaking out over Uber’s effect on public transit, it may not be enough to play defense by tamping down regulations. Play offense by building a transit system that people actually want to ride.

The culture definitely helps, they felt. On the other hand, “people that care about transit philosophically still wouldn’t take it if it didn’t actually work,” Lobo said.

In Seattle, the usual vectors of transportation inequality may be becoming freakishly reversed. …

Will the arrival of trains at scale change the role of buses in Seattle? Transportation advocates are hoping that the light-rail system can be a “gateway drug” to other modes of transit for suburban commuters accustomed to driving. But there’s concern that a glitchy transfer or long wait at a bus stop could be enough to dissuade them. “We are kind of banking on having this complementary system, and there are still issues about connecting trains and buses,” said Serebrin. “We have to make this as intuitive and easy as possible.” …

More broadly, as lower-income households are priced out of Seattle’s spendy core, they’re also getting pushed further away from frequent bus service that is being cultivated there. While some of the planned Sound Transit stations reach historically underserved neighborhoods, some residents worry they won’t be able to stay in place once the train, and its gentrifying baggage, arrives.

(Madison McVeigh/CityLab)

In Seattle, the usual vectors of transportation inequality may be becoming freakishly reversed. “My concern is whether we are pushing people to buy a car where they’ve never had to,” said Giulia Pasciuto, a policy and research analyst at Puget Sound Sage, a research and activist organization focused on racial justice and equity in the region. In other words, while affluent urbanites enjoy the benefits of Uber-competitive bus service, poorer riders in distant suburbs will be forced to shoulder the financial burden of car ownership. …

Clearly, Seattle needs more buses, not fewer, and it needs them everywhere. Another threat to the so-far positive trajectory of bus ridership is the incredible demand. In and around downtown, it’s not uncommon for riders to have to wait for multiple buses to go by during rush hour before they’re able to board. Chronic overcrowdedness can be a pretty strong cue for riders who can afford other modes to ditch transit, something King County Metro and SDOT are keen to avoid. Cooper and Bryant said that they’re increasing service as quickly as they can, but with the pace of population growth, it’s not easy to keep up.

A few weeks later, Nashville’s big ballot measure got clobbered at the polls, especially among suburban voters. In post-mortems of the loss, some analysts noted that the plan may have erred by emphasizing an ambitious slate of expensive light-rail lines instead of a more modest alternative scenario of bus-focused expansion.

Despite population growth, bus ridership in Nashville has dipped slightly over the last two years. “If your biggest immediate transit problem is inadequate bus service, it does not necessarily follow that the only solution to your problem includes spending $5.5 billion…constructing light rail,” concluded Jeff Davis of Eno Transportation Weekly.

In that sense, the lesson in Seattle is less about trains and more about their less-glamorous counterparts. In so many cities with rail transit systems new and old, buses are second-tier transportation.

But Seattle has built something remarkable, and much of it quickly: a bus system that people choose to take. It’s not perfect, and it will need to maintain and expand the level of excellence found downtown as the city grows, morphs, and becomes less equal. But passengers are showing support by riding in larger shares.

Borrowing a phrase from the transit consultant and writer Jarrett Walker, Watkins sums up why Seattle’s frequent, well-maintained, and funded buses are working as well as they do. “Transit has to respect me,” she said. In turn, by and large, Seattle riders are respecting it back.

12 May 21:05

A new BlackBerry next month

by Volker Weber

BlackBerry Mobile will present the successor to the KEYone next month. Apparently it will be called the KEY². I have some information about its internals, but I am not going to leak them. What I can say is that it will be a good smartphone for professional use. And if you like to have a physical keyboard, it is going to be your best option.

Last fall BlackBerry Mobile has launched the all-touch Motion, a phone that I really like. It looks great, it is easy to grip with your hands, it has a large screen and runs on battery forever. The internals are decidedly midrange and the camera is hit or miss, actually more miss than hit.

KEY² will take some cues from the Motion design and trade some screen estate for a phyiscal keyboard. I have spoken with several customers and they all expressed their preference for KEYone over Motion because of the keyboard. I believe that BlackBerry Mobile will iterate on the keyboard design rapidly. They would rather make another keyboard device at a different price point than make a successor to the Motion, for the time being.

athena

These renders seem to be pretty close to the device that is in Chinese certification.

BlackBerry and BlackBerry Mobile are very busy finishing Android Oreo for the KEY² and they are testing on KEYone and Motion. Oreo will be out on all three devices in the summer with KEY² being the first one. I do not expect BlackBerry Mobile to carry the DTEK phones forward. They recently rolled out a new fix for the Priv, but it remained on last year's security patch level. So far DTEK50/60 receive monthly security fixes, but nobody seems to be committed to them. BlackBerry Mobile sees KEYone and Motion as "their" phones and will continue to support and upgrade them.