Shared posts

05 Aug 14:50

Playing with Pride

by Gordon Price

The Pride Flag – one of the great graphics of our times.

Its simplicity, those particular colours, its inclusive meaning – no wonder the Pride Flag is so immediately recognizable and embraced by so many peoples for what has become a global summer festival.  Variations will evolve to distinguish the nuances of its subcultures, to be raised more as political statements – but the rainbow Pride Flag is a keeper that keeps on spreading.

Its graphic power especially allows it to escape from the constraints of the flag format.  Think crosswalks.  And as artists and designers have appropriated its colours for more creative presentations, cities around the world have became outdoor galleries of splashy public pride-art.  Sometimes just for association, sometimes for marketing, always for expression.

Here are some fine examples from Tel Aviv when it celebrated Pride for a week this June.  (One gets the sense that the bold use of the colours is also a statement of secularity by its citizens.)

Vancouver is relatively unimaginative in its use of Pride regalia – mostly flags, banners, a bit of paint.  So allow me to make a recommendation:

City of Vancouver, have a contest to decorate these trucks, Pride-style:

I get why you use them as giant metal bollards, to close off streets and prevent a terrorist event as happened in Toronto.  But it makes the events they’re protecting seem like they’re in construction zones.

Commission some transformative ideas.  Give some grants to make them happen. Let the artists and designers demonstrate their cleverness and creativity, using these lumbering canvases, to make them part of our festivals, parades and gatherings – not just a cheap, dumb solution to a policing problem.

Show some Pride.

 

 

05 Aug 01:31

Deep down, the suspicions about capitalism are rooted in a feeling that its instruments, the…

by Stowe Boyd

| Charles Handy, What’s A Business For?

Continue reading on Medium »

05 Aug 00:21

Missing an Apple watch? Dozens seized at home of alleged Downtown Eastside 'Fagin'

mkalus shared this story .

He's accused of being a Downtown Eastside version of Fagin — the legendary character from Oliver Twist who led a school of pickpockets in Dickensian London.

But the would-be thief Aaron Castillo-Anguiano allegedly mentored was an undercover police officer.

The allegations are spelled out in court documents which include a lawsuit detailing the bounty of goods allegedly seized from Castillo-Anguiano's residence following a Vancouver police investigation.

Officers allegedly found 42 Apple watches, 140 computers, four drones and two cappuccino makers in the apartment.

B.C.'s director of civil forfeiture now wants to keep the goods as the proceeds of crime.

"The VPD, using undercover operators, sold Mr. Castillo-Anguiano merchandise held out as stolen for significantly below retail value on five separate occasions. Mr. Castillo-Anguiano instructed undercover operators from the VPD to bring him specific items," the notice of civil claim reads.

"The VPD observed Mr. Castilloo-Anguiano take the stolen property to the residence."

'Not consistent with standard banking practices'

Castillo-Anguiano has a first appearance in Vancouver provincial court on Wednesday for charges of possession of stolen property, failing to comply with an undertaking and counselling someone else to commit theft.

The civil forfeiture lawsuit was filed in B.C. Supreme Court last month.

According to the notice of civil claim, the investigation began in January when police received a report of a male buying and selling stolen items at the Downtown Eastside market at 62 Hastings.

The outdoor market was established in 2010 as a response to the street vending already taking place in the Downtown Eastside. It allows vendors a chance to sell items they have either made or found in dumpsters and alleys.

A sign posted on the premises specifically states that stolen property, power tools  and bicycles are not allowed for sale.

According to the lawsuit, police had previously identified Castillo-Anguiano as an illegal vendor of cigarettes. They were also told he was buying expensive stolen property in August 2016.

Officers allegedly recovered stolen property he displayed for sale at a market on Powell Street in 2017.

They allegedly observed him selling stolen goods at the Downtown Eastside market in June 2018.

As a result of the investigation, the VPD executed a search warrant at Castillo-Anguiano's home — a high-rise apartment building about two blocks away from the market.

They seized a vast amount of property as well as $15,505 in Canadian currency, $2,120 in U.S. money and two Canadian coin collector sets.

"The money was bundled or packed in a manner not consistent with standard banking practices," the civil claim reads.

Police claim that they also returned a significant amount of property that was traced to its original owners.

Fur hats, designer clothes, liquor

B.C.'s Civil Forfeiture Act allows the province to file suit against property linked to unlawful activity, regardless of whether or not a person has been convicted or even charged with a crime.

To win, the director of civil forfeiture has to establish that the property in question is either the proceeds of crime or an instrument of unlawful activity.

The lawsuit includes an eight-page appendix listing the items which the province now argues should be forfeited as the proceeds of crime.

In addition to the Apple watches and computers, police seized 50 pieces of jewellery, including a Breitling watch, a Bvgari silver-coloured ring and dozens of gold and silver coloured necklaces.

They also seized Anthropologie and American Eagle jeans, fur hats, a Louis Vuitton belt and a Chanel purse. The list includes dozens of cameras, various gift cards and 35 bottles of liquor.

Castillo-Anguiano has yet to enter a plea to the criminal charges and has not filed a response to the civil forfeiture claim.

None of the allegations have been proven in court.

05 Aug 00:14

Leading self-managed experts

by Jim

Uniform cap

Twenty-some odd years ago, I had an opportunity to listen to Colin Powell speak. The event was small enough and I was senior enough that we had a useful conversation after his talk. The question I had was “how can you benefit from the experts working for you without some understanding of what they actually know and do?”

Secretary Powell’s response was that you had to rely on your ability to judge people on a human level and trust that the enterprise you were part of was able to maintain a level of quality in how it recruited, developed, and advanced its experts. I wasn’t happy with his answer then and I’ve only become more unhappy since.

In most enterprises, for most of their history, the nature of work changed slowly. In Powell’s case his job was the same from the time he was a young 2nd lieutenant until he was Chairman of the Joint Chiefs of Staff; defend the U.S. against the threat posed by the Soviet Union. Only the scope changed.

That world was gone when we had the conversation twenty years ago. How do you manage a sales force using Salesforce when your selling days were built around a Rolodex and a DayPlanner? How does experience interpreting focus group results prepare you to extract insight from clickstream data? Pick your domain and the flood of new knowledge obsoletes old technique and overwhelms your capacity to evaluate results on the basis of merit.

There’s a dilemma here. You can’t manage what you don’t know. You can’t know everything you need to know. What you need to know changes faster than you can keep up.

Organizations exist to solve problems that exceed the capacity of any individual. We tend to think of that as a hierarchical process. An entrepreneur hires people to carry out their vision and design. Those people are there to execute work on behalf of the entrepreneur but the implicit assumption is that the entrepreneur could do all the tasks given sufficient time.

This was Colin Powell’s world. He might not know all the details of his subordinates work but he could. He was willing to trust their recommendations because he trusted the system. What if he can’t understand the recommendations? Or the alternatives?

The military sidesteps this problem with a useful workaround—commander’s intent. Commanders share the reasoning and goals being their orders. That allows subordinates to make local decisions applying their expertise to accomplish “commander’s intent” even if that might mean ignoring or contradicting the specifics of the commander’s orders.

In our expertise saturated environment, we need to create a bilateral form of commander’s intent. Knowledge intensive work in a volatile environment comes with the requirement to teach others how to understand and make sense of your work.

“Trust me” is not an option in either direction. Success depends on getting meaningful conversation to take place about the competing claims of all the stakeholders.

Contributing to this conversation places different demands depending on your role.

If you are an expert, you must understand the organizational decisions your expertise bears on. You must then be able to articulate the assumptions and limitations that constrain your options and your recommendations. The A/B testing of copy on your e-commerce site tells you nothing about the people who never visit your site.

If you are a leader, your goals need to include sharing the reasoning behind the answers you seek. In fact, you ought to stop thinking of experts as the people who provide answers. In time-stressed settings, it is always tempting to seek focus and clarity by seeking to confirm your intuitions. Executives ask for answers to their immediate problems. The counterintuitive yet more useful strategy in volatile environments is to collaborate with your experts to articulate and explore questions you have not thought to ask.

The post Leading self-managed experts appeared first on McGee's Musings.

04 Aug 21:35

Twiggy Little Devices with Silly Names

by Gordon Price

They’re on their way, Vancouver is behind, it’s going to be messy, but it’s inevitable: electric scooters and, no doubt, a whole bunch of related technologies.

Thomas sends along a piece from The Economist that describes what’s happening in Europe.  (Unfortunately, the whole piece is behind a paywall, but here are the opening paragraphs):

Streets ahead

Europe is edging towards making post-car cities a reality

 Hurtling along a “cycle highway” by the River Scheldt in Antwerp recently, Charlemagne (the author) only noticed the electric scooter when it was too late. Spinning tyre met stationary scooter, British journalist separated from Belgian bike and Anglo-Saxon words were uttered. How irritating and obnoxious these twiggy little devices can seem with their silly names (“Lime”, “Poppy”, “Zero”) and their sudden invasion of the pavements of every large European city. Everywhere they seem to be in the way, abandoned precisely at those points where prams, pedestrians or speeding journalists need to pass.

And yet your columnist refuses to hold a grudge, because the rise of the electric scooter is part of a broader and welcome phenomenon: the gradual retreat of the car from the European city. Across the continent, apps and satellite-tracking have spawned bike- and scooter-rental schemes that allow city-dwellers to beat the traffic. Networks of cycle paths are growing and creeping outwards; that of Paris will by next year have grown by 50% in five years. Municipal governments are lowering speed limits, introducing car bans and car-free days, pedestrianising streets and replacing car parks with bike parks.

04 Aug 21:34

Aphorisms

by Dave Pollard


photo by Allen Ishibashi, from Twitter
In this week’s New Yorker, Adam Gopnik muses on the value, appeal and history of aphorisms. He differentiates the aphorism (wise) from its cousin, the epigram (witty). He touches on Twitter, the latest vehicle for brief passages, but doesn’t note that the principal home of the aphorism in social media is Facebook, where stolen words, embedded in a coloured frame with an appropriate image, and frequently unattributed (or misattributed), cannot easily be recopied, and often seem a vicarious plea for the kind of appreciation that the poster could never hope to obtain from his or her own thoughts.

Adam, whose invented phrase “the intercession of a thousand small sanities”, to describe his prescription for coping with a bewildering and out-of-control modern world, is no stranger to an uplifting and enlightening turn of phrase. He suggests that to qualify as an aphorism a brief passage must bring some new insight, perspective, recognition or motivation, and must be unarguably true, even self-evident, but never obvious. It differs from a learning (which requires more support/background/set-up, eg Pollard’s Laws), a mantra (which is debatable), or a maxim (a rule or suggestion on how to conduct oneself — “Trust your instincts.” “Show, don’t tell.”).

Here are a few examples that he provides that I quite like:

Amazing that the chess clock never found a more general application. A more enlightened society would have made it as indispensable to conversation as shoes to walking. (Scottish poet Don Paterson)

Almost everything in the room will survive you. To the room, you are already a ghost. (Don Paterson again)

In the misfortune of even our best friends, there is something that does not displease us. (François Duc de La Rochefoucald)

What I find intriguing about aphorisms is that, while most will agree that a selected passage may qualify by the above definition, the delight each of us gets from our favourite aphorisms is highly personal — there seems little consensus on what the best aphorisms are. Perhaps their resonance is contextual, and hence their pleasure for each of us depends on our personal history. And I’d guess that aphorisms appeal very differently to each of us similarly to the way comedy does. To each their own.

I’ve included many quotations on my blog over the years, some of which qualify as aphorisms. Some of them, I’m sad to say, have at some point been afflicted by the suck fairy, and I’m embarrassed to have once held them up as noble or clever truths. But most of them have legs, and here are a few that I still hold dear:

The job of the media is to make what is important, interesting. (Bill Maher)

Polemic is a lucrative form of entertainment, as the media can employ unpaid and fiercely motivated actors. (Nassim Taleb)

We often refuse to accept an idea merely because the tone of voice in which it is expressed is unsympathetic to us. (Friedrich Nietzsche)

Be patient with all that is unresolved within your heart, and try to love the questions. (Rainer Maria Rilke)

Your silence gives consent. (Plato)
There comes a time when silence is betrayal. In the end we will remember not the words of our enemies, but the silence of our friends. (Martin Luther King)

Every truth is, at first, ridiculed, then violently opposed, and finally accepted as self-evident. (Arthur Schopenhauer)

The truth will set you free. But first, it will piss you off. (Gloria Steinem)

Change in attitudes and beliefs occurs not from people being persuaded to change their minds based on new knowledge, argument or insight, but rather as generations with old attitudes and beliefs they were unable to inculcate in their children, die off. (Max Planck)

The single biggest problem in communication is the illusion that it has taken place. (Variously cited.)

To be nobody but yourself in a world which is doing its best, night and day, to make you everybody else – means to fight the hardest battle which any human being can fight; and never stop fighting. (EE Cummings)

Perhaps in time the so-called Dark Ages will be thought of as including our own… What is called knowledge of human nature is mostly nothing but the observer’s own weaknesses reflected back from others. (Georg C Lichtenberg, 18th century!)

I think what a lot of fiction is, is the imagining of the worst so as to prepare ourselves. (Paul Bloom)

Community is born of necessity. (Joe Bageant)

People will listen when they’re ready to listen and not before. Probably, once upon a time, you weren’t ready to listen to an idea that now seems to you obvious, even urgent. Let people come to it in their own time. Don’t waste time with people who want to argue. They’ll keep you immobilized forever. Look for people who are already open to something new. (Daniel Quinn)

If you are looking for the love of your life, stop. They will be waiting for you when you start doing things you love. (Anonymous)

You can learn a lot about someone by listening to a song that means a lot to them. (Anonymous)

People learn more from stories than from even the most brilliant analytical discourse. (Anonymous)

Rereading these, I realize that some of them are things I want to be true, and which might actually not be so. That’s one of the problems with brevity: Einstein purportedly said, aphoristically, that “a theory should be as simple as possible, but no simpler”. There is something clearly aspirational, more than reflective, in some of these. Of course “small is beautiful” and “less is more”, but perhaps not always, and perhaps with a cost — the risk of oversimplification and wishful thinking.

Most discouragingly, almost all lists of aphorisms (including mine above) contain quotes almost exclusively from men. Is this because brevity, wit and precision of thought are not recognized as positive qualities in women writers and speakers, or because women know better than to trust dangerously simple statements of truth? Or because readers and listeners are unaware or indifferent to women of great insight?

I omitted the famous Margaret Mead (“Never doubt…”) quote from my list above, for the same reason I omitted the famous Bucky Fuller (“You never change things by fighting…”) quote — because I no longer believe they are true.

But I owe it to myself to reread some of the most inspiring books and articles written by women — Elizabeth Warren, Janine Benyus, Janelle Orsi, Donella Meadows, Melissa Pierson, Rebecca Solnit, Jill Lepore, Leslie Jamison, Helen Macdonald, Margaret Atwood, Ursula Le Guin, Alice Walker, Arundhati Roy, Laura Kipnis.

My guess is that the aphorisms in their work will be of a somewhat different style — subtler, more observant, less categorical, more nuanced, more poetic and allegorical. We’ll see.

 

04 Aug 21:34

Apple could be planning to launch a 5G-capable MacBook in 2020

by Patrick O'Rourke

It looks like Apple could have plans to release a 5G-capable MacBook Pro in 2020, according to a new report from DigiTimes.

The publication states Apple already has a design ready to go for the laptop but that it’s waiting until the rollout of 5G in the United States in 2020 before releasing the new MacBook.

Regarding a Canadian release of the laptop, we’ll likely have to wait even longer than our American counterparts. 5G isn’t expected to be available in Canada fully until 2021 publically.

It’s also worth noting that it’s unclear where DigiTimes is sourcing its information related to the possibility of a 5G MacBook. Apple’s recent purchase of Intel’s 5G modem technology also likely won’t be helpful in the laptop’s development given the purchase-related only to smartphone technology. Intel still retains 5G desktop and laptop modem patents.

DigiTimes’ report goes on to say Apple is expected to utilize ceramic material for the laptop’s 5G antenna board instead of standard metal. The publication says this shift will improve cellular reception as well as connection speed.

It’s unclear if this 5G MacBook would be a Pro or Air. Apple is rumoured to be preparing to release a redesigned 16-inch MacBook Pro in late 2019 with small bezels. This revamped version of the laptop is expected to feature a new scissor-switch mechanism keyboard rather than the beleaguered, unreliable Butterfly switch like its current laptops. This scissor-switch will then reportedly make its way to the tech giant’s other laptops.

Rumours have been circulating for years that Apple was working on an LTE-capable MacBook but the laptop never materialized.

Apple is expected to release three 5G iPhones in 2020, according to various rumours.

Source: Digitimes Via: 9to5Mac

The post Apple could be planning to launch a 5G-capable MacBook in 2020 appeared first on MobileSyrup.

04 Aug 21:34

An enormous blast of things from museums

by Liz

On Wednesday I had a tour of the Presidential Museum in the Palacio Carondelet. To go on this tour you need to schedule a day in advance, providing your name and passport number over phone or email. Not difficult, but you can’t just drop in to take the tour. It’s well worth it – the museum was great, especially if you like old religious paintings.

When I got to the entrance where my 9:30am group was gathering, the tour guide and the guard stationed at the entrance had to call someone to find the key to a lift that went up a long flight of stairs to the front porch of the Palacio. After they got the key and figured out how to turn on the lift, they spent some time figuring out how to make it work. They finally got the lift to come almost all the way down to where I was, but then the last stage of making a small lip of the platform extend about 6 inches down proved to be impossible. So, for maybe 15 or 20 minutes we all watched the flustered guide and the man with the key to the lift push the same few buttons over and over, in vain. Finally I asked where the President enters the building and asked if they could take me there. The guard took me to the other side of the porch where — amazing— there was a long, smooth, perfect, gently sloping stone ramp. Why they have the lift in the first place, I don’t know! It’s a little silly! The ramp is much better.

Once we were inside everything went smoothly – the first part of the museum has some information about the history of Quito alongside gifts from heads of state to the Presidents of Ecuador. Things like a gold clock that shows the time in every other OPEC(OPEP) nation. The rest of the exhibits were religious paintings with particular focus on various incarnations of the Virgin Mary. Virgen de las Flores, del Terremoto, del Volcán, and especially del Apocalípsis, which seems to be Quito’s favorite — the Virgin floating or stepping on the dragon of the Apocalypse along with a lot of other fascinating symbolism in each painting. I took so many pictures!

While we were on the tour we could hear drums, chants, and someone speaking through a megaphone from the plaza. It was amazing how well the sound carried all through the Palace. ON the way out, I listened and watched for a while. The protestors’ hashtag was #VaPorTiTrabajadorPetrolero. It’s always good to see protests happening and then look up what their issues are later!

I was reminded of a story I was told about some protestors in the same Plaza, before my trip, by my friend Kevin,

Re: President in Bathrobe. This was about 2002?

Beck and I were in Equador and we were staying for a few days in a monastery that had been converted to a hotel. It was around the corner from the presidential palace.

Beck and I were coming home late one night and were walking through the courtyard in front of the palace. There were three old guys with a bullhorn yelling something over and over again. The lights turn on at the front of the palace and the president and two guards come walking over to the guys with the bullhorn. We also walk over because interesting.

Someone else who walked over spoke english and gave us the rundown of the conversation:

the protestors were retired military and were annoyed they hadn’t gotten a benefit they were supposed to get. The president explained, okay we can work on this but it is 2am and I need to sleep. Here’s my card, call this number tomorrow and someone will book time on my schedule so we can talk during the daytime. The three old guys thought this was reasonable. Everyone shook hands and the president said to Beck and I “I hope you like Equador”.

Then he turned around, the guards followed him into his building and the lights turned off.

Good story.

After that I wandered towards the Museo de la Ciudad. This was very accessible, with a somewhat steep but not impossible ramp to a separate entrance next to the main entrance just beyond the Arco de la Reina. A big yellow arch, you can’t miss it if you’re heading down Venezuela towards the hill with the huge statue. The museum is free if you’re disabled.

This museum is just great! Its exhibits lead you through the history of Quito over time. It’s also super accessible with an elevator to the 2nd floor exhibits and then another small (unlocked, working) lift to a second wing of the museum. There were especially great dioramas including one of a battle between the Spanish and the indigenous people with little figurines of conquistadores making shocked faces as they are speared through the heart. It doesn’t get much better than this.

tiny detailed figurine of conquistador speared by an indian

The wall of beautiful dolls all dressed in different traditional costume was incredible with information I couldn’t find on the internet anywhere and this was followed up by dolls for hippies, skaters, and punks to represent new cultures from city life of the 20th century.

dolls showing traditional costumes of various people

Here’s my favorite painting from the Presidential Museum, called Triunfo del Rosario en el Mundo, by Manuel de Samaniego y Jaramillo. I’ll just link to my Flickr photo of it so you can zoom in and follow along. I first had a good look at the guy holding the planet on his back surrounded by a dragon who I guess is like the devil or the serpent of the apocalypse or something. Laser beams are shooting into the serpent’s head and into the earth. Following them upwards…. the laser beams are actually the blood of Jesus which he is actively squirting out of his side through a rosary and a crown. Wow! Wild! There are also representatives of various peoples of the world looking prayerful and a nun with the most smug facial expression ever, as if she was thinking “You were gonna leave me out but NO… here I am! Holding a bloody, glowing heart!” There is also a healthy smattering of floating heads. There is a LOT going on in this painting!

When it sounds super casual that I’m getting around town, please keep in mind that the pavement is cobblestones or bricks, curb cuts are either non existent or tenuous and may lead directly into traffic coming in the wrong direction (You have to just hand signal and make an unspoken agreement with the drivers!) You might go down a sidewalk only to have to turn around and go back another way because light posts are blocking your way, and there are also hills. So, if you are a fellow wheelchair user, either be a great athlete and very robust, or a very intrepid powerchair user with as narrow of a chair as possible.

I had a rest in the afternoon to prepare for Friday’s adventure — horseback riding on a volcano.

04 Aug 21:34

The Local Food Trail, by Bicycle

by peter@rukavina.net (Peter Rukavina)

Here’s a photo of Oliver on his bike riding to the Charlottetown Farmers’ Market yesterday along the Confederation Trail:

Photo of Oliver on his tricycle.

You may see that photo and think “oh, riding to the market, what a nice idea.”

I look at the photo and see years of effort culminating in extreme bravery: it was an amazing feat, especially given that Oliver only started cycling in earnest a week ago.

The tricycle he’s riding is a Fiori Parklane that we purchased on Friday from MacQueen’s after renting it the previous weekend for a try-before-you-buy. It’s stable enough that Oliver’s skittishness about “tippiness” is mitigated. It’s easy enough to pedal that the 6 km round trip from home to the market was reasonable. It’s got a generous basket in the back that allowed Oliver to bear the brunt of getting our market purchases back home.

Along the way we realized that our regular Saturday local food trail is almost 100% accessible by bicycle: we can ride up the Confederation Trail to the Farmers’ Market, then back down to the Kensington Road-Fitzroy-Escher intersection and take the multi-use path up to Riverview Country Market, then come back around and stop at Purity Dairy and, finally, continue on to Receiver Coffee along the Event Grounds trail:

Map of the cycling version of our Local Food Trail

We didn’t hit all the stops this week, just the market and Purity Dairy (where we had a nice chat with personable owner Tom Cullen); we’ll expand the footprint as comfort level increases in the weeks and months to come.

04 Aug 21:34

Any note taking app that syncs over LAN? - washere

The forum parser is setting invisible my lines with angle brackets in previous comment.

When clicking on ftp plugin , then choose:
New Connection

When clicking on LAN plugin, then choose line:
+ New Server
04 Aug 21:34

Read Elsevier: "It's illegal to Sci-Hub." Also ...

by Ton Zijlstra
Read Elsevier: "It's illegal to Sci-Hub." Also Elsevier: "We link to Sci-Hub all the time." (Boing Boing)
Elsevier: "It's illegal to Sci-Hub." Also Elsevier: "We link to Sci-Hub all the time."

A full decade ago I heard a very interesting talk by an Elsevier employee who had thought long and hard about ways in which a scientific publisher can be relevant again, since their original function of multiplication and distribution has become completely obsolete. It was a very good talk diving into what a scientist needs from the start till the end of her career, and what type of services Elsevier could offer.

A year later that person didn’t work there anymore and in subsequent years in meetings with e.g. the European Commission all I heard from them was delaying tactics to please let them go on a bit longer without changing, before making open access publishing completely mandatory as well as free availability of any and all publicly funded research.

Since then the Elseviers of this world, and even ‘innovations’ like JSTOR, have betrayed their original purpose of multiplication and distribution exchanging it for an extortionist business model, that not only is a huge financial drag on many universities that have tax money to spend but also completely exclude all scientists around the world that cannot afford the rent-seeking practices of these publishers. They need to go.

04 Aug 21:33

Personal automated assistant (not AI)

by Ton Zijlstra

For over a year, or more like over 2, I’ve been thinking about and creating small bits of a ‘friendly’ guide through my daily work flow. I used to have all kinds of check lists, and processes, and throw them in front of myself like an angry teacher: here do this. Of course being that strict with myself doesn’t get me anywhere. So a few years ago I’ve relaxed that stance and that feels and is much better. Since then I’ve been looking for a friendly way to nudge myself at certain points during the day. Like a personal assistant giving me gentle reminders. My notes, feeds, lists, documentation etc. are all parts of an outboard brain. But that outboard brain currently only responds if I ask it something. I want to more often have that outboard brain approach me, nudge me, and ask me things. Things that ‘past me’ thought were good and useful to ask ‘future me’. Things like asking me every now and then to write down what was important about my day. Or greeting me when I open my laptop in the morning, taking me through the items I previously thought I should do today. Keeping me informed about my previously formulated goals. All kinds of reminders really, but not calendar or task related.

One of the barriers in doing this has been technology choice. Do I use Applescript, or terminal commands? Do I glue together tools like Things, Tinderbox and Evernote even more? I find I hesitated doing that, simply because it makes me more dependent on specific tools, or specific operating systems and hardware. I feel a need for it to be much more agnostic, as well as be ‘boring technology’. That way it has chance of being replicable in a different setting, of me being able to migrate it someplace else.

So in the past days I came to the conclusion I need to use old and tested technology: Html, php and mysql. It is easy to run on my machine as a web server, and will be easy to run on any other. It can talk to various things already on my laptop (such as my mysql based e-mail archive). It is technology I am relatively well versed in, so it will be easier for me to create the functionality that I want. It carries echoes of when I wrote and created the first intranet for my then employer, which was able to communicate with back-office systems (in Perl and Visual Basic). It also carries echoes of when I ran a wiki on my laptop as a personal note taking and intranet tool. Although I also want to make something more ‘shiny’ I think that is a pitfall, as it distracts me from achieving something through the fun of exploring a new (to me) technology choice.

04 Aug 21:33

The Best Wi-Fi Router

by Joel Santo Domingo
The Best Wi-Fi Router

After testing 10 routers over 120 hours, we’ve determined that the best router for wirelessly connecting your laptops, your smart devices, and anything else your daily life depends on is the TP-Link Archer A20. It was faster than anything else we tested at both close and long range, it’s reliable, and it shrugs off the stress of handling multiple wireless devices simultaneously.

04 Aug 21:33

Where as if there is disruption, those like Tim will: - Move goalposts to claim its not as bad as feared; - Allege civil service sabotage; - Accuse the EU of being punitive; - Blame Remainers and experts for stoking panic; and above all - Show zero contrition or self reflection. twitter.com/montie/status/…

by DmitryOpines
mkalus shared this story from DmitryOpines on Twitter.

Where as if there is disruption, those like Tim will:

- Move goalposts to claim its not as bad as feared;
- Allege civil service sabotage;
- Accuse the EU of being punitive;
- Blame Remainers and experts for stoking panic; and above all
- Show zero contrition or self reflection. twitter.com/montie/status/…

If No Deal happens and there is no chaos, belief in newspapers like The Observer won’t recover twitter.com/hendopolis/sta…




1680 likes, 466 retweets



1569 likes, 425 retweets
04 Aug 21:32

RT @Otto_English: Duncan Smith is a Catholic. The English reformation made his faith illegal for 300 years and led to the murder, torture a…

by Otto_English
mkalus shared this story from mrjamesob on Twitter:
It seems the louder the activist the less they understand history.

Duncan Smith is a Catholic. The English reformation made his faith illegal for 300 years and led to the murder, torture and abuse of his fellow believers. A stupid man, with no grasp of history. pic.twitter.com/83SmVXig5k



Retweeted by mrjamesob on Saturday, August 3rd, 2019 5:05pm


5766 likes, 1692 retweets
04 Aug 21:32

It’s Bosses, All The Way Down

by Stowe Boyd

Conventional thinking about emergent leadership is all wrong.

Continue reading on Work Futures »

04 Aug 15:16

3 Hip Stretches to Cure Cycling Hip Pain

by Average Joe Cyclist

A very common complaint from cyclists is cycling hip pain. This post has a video showing three simple hip stretches that almost miraculously cured my own debilitating and very painful cycling hip pain.

The post 3 Hip Stretches to Cure Cycling Hip Pain appeared first on Average Joe Cyclist.

04 Aug 15:16

The Banality of Ogilvy

by Ton Zijlstra
Bookmarked a post (alper.nl)
A more than useful read of how the CEO of Ogilvy tries to worm out of the fact that they are doing work selling concentration camps.

A cringeworthy transcript of an intenral Ogilvy discussion about when you don’t want to work for a client. Comparing oil spills with the current running by US CBP of concentration camps. In other words “it’s good money”.

Employee: So I think what I heard [from statements earlier in the transcript] is that we’re willing to work with companies that have oil spills. We’re willing to work with companies that sell big tobacco. We’re willing to work with companies that contribute to obesity rates and I guess, what I’m mostly hearing is that we’re willing to work with companies that are allowing children to die and that are running concentration camps.

Employee: So I don’t know, so we’ll work with anyone then, is what I’m hearing, and I feel like, I don’t understand for me, and I don’t understand why we can’t pivot.

Seifert [Ogilvy’s CEO]: Let me just see if I can help you understand drawing a line — auto companies allow people to die every single year.

Employee: But they’re [CBP] responsible. It’s on their watch that seven children have died in the last year. They are purposefully not given them what they needed in terms of care.

Seifert: I understand but there are mechanisms for addressing that lack of performance that are beyond both the work we do for that client and frankly the accountability that we have for that client in terms of what they have come to Ogilvy for.

Ok, children dying is ‘lack of performance‘. Got it.
….

Employee: Just one point. I was watching one of the Sunday public affairs shows this weekend and one of the Democratic representatives who was down at the border was talking about expressing both the experience of hearing what some of the CBP officers were doing wrong, which we read about in some of the big stories in the past couple of days which is reprehensible, but she also talked about two officers who pulled her aside and said “please don’t let this continue” and those were CBP officers.

….earlier….

Seifert: So what I’m saying though is, I wouldn’t be here for five minutes if I wasn’t prepared to stand up and be an advocate for the good of Ogilvy and where Ogilvy needs to be better. …. Because we should have people in this company who believe in its values who are willing to stand up and represent those values. And argue for them.

Employee: I’m not sure what those values are.

Time for Seifert and Ogilvy staff to read up on Hannah Arendt, particularly concerning the banality of evil.
I find it particularly shocking that Ogilvy’s CEO Seifert at the start says

[if we would say] “you know what, we’re not going to work for you because you’re not meeting our standards,” then we will have a very small business and we won’t really have a place in the industry with that pure view of a black and white view.

I know very successful companies who do exactly that as part of their values. Who exclude individual organisations as potential client, and upfront have excluded entire sectors because of a mismatch in values. It’s in direct contradiction as well with his earlier statement about believing in Ogilvy’s values, as here he says revenue is all that counts.

It’s also something his employees clearly see through, as per some of the above.

04 Aug 15:15

Programming is an Infinite Construction Kit

by Eugene Wallingford

As so often, Marvin Minsky loved to tell us about the beauty of programming. Kids love to play with construction sets like Legos, TinkerToys, and Erector sets. Programming provides an infinite construction kit: you never run out of parts!

In the linked essay, which was published as a preface to a 1986 book about Logo, Minsky tells several stories. One of the stories relates that once, as a small child, he built a large tower out of TinkerToys. The grownups who saw it were "terribly impressed". He inferred from their reaction that:

some adults just can't understand how you can build whatever you want, so long as you don't run out of sticks and spools.

Kids get it, though. Why do so many of us grow out of this simple understanding as we get older? Whatever its cause, this gap between children's imaginations and the imaginations of adults around them creates a new sort of problem when we give the children a programming language such as Logo or Scratch. Many kids take to these languages just as they do to Legos and TinkerToys: they're off to the races making things, limited only by their expansive imaginations. The memory on today's computers is so large that children never run out of raw material for writing programs. But adults often don't possess the vocabulary for talking with the children about their creations!

... many adults just don't have words to talk about such things -- and maybe, no procedures in their heads to help them think of them. They just do not know what to think when little kids converse about "representations" and "simulations" and "recursive procedures". Be tolerant. Adults have enough problems of their own.

Minsky thinks there are a few key ideas that everyone should know about computation. He highlights two:

Computer programs are societies. Making a big computer program is putting together little programs.

Any computer can be programmed to do anything that any other computer can do--or that any other kind of "society of processes" can do.

He explains the second using ideas pioneered by Alan Turing and long championed in the popular sphere by Douglas Hofstadter. Check out this blog post, which reflects on a talk Hofstadter gave at my university celebrating the Turing centennial.

The inability of even educated adults to appreciate computing is a symptom of a more general problem. As Minsky says toward the end of his essay, People who don't appreciate how simple things can grow into entire worlds are missing something important. If you don't understand how simple things can grow into complex systems, it's hard to understand much at all about modern science, including how quantum mechanics accounts for what we see in the world and even how evolution works.

You can usually do well by reading Minsky; this essay is a fine example of that. It comes linked to an afterword written by Alan Kay, another computer scientist with a lot to say about both the beauty of computing and its essential role in a modern understanding of the world. Check both out.

04 Aug 15:14

These Weeks in Firefox: Issue 62

by Mike Conley

Highlights

 

 

Friends of the Firefox team

Resolved bugs (excluding employees)

Fixed more than one bug

  • Armando Ferreira
  • Arun Kumar Mohan
  • Florens Verschelde :fvsch
  • J
  • jaril
  • Krishnal Ciccolella
New contributors (🌟 = first patch)

Project Updates

Add-ons / Web Extensions

Browser Architecture

Developer Tools

  • Debugger
    • Landed in Fx70: Variables and Scopes now remain expanded while stepping (see bug 1405402).
    • In progress: working on a new DOM mutations breakpoint panel that will be shared in the debugger and the inspector.
  • Console
    • The new Console Editor is progressing nicely: it now has a close button (see bug 1567370), can be resized as you would expect (see bug 1554877), will soon have history navigation buttons (see bug 1558198).
    • The entire console layout now uses CSS grid and subgrids (see bug 1565962) and it’s awesome.
      • The Web Console showing a split pane between an editor and the output. A simple Hello World block of JavaScript is being executed in the console.

        Using modern web technologies to build our own tools feels great!

  • Layout tools
  • Remote debugging
    • As of Fx 70 about:debugging is now the truly official way to connect to remote targets. The old “Connect” page as well as WebIDE have been removed. See this bug and this bug.

Fission

Lint

New Tab Page

  • Working towards launching remote layouts (aka DiscoveryStream) in Firefox 69.

Password Manager

Performance

Picture-in-Picture

Privacy/Security

  • Carolina and Danielle have been hard at work adding a new certificate viewer at about:certificate. Once bug 1567561 lands you can flip security.aboutcertificate.enabled and inspect certificates in a tab.
    • Please note that it’s very much work-in-progress right now, don’t expect things to work.
    • We’ll do another announcement when things are ready for testing.
  • Paul is churning through tricky evil traps bugs, such as Bug 1522120 – Exit fullscreen when a permission prompt is shown to the user
  • Paul also improved our indicators for geolocation usage to include an in-use indicator and show when geolocation was last accessed by the site
    • The Permissions section of the Identity Panel in Firefox showing that the Geolocation API was granted access to your location 5 seconds ago.

      This user gave the site permission to know their location, and it was accessed 5 seconds ago. If the user changes their mind, they can easily revoke that access.

  • We successfully completed the no-eval-in-system-principal project!
    • Thank you very much to everyone who helped out

Search and Navigation

Search
Quantum Bar

User Journey

  • Progress on What’s New Panel (see meta bug) targeted for 70
  • Improvements to the First Run onboarding experience, new targeting/triggers for the What’s new Page, and new Firefox Monitor snippet planned for 69 as the result of a recent work week
  • Some new potential CFRs (Contextual Feature Recommendations) planned for sync, Firefox Send, Send Tab to Device, and Lockwise
    • Some mockups showing how there are plans to promote Firefox Sync, Send, Send Tab to Device, and Lockwise via the Contextual Feature Recommender.
04 Aug 15:11

The Incremental Machine

Let's try and work our way through the oldest problem in computer science, or close to it: cache invalidation and naming things. Starting with the fact that we misnamed it.

In my view, referring to it as "cache invalidation" is somewhat like referring to crime prevention as "death minimization." While the absense of preventable death is indeed a desirable aspect of quality policing, it would suggest a worrying lack of both concern and ambition if that were the extent of a police force's mission statement.

So too should you run away, not walk, from anyone who treats some stale data and a necessary hard-refresh as a minor but unavoidable inconvenience. You see, this person is telling you that expecting to trust your eyes is too much to ask for when it comes to computers. I don't mean correctness or truth value, no, I just mean being able to see what is there so you can make sense of it, right or wrong. They expect you to sanity check every piece of information you might find, and be ready to Shift-Refresh or Alt-F4 if you suspect a glitch in the matrix. It should be pretty obvious this seriously harms the utility of such an environment, for work or pleasure. Every document becomes a potential sticky indicator gauge, requiring you to give it a good whack to make sure it's unstuck.

This should also puzzle you. A discipline whose entire job it is to turn pieces of data into other pieces of data, using precise instructions, is unable to figure out when its own results are no longer valid? This despite having the complete paper trail at our disposal for how each result is produced, in machine readable form.

Why hasn't this been solved by tooling already? We love tools, right? Is it possible? Is it feasible? Which parts?

Adders in the Grass

I'm going to start at the bottom (or at least a bottom) and work my way up and you'll see why. Let's start with a trivial case of a side-effect-free function, integer addition, and anally dissect it:

(a, b) => a + b

The result changes when either a or b do. However, there is a special case: if a and b each change in opposite amounts, the output is unchanged. Here we have a little microcosm of larger issues.

First, it would be perfectly possible to cache this result, and to check whether a or b have changed since the last time. But just computing the sum is faster than two comparisons. You also need permanent extra storage for at least one extra a and b each, and much more if you want a multi-valued cache rather than just a safety valve. Then you need a pruning policy too to keep it from growing.

Second, if you wish to know whether and how the output will actually change, then you must double check. You have to diff the old and the new values, track the resulting deltas through the same computation as the original. So you can compare to the previous result. The requirement that a + b != (a + Δa) + (b + Δb) can then be reduced to Δa != -Δb. Though this is still more actual work.

Addition operator

If this were multiplication instead of a sum, then:

(a, b) => a * b
a * b != (a + Δa) * (b + Δb)

which reduces to:

Δa * b  +  Δb * a  +  Δa * Δb != 0

Here there is a non-linear relationship which involves both values and deltas together. The first two terms depend on one delta and value each, but the last term only kicks in if both inputs change at the same time. This shows how deltas can interfere both constructively and destructively, either triggering or defusing other effects on other inputs. It also implies there are no easy shortcuts to be found in delta-land, because there are many more ways for values and deltas to combine, than just values by themselves.

Multiply operator Multiply operator deltas

In fact you already knew this. Because if you could provide a concise summary of the delta-behavior of a certain class of functions, you'd break a good chunk of the internet and win a few awards:

m => SHA256(m)

The deltas in a hash function don't just get cozy, they have an all-out orgy of computation, the kind they invented 55 gallon drums of lube for.

This is also your first hint of an answer as to y u no tools. What looks well-behaved and cacheable at a small scale may in fact be part of a larger, unpredictable algorithm, which is why trying to automate caching everywhere is generally a non-starter. That is, it is perfectly possible to imagine a sort of God's eye view of a fully incremental piece of code at the opcode level, and to watch as a change in inputs begins the siege of a thousand memoized gates. But it wouldn't be useful because it's far too granular.

This also means caching is not a computer science problem, it is a computer engineering problem. We are fighting against entropy, against the computational chaos we ourselves create. It is not a science, it is damage control.

4-bit adder

On the other hand, we should not give up, because neither + or * are elementary operations in reality. They are abstractions realized as digital circuits. Given a diagram of a binary adder, we could trace the data flow from each input bit, following the potential effects of each delta. But if you know your arithmetic you already know each bit in a sum can only affect itself and the ones to its left.

What's interesting though is that this complicated dance can be entirely ignored, because it serves to realize an abstraction, that of integers. Given integers, we can reason about changes at a different level. By looking at the level of arithmetic, we were able to discover that two specific patterns of matching differences, Δa == -Δb, cancel out, regardless of the specific value of a and b.

In this case, that only gave us counterproductive "optimizations", but that's because we aren't looking at the right level of abstraction yet. The point is abstraction boundaries don't necessarily have to be black boxes like the hash function, they can also be force fields that allow you to contain deltas, or at least, transmute them into more well-behaved ones. So let's climb up, like Bret wants us to.

I Spy With My Little API

For instance, if we look at the maximum operator applied to an entire list of numbers, again a pure function:

xs => xs.reduce(max, -Infinity)

A simple reduce creates a linear dependency between successive elements, with every delta potentially affecting all max() calls after it. However, the output changes more predictably.

If all elements are unique, the result will only change if a new value x + Δx exceeds the previous result (increasing it), or if an old value x was equal to the previous result and its Δx < 0 (decreasing it). Note we don't need to remember which element index it actually was, and we don't need to care about the elements that didn't change either (at least to merely detect a change).

Max operator deltas

If there are duplicates, things are a bit more complicated. Now there is a multi-delta-term Δa * Δb * ... between each set, which won't trigger unless all of them decrease at the same time. Writing out the full delta equation for the max of a list is more fun than I can handle, but you get the idea, and actually, it doesn't really matter much. If we pretend all elements are unique regardless, we simply trigger the occasional false positive (change falsely detected), but crucially no false negatives (change falsely ignored).

Either way, the sequential nature of the computation is no longer relevant at this level, because max() is associative (and commutative too), and reduce is a higher-order function whose deltas cancel out in convenient ways when you give it that sort of operator.

map reduce

Which means we're almost there. Actually dissecting the max operator was still too tedious, too special-cased. But it gives us hints of what to look for.

One such winning combo is Map-Reduce, using the same properties. By mapping each element in isolation, the effects of any change in any input is initially contained, in a way that is independent of the position of an element in a collection. Second, by using an associative reduction operator, this reduction can be done incrementally, as a tree instead of as a flat list. You reduce the list in chunks, and then re-reduce the list of reductions, recursively until you get one result. When some of the items in the list change, only a few chunks are affected, and the overall recomputation along the tree is minimized. The price you pay is to retain all the intermediate reductions in the tree each time.

Map-Reduce is a universal incremental evaluation strategy, which can schedule and execute any pure function of the individual inputs, provided you reduce the result in an algebraically closed fashion. So that exists. Any others?

Well, many sequential/batch processes are universally incrementalizable too. Take for example a lexer, which processes a stream of text and produces tokens. In this case, the input cannot be chunked, it must be traversed start-to-end.

lexer

The lexer tracks its syntax in an internal state machine, while consuming one or more characters to produce zero or more tokens.

Conveniently, the lexer tells you everything you need to know through its behavior in consuming and producing. Roughly speaking, as long as you remember the tuple (lexer state, input position, output position) at every step, you can resume lexing at any point, reusing partial output for partially unchanged input. You can also know when to stop re-lexing, namely when the inputs match again and the internal state does too, because the lexer has no other dependencies.

Lining up the two is left as an exercise for the reader, but there's a whole thesis if you like. With some minor separation of concerns, the same lexer can be used in batch or incremental mode. They also talk about Self-Versioned Documents and manage to apply the same trick to incremental parse trees, where the dependency inference is a bit trickier, but fundamentally still the same principle.

What's cool here is that while a lexer is still a pure function in terms of its state and its input, there crucially is inversion of control: it decides to call getNextCharacter() and emitToken(...) itself, whenever it wants, and the incremental mechanism is subservient to it on the small scale. Which is another clue, imo. It seems that pure functional programming is in fact neither necessary nor sufficient for successful incrementalism. That's just a very convenient straightjacket in which it's hard to hurt yourself. Rather you need the application of consistent evaluation strategies. Blind incrementalization is exceedingly difficult, because you don't know anything actionable about what a piece of code does with its data a priori, especially when you're trying to remain ignorant of its specific ruleset and state.

As an aside, the resumable-sequential approach also works for map-reduce, where instead of chunking your inputs, you reduce them in-order, but keep track of reduction state at every index. It only makes sense if your reducer is likely to reconverge on the same result despite changes though. It also works for resumable flatmapping of a list (that is, .map(...).flatten()), where you write out a new contiguous array on every change, but copy over any unchanged sections from the last one.

Each is a good example of how you can separate logistics from policy, by reducing the scope and/or providing inversion of control. The effect is not unlike building a personal assistant for your code, who can take notes and fix stuff while you go about your business.

Don't Blink

This has all been about caching, and yet we haven't actually seen a true cache invalidation problem. You see, a cache invalidation problem is when you have a problem knowing when to invalidate a cache. In all the above, this is not a problem. With a pure function, you simply compare the inputs, which are literal values or immutable pointers. The program running the lexer also knows exactly which part of the output is in question, it's everything after the edit, same for the flatmap. There was never a time when a cache became invalid without us having everything right there to trivially verify and refresh it with.

No, these are cache conservation problems. We were actually trying to reduce unnecessary misses in an environment where the baseline default is an easily achievable zero false hits. We tinkered with that at our own expense, hoping to squeeze out some performance.

There is one bit of major handwavium in there: a != b in the real world. When a and b are composite and enormous, i.e. mutable like your mom, or for extra points, async, making that determination gets somewhat trickier. Async means a gap of a client/server nature and you know what that means.

Implied in the statement (a, b) => 🦆 is the fact that you have an a and a b in your hands and we're having duck tonight. If instead you have the name of a store where you can buy some a, or the promise of b to come, then now your computation is bringing a busload of extra deltas to dinner, and btw they'll be late. If a and b have large dependent computations hanging off them, it's your job to take this additional cloud of uncertainty and somehow divine it into a precise, granular determination of what to keep and what to toss out, now, not later.

1) You don't have an image, you have the URL of an image, and now you need to decide whether the URL will resolve to the same binary blob that's in your local cache. Do they still represent the same piece of data? The cache invalidation problem is that you weren't notified when the source of truth changed. Instead you have to make the call based on the metadata you originally got with the data and hope for the best.

Obviously it's not possible for every browser to maintain long-lived subscriptions to every meme and tiddy it downloaded. But we can brainstorm. The problem is that you took a question that has a mutable answer but you asked it to be immutable. The right answer is "here's the local cache and some refreshments while you wait, ... ah, there's a newer version, here". Protocol. Maybe a short-lived subscription inside the program itself, from the part that wants to show things, subscribing to the part that knows what's in them, until the latter is 100% sure. You just have to make sure the part that wants to show things is re-entrant.

2) You want to turn your scene graph into a flattened list of drawing commands, but the scene graph is fighting back. The matrices are cursed, they change when you blink, like the statues from Doctor Who. Because you don't want to remove the curse, you ask everyone to write IS DIRTY in chalk on the side of any box they touch, and you clean the marks back off 60 times per second when you iterate over the entire tree and put everything in order.

I joke, but what's actually going on here is subtle enough to be worth teasing apart. The reason you use dirty flags on mutable scene graphs has nothing to do with not knowing when the data changes. You know exactly when the data changes, it's when you set the dirty flag to true. So what gives?

The reason is that when children depend on their parents, changes cascade down. If you react to a change on a node by immediately updating all its children, this means that further updates of those children will trigger redundant refreshes. It's better to wait and gather all the changes, and then apply and refresh from the top down. Mutable or immutable matrix actually has nothing to do with it, it's just that in the latter case, the dirty flag is implicit on the matrix itself, and likely on each scene node too.

Push vs pull is also not really a useful distinction, because in order to cleanly pull from the outputs of a partially dirty graph, you have to cascade towards the inputs, and then return (i.e. push) the results back towards the end. The main question is whether you have the necessary information to avoid redundant recomputation in either direction and can manage to hold onto it for the duration.

The dirty flag is really a deferred and debounced line of code. It is read and cleared at the same time in the same way every frame, within the parent/child context of the node that it is set on. It's not data, it's a covert pre-agreed channel for a static continuation. That is to say, you are signaling the janitor who comes by 60 times a second to please clean up after you.

What's interesting about this is that there is nothing particularly unique about scene graphs here. Trees are ubiquitous, as are parent/child dependencies in both directions (inheritance and aggregation). If we reimagine this into its most generic form, then it might be a tree on which dependent changes can be applied in deferred/transactional form, whose derived triggers are re-ordered by dependency, and which are deduplicated or merged to eliminate any redundant refreshes before calling them.

In Case It Wasn't Obvious

So yes, exactly like the way the React runtime can gather multiple setState() calls and re-render affected subtrees. And exactly like how you can pass a reducer function instead of a new state value to it, i.e. a deferred update to be executed at a more opportune and coordinated time.

In fact, remember how in order to properly cache things you have to keep a copy of the old input around, so you can compare it to the new? That's what props and state are, they are the a and the b of a React component.

Δcomponent = Δ(props * state)
           = Δprops * state + Δstate * props + Δprops * Δstate

           = Props changed, state the same (parent changed)
           + State changed, props the same (self/child changed)
           + Props and state both changed  (parent's props/state change
               triggered a child's props/state change)

The third term is rare though, and the React team has been trying to deprecate it for years now.

I prefer to call Components a re-entrant function call in an incremental deferred data flow. I'm going to recap React 101 quickly, because there is a thing that hooks do that needs to be pointed out.

The way you use React nowadays is, you render some component to some native context like an HTML document:

ReactDOM.render(<Component />, context);

The <Component /> in question is just syntactic sugar for a regular function:

let Component = (props) => {
  // Allocate some state and a setter for it
  let [state, setState] = useState(initialValue);

  // Render a child component
  return <OtherComponent foo={props.bar} onChange={e => setState(...)}/>;
  // aka
  return React.createElement(OtherComponent, {foo: props.bar, onChange: e => setState(...)}, null);
};

This function gets called because we passed a <Component /> to React.render(). That's the inversion of control again. In good components, props and state will both be some immutable data. props is feedforward from parents, state is feedback from ourselves and our children, i.e. respectively the exterior input and the interior state.

If we call setState(...), we cause the Component() function to be run again with the same exterior input as before, but with the new interior state available.

The effect of returning <OtherComponent .. /> is to schedule a deferred call to OtherComponent(...). It will get called shortly after. It too can have the same pattern of allocating state and triggering self-refreshes. It can also trigger a refresh of its parent, through the onChange handler we gave it. As the HTML-like syntax suggests, you can also nest these <Elements>, passing a tree of deferred children to a child. Eventually this process stops when components have all been called and expanded into native elements like <div /> instead of React elements.

Either way, we know that OtherComponent(...) will not get called unless we have had a chance to respond to changes first. However if the changes don't concern us, we don't need to be rerun, because the exact same rendered output would be generated, as none of our props or state changed.

This incidentally also provides the answer to the question you may not have realized you had: if everything is eventually a function of some Ur-input at the very start, why would anything ever need to be resumed from the middle? Answer: because some of your components want to semi-declaratively self-modify. The outside world shouldn't care. If we do look inside, you are sometimes treated to topping-from-the-bottom, as a render function is passed down to other components, subverting the inversion of control ad-hoc by extending it inward.

So what is it, exactly, that useState() does then that makes these side-effectful functions work? Well it's a just-in-time allocation of persistent storage for a temporary stack frame. That's a mouthful. What I mean is, forget React.

Think of Component as just a function in an execution flow, whose arguments are placed on the stack when called. This stack frame is temporary, created on a call and destroyed as soon as you return. However, this particular invocation of Component is not equally ephemeral, because it represents a specific component that was mounted by React in a particular place in the tree. It has a persistent lifetime for as long as its parent decides to render/call it.

So useState lets it anonymously allocate some permanent memory, keyed off its completely ephemeral, unnamed, unreified execution context. This only works because React is always the one who calls these magic reentrant functions. As long as this is true, multiple re-runs of the same code will retain the same local state in each stack frame, provided the code paths did not diverge. If they did, it's just as if you ran those parts from scratch.

What's also interesting is that hooks were first created to reduce the overuse of <Component /> nesting as a universal hammer for the nail of code composition, because much of the components had nothing to do with UI directly. In fact, it may be that UI just provided us with convenient boundaries around things in the form of widgets, which suggestively taught us how to incrementalize them.

This to me signals that React.render() is somewhat misnamed, but its only mistake is a lack of ambition. It should perhaps be React.apply() or React.incremental(). It's a way of calling a deferred piece of code so that it can be re-applied later with different inputs, including from the inside. It computes minimum updates down a dependency tree of other deferred pieces of code with the same power.

Right now it's still kind of optimized for handling UI trees, but the general strategy is so successful that variants incorporating other reconciliation topologies will probably work too. Sure, code doesn't look like React UI components, it's a DAG, but we all write code in a sequential form, explicitly ordering statements even when there is no explicit dependency between them, using variable names as the glue.

The incremental strategy that React uses includes something like the resumable-sequential flatmap algorithm, that's what the key attribute for array elements is for, but instead of .map(...).flatten() it's more like an incremental version of let render = (el, props) => recurse(el.render(props)) where recurse is actually a job scheduler.

The tech under the hood that makes this work is the React reconciler. It provides you with the illusion of a persistent, nicely nested stack of props and state, even though it never runs more than small parts of it at a time after the initial render. It even provides a solution for that old bugbear: resource allocation, in the form of the useEffect() hook. It acts like a constructor/destructor pair for one of these persistent stack frames. You initialize any way you like, and you return to React the matching destructor as a closure on the spot, which will be called when you're unmounted. You can also pass along dependencies so it'll be un/remounted when certain props like, I dunno, a texture size and every associated resource descriptor binding need to change.

There's even a neat trick you can do where you use one reconciler as a useEffect() inside another, bridging from one target context (e.g. HTML) into a different one that lives inside (e.g. WebGL). The transition from one to the other is then little more than a footnote in the resulting component tree, despite the fact that execution- and implementation-wise, there is a complete disconnect as only fragments of code are being re-executed sparsely left and right.

You can make it sing with judicious use of the useMemo and useCallback hooks, two necessary evils whose main purpose is to let you manually pass in a list of dependencies and save yourself the trouble of doing an equality check. When you want to go mutable, it's also easy to box in a changing value in an unchanging useRef once it's cascaded as much as it's going to. What do you eventually <expand> to? Forget DOMs, why not emit a view tree of render props, i.e. deferred function calls, interfacing natively with whatever you wanted to talk to in the first place, providing the benefits of incremental evaluation while retaining full control.

It's not a huge leap from here to being able to tag any closure as re-entrant and incremental, letting a compiler or runtime handle the busywork, and forget this was ever meant to beat an aging DOM into submission. Maybe that was just the montage where the protagonist trains martial arts in the mountain-top retreat. Know just how cheap O(1) equality checks can be, and how affordable incremental convenience for all but the hottest paths. However, no tool is going to reorganize your data and your code for you, so putting the boundaries in the right place is still up to you.

I have a hunch we could fix a good chunk of GPU programming on the ground with this stuff. Open up composability without manual bureaucracy. You know, like React VR, except with LISP instead of tears when you look inside. Unless you prefer being a sub to Vulkan's dom forever?

Previous: APIs are about Policy
Next: Model-View-Catharsis

04 Aug 14:59

NewsBlur Blurblog: Being basic as a virtue

sillygwailo shared this story from Nadia Eghbal.

Silicon Valley is a coal mine for ideas. There’s something special about it: unlike a coal miner, you get to keep and sell what you extract from the ore deposits, and I feel lucky to have the setup that I do. But it is work.

When most people think about doing creative work for a living, they picture all the fun stuff that comes with it: the flash of inspiration in the shower, the scribbling of notes in the middle of the night. But when you’re working in a system that thrives on the extracting and refining and trading and transacting of ideas, the daily practice of toiling in the mines can feel more mundane than serendipitous.

Lately I’ve been feeling sort of exhausted by the familiar dance of idea propagation that manifests over coffees, dinners, Twitter, and parties in my corner of the world. Asking a stranger what they’ve been reading or thinking about lately feels like the new equivalent of asking someone where they work. Our words are filled with whimsy – after all, isn’t learning so much fun?! Don’t you just love to think?! – but our faces are smeared with coal dust, our eyes somewhat dulled by the knowledge that we’ve done this many times before, and are about to do it many more times tomorrow.

To live a life in which one purely subsists on the airy cream puffs of ideas seems enviably privileged: the ability to make a living merely off of one’s thoughts, rather than manual or skilled labor. But it also means all that bantering and reading and thinking and writing isn’t really about “having fun” anymore, so much as singing for one’s supper. We’re like Scarlett O’Hara in Gone With the Wind: our gowns are impressively fashioned from velvet curtains, but our hands are still rough from the farm. [1]

Being basic as a coping mechanism

A friend recently showed me a book called Closure, a collection of writings by pseudonymous ex-programmer why the lucky stiff. Among his many other contributions, _why wrote this thing called Why’s (Poignant) Guide to Ruby back in the day, which was incidentally how I learned to program. In 2009, he unexpectedly went offline, taking all his public work with him.

That was the last I’d remembered of _why. Apparently though, in 2013, _why’s website quietly popped back online and spat out a bunch of network printer commands, which some people figured out how to turn into pages. These pages formed what was eventually compiled by Steve Klabnik into a book called Closure; it was thought to be _why’s final goodbye.

Sometimes I think about committing information suicide. Everyone’s got an escapist fantasy: mine is disappearing to Montana, or perhaps the Palm Springs desert, and living a quiet life working in a little shop, or as a florist (I like thinking in textures). A late friend and gifted programmer once told me his most creative days were spent working in a bookstore. The work wasn’t challenging, but it was meditative, and it gave him space to let his mind wander.

In my typical iterations of this fantasy, though, it’s mostly about getting away from San Francisco, but continuing to write and share things online. Sometimes it feels like I can’t think in here, because people are constantly asking me to externalize my thoughts all the time. [2] I’m not ready to externalize everything I think about. Sometimes it takes years for me to articulate what I’m trying to say. (It took me several months to figure out how to write this post, for example.)

While I think my writing has gotten sharper over the years, I also can’t help but feel it’s gotten worse somehow: invoking the things I hear other people say, instead of the things I happened across in dreams, hazy days that slip away at the park, or reading some dumb fiction I found from a free box that I picked up on the side of the road. I’m not sure it’s that I want to disappear from the internet, but just to get some distance between me and the existential “publish or perish” treadmill of mining each others’ brains for pithy insights that fit into 280 characters.

But I know myself, and I’m probably not going to leave San Francisco anytime soon. My whole life is here. And despite what everyone says about this city, despite even what I appear to be saying about this city…I actually like it here. And I like engaging with ideas, too. I’ve just come to see it more as work than leisure. So instead, my coping mechanism has been to aggressively seek the anti-intellectual: to embrace the basic in my life.

From Closure:

That night, my discussion with Amanda came back to me. How previously I had criticized the kinds of small talk discussions, particularly discussions about music, because they revolved simply around “Did you like this? Have you heard of this?” and how they never went anywhere beyond that, you could never keep track of what you were recommended and there was never anything to talk about, maybe a scene, maybe a lyric. Those pointless discussions that had always left me empty, never able to talk about the beauty of music itself adequately, just the names and the styles.

But now I longed to have this kind of idle discussion. To talk to Amanda about “The Happening”. Maybe there was much more to this kind of talk than I had thought. Why would anyone want to have a deep, meaningful discussion all the time?

Being basic as high-status

If I were to pray to a counter-counterculture pantheon, it might contain the gods of Basic, Mediocre, and Degenerate: [3]

  • Being basic is fist-bumping your neighbor at Barry’s Bootcamp for motivation before you both double the incline on your treadmill. It’s a resistance to intellectualism; a cheery, optimistic belief that the world is really as simple as we want it to be.
  • Being mediocre is turning down the combat difficulty on Red Dead so you can play through the game. It’s a resistance to hyper-optimization; the “courage to be ordinary”.
  • Being degenerate is watching Spongebob Allahu Akbar videos on YouTube and betting $5K that your friend can eat a five-pound gummy bear in one sitting. It’s a resistance to moral authority; you know most people find your behavior disgusting, and you love it.

Being basic is part of the same family as being mediocre or degenerate, but I think the latter two still require some degree of self-awareness. Mediocrity is about making an active choice to say “screw it, good enough”: the decision to keep moving forward instead of trying to get that last 10%. Degeneracy carries a flavor of bird-flipping showmanship: you know what other people would think, and that’s exactly why it’s fun.

By contrast, to be basic is to deny awareness of the deeper workings of the world whatsoever. Being basic is a state of innocence and simplicity, Adam and Eve before the apple. It usually provokes pity or derision from those who do know better, which is why I find it appealing. Being basic signals that I’ve shut my brain off. It’s not quite like committing information suicide, but maybe it’s like giving myself an information lobotomy.

At first, I rationalized doing basic (and while I’m at it, degenerate) things as a form of active mental recovery. As one friend phrased it, it’s cross-training your brain to balance out the hypertrophy elsewhere.

Lately though, as I’ve come to realize that working the idea mines is more endemic than personal, I’ve wondered (or perhaps, vainly begun to wish) whether being basic might become a status symbol in itself, similarly to how being tan evolved from signaling a life of manual labor to signaling a life of leisure. When most people had to work outside for a living, being tan was undesirable. As their work moved indoors, the signals reversed: a pale complexion became associated with having to do work, while a tan suggested freedom to frolick in the sun all day.

Similarly, if producing ideas becomes a symbol of work (having to think about stuff all day), rather than leisure (freedom to think about stuff all day), I wonder whether basic behavior will start to become covetable. Instead of signaling how much we’re thinking, maybe we’ll start to signal how much we’re not thinking. Rather than a private coping mechanism or a way to unwind, basic behavior would become a way to display total unawareness of those who toil in the idea mines all day; a blissful unfamiliarity with the social signal factory.

If the god of mediocre is a sloth, and the god of degenerate is a trash panda, the goddess of basic is an ingénue. When I’m drinking mango White Claw and laughing in the dappled sunshine, I’m projecting a version of myself to the world that says, “I haven’t had to think a day in my life”.

Notes

[1] Don’t get me wrong, I still love the work that I do. Maybe this is how programmers feel when they tinker around with code on the weekend, versus writing code for work during the week. Both can be enjoyable, but they’re two very different ways of experiencing the same activity.

[2] I’m not really sure what I mean by “here”. San Francisco? Twitter? Some other state of mine mind?

[3] The irony has not been lost on me that I’ve written a blog post about thinking less.

04 Aug 14:57

.NET

by Rui Carmo

The .NET framework is Microsoft‘s take on Java - a single VM for multiple plaftorms (essentially multiple versions of Windows, until Mono came along) that can be targeted by several different language environments.

Damn impressive piece of engineering, and slightly better (architecturally) than Java.

Resources


04 Aug 14:55

Rituals of Childhood

by Kieran Healy

Back in April, in Ireland, my nephew Luke made his first communion alongside his school classmates. I did much the same thing myself in much the same place about forty years ago. My brother tells me that the preparation nowadays is a little more humane than the version we enjoyed. But there is as much anticipation beforehand, and no less excitement on the day. Luke’s little suit lacked the stylish navy-blue velvet panels mine sported in 1980, but in essence the event was the same in its purpose, its form, and in most of its details. A first communion inducts a child into one of the sacraments of the Church, having them take a step towards adulthood in expectation of the regular re-enactment of the event throughout the rest of their lives.

Sociologists like me often highlight these rituals of childhood in our writing and teaching. One of the founders of our field, Émile Durkheim, made them the centerpiece of his work. Institutions, he argued, are rituals that bind people to one another as a group. In a ritual, each person finds their place and does their part, and expects everyone else to do the same. Crucially, those involved all see one another participating in the event. By doing so, they enact their collective life in view of one another, demonstrating its reality, expressing its meaning, and feeling its pulse in their veins. That, Durkheim thought, is at root what a society is.

In any given week in America, you can watch as a different ritual of childhood plays itself out. Perhaps it will be in El Paso, at a shopping mall; or in Gilroy, at a food festival; or in Denver, at a school. Having heard gunshots, and been lucky enough to survive, children emerge to be shepherded to safety by their parents, their teachers, or heavily-armed police officers. They are always frightened. Some will be crying. But almost all of them know what is happening to them, and what to do. Mass shootings are by now a standard part of American life. Preparing for them has become a ritual of childhood. It’s as American as Monday Night Football, and very nearly as frequent.

The United States has institutionalized the mass shooting in a way that Durkheim would immediately recognize. As I discovered to my shock when my own children started school in North Carolina some years ago, preparation for a shooting is a part of our children’s lives as soon as they enter kindergarten. The ritual of a Killing Day is known to all adults. It is taught to children first in outline only, and then gradually in more detail as they get older. The lockdown drill is its Mass. The language of “Active shooters”, “Safe corners”, and “Shelter in place” is its liturgy. “Run, Hide, Fight” is its creed. Security consultants and credential-dispensing experts are its clergy. My son and daughter have been institutionally readied to be shot dead as surely as I, at their age, was readied by my school to receive my first communion. They practice their movements. They are taught how to hold themselves; who to defer to; what to say to their parents; how to hold their hands. The only real difference is that there is a lottery for participation. Most will only prepare. But each week, a chosen few will fully consummate the process, and be killed.

A fundamental lesson of Sociology is that, in the course of making everyday life seem orderly and sensible, arbitrary things are made to seem natural and inevitable. Rituals, especially the rituals of childhood, are a powerful way to naturalize arbitrary things. As a child in Ireland, I thought it natural to take the very body of Christ in the form of a wafer of bread on my tongue. My own boy and girl, in America, think it natural that a school is a place where you must know what to do when someone comes there to kill the children.

Social science also teaches us something about how rituals end, although not enough. The most important step is to kindle a belief that there are other ways to live, other forms that collective life can take. That can be surprisingly hard to do, because a side-effect of ritual life is that participation in it powerfully reinforces its seeming inescapability, even when people are uncertain or disbelieving of the sense or meaning of what is happening. That is why change, when it comes, often comes suddenly and unexpectedly, as people finally acknowledge not just privately in ones and twos but publicly to one another that what they have been doing amounts to an empty parody that no-one really believes. A further difficulty is that this sort of sudden, collective collapse is in many ways the good outcome. A worse one is when solidarity is replaced with its bitter sibling, schism. Instead of competition or conflict within some framework that opponents are nevertheless bound to, real schism yields much of the febrile, effervescent energy of collective solidarity, but delivers few of its stabilizing benefits.

It’s traditional to say that there are “no easy answers”, but this is not really true. Everywhere groups face the problem of holding themselves together. Every society has its enormous complex of institutions and weight of rituals that, through the sheer force of mutual expectation and daily habit, bring that society to life. But not every society has successfully institutionalized the mass shooting. Only one place has done that, deliberately and effectively. The United States has chosen, and continues to choose, to enact ritual compliance to an ideal of freedom in a way that results in a steady flow of blood sacrifice. This ritual of childhood is not a betrayal of “who we are” as a country. It is what America has made of itself, how it worships itself, and how it makes itself real.

02 Aug 17:49

"The uninstructed eye sees things the expert does not notice."

“The uninstructed eye sees things the expert does not notice.” - John Steinbeck
02 Aug 17:49

"Poetry still falls from the skies."

“Poetry still falls from the skies.” - Yumi Lee
02 Aug 15:20

Apple suspends Siri response grading

by Volker Weber
In response to concerns raised by a Guardian story last week over how recordings of Siri queries are used for quality control, Apple is suspending the program world wide. Apple says it will review the process that it uses, called grading, to determine whether Siri is hearing queries correctly, or being invoked by mistake.

In addition, it will be issuing a software update in the future that will let Siri users choose whether they participate in the grading process or not.

I am less concerned about grading and more about storing. But it's encouraging that we start having a discussion about this matter.

Apple needs to set "allowSiriServerLogging" to false by default and let users opt in, without any dark pattern. Also, give users an opportunity to grade Siri by themselves, on device.

More >

02 Aug 15:19

Vancouver commutes just got more expensive with price hikes and tax increases - CBC.ca

02 Aug 15:11

Pixel phones will soon talk to 911 operators in place of their owners in the U.S.

by Igor Bonifacic
Android O

Google is adding a new feature to Android’s Phone app that will allow an automated voice service to speak to emergency call centres on behalf of users, the search giant announced on Thursday.

The idea here is that the service can secure emergency support in situations in which individuals can’t verbally communicate, they’re injured or they possess a speech impediment.

In those situations, the feature will relay whether someone needs medical, fire or police support, as well as their current location and plus code — the latter of which is designed to help emergency services pinpoint the person’s current location.

According to Google, this new functionality works entirely on-device, which is to say the search giant doesn’t get access to location data. Moreover, the feature will work whether individuals have access to a data connection or not.

To start, Google says it will roll out this feature to Pixel phones and other select Android smartphones in the U.S. “over the coming months.” No word yet whether the company plans to introduce this feature in other markets, including Canada.

Source: Google

The post Pixel phones will soon talk to 911 operators in place of their owners in the U.S. appeared first on MobileSyrup.

02 Aug 15:10

"I'm looking at reducing my footprint from transportation, can you connect me with someone who can advise me?"

by peter@rukavina.net (Peter Rukavina)

I am planning a trip to New Hampshire in September and I want to travel with the lowest carbon emissions possible.

According to the our Climate Change Action Plan:

Transportation accounts for almost half of our GHG emissions. Many of these emissions come from passenger vehicles, such as cars, trucks, and SUVs. Transport trucks, airplanes, boats, and recreational vehicles also produce emissions.

Given that Efficiency PEI, is the provincial agency that “offers programs and information for Islanders who are interested in reducing energy consumption,” they were my first call.

“I’m looking at reducing my footprint from transportation, can you connect me with someone who can advise me?”

“Oh, we’ve never had that question before…”

That’s not a good sign, on two fronts. Why aren’t people calling for advice? And why isn’t the agency charged with informing us about reducing our energy consumption concerned with reducing our most GHG-contributing energy consumption?

Efficiency PEI wasn’t able to help me, and so transferred me to the main number for the Department of Transportation, Infrastructure and Energy.

They too weren’t able to help me directly, and so transferred me to the PEI Energy Corporation.

It appeared they might be able to help me, but that “the woman who knows all about that is out this week.”

This woman turned out to be Heather MacLeod, someone I’ve known for a long time, in various capacities; Heather came to the monthly meeting of the PEI Electric Vehicle Association last week and she is, indeed, on the ball.

I’m sure that when Heather returns to the office next week she’ll be able to give me some advice.

But, boy oh boy, do we need to get better at the front-facing advice-giving part of carbon emissions reduction. A call like mine, to Efficiency PEI, should have been greeted warmly and with enthusiasm I was at their front door, ready for action. But all they could do was transfer my call with the hopes that someone else could help.

With our new climate target of a 600,000 tonne reduction in yearly emissions by 2030, I’ve got 11 years to knock 4 tonnes off my personal contribution.

I need help. And I need help helping others.

We can do better than this.