Shared posts

04 Jul 22:56

Fake Is Easy, Back Up Your Words With Hyperlinks

by Ton Zijlstra

Do y’all understand how easy it is to make a fake tweet from a screenshot? Like by inspecting the browser and changing the text? …. I don’t trust posts I can’t search up on archives. And if you do have a link, archive it (not in an image but using an reputable archiving service).

Jacky Alciné’s words are true, so I thought I’d illustrate.

The general principle here is: if you make a statement about someone or something other than yourself or your personal opinions, you need to back it up with a link to supporting material. “X said on Twitter” needs to be linked to that tweet. Leaving googling for your source as an exercise to your readers isn’t just merely convenient to you, it is actively destructive of the web. The web is links, and they’re a key piece of information for your readers to judge if what you tweeted/said/blogged might be signal or noise. No links means it’s likely noise and it will degrade your standing as a source of signals. No links is aiding and abetting the bots, trolls and fakesters, as it allows them to hide in more noise.

Adding a screen-shot as Jacky Alciné says is not enough ‘proof’, as they can easily be altered directly in your browser. An example:

Yesterday I posted my first Tweet from my recent brain implant. It was awesome! So awesome in fact, I made a screenshot of it to preserve the moment for posterity.

In reality I posted from Indigenous (see there’s a link there!), a mobile app that provides my phone with IndieWeb reading and publishing capabilities, which I syndicated to my Twitter account (see there’s another link!). Also awesome, but much less awesome than blogging from a brain implant.

The difference between those two screenshots, getting from true to fake, is that I altered the text of the Twitter website in my browser. Every browser allows you to see a website you visit in ‘developer’ mode. It is helpful to e.g. play around with colors, to see what might work better for your site. But you can also use it to alter content. It’s all the same to your browser. See this screenshot, where I am in the process of changing ‘Indigenous’ into ‘brain implant’

But, you say, tweets might have been deleted and grabbing a screenshot is a good way of making sure I still have some proof if a tweet does get deleted. That’s true, tweets and other content do get deleted. Like self-congratulatory tweets/VK/FB messages about the downing of MH17 by separatist supporting accounts, before it became clear a regular line flight was shot out of the air, and those accounts were quickly scrubbed (See Bellingcat‘s overview). Having a screenshot is useful, but isn’t enough. If only for the reason that the originator may simply say you faked it, as it can so easily be done in a browser (see above). You still need to provide a link.

Using the Web Archive, or another archiving site, is your solution. The Web Archive has preserving as much of the web and other online content as possible as its mission. It is a trustable source. They save web pages on their own initiative, but you can submit any URL for preservation yourself and it will immediately be saved to the archive. Each archived page has its own URL as well, so you can always reference it. (Many links in Wikipedia point to the archived version of a page from the point in time it was referenced in Wikipedia for this reason).

I submitted my tweet from yesterday to the Web Archive, where it now has a web address that neither I, nor Twitter can change. This makes it acceptable proof of what I did in fact send out as a tweet yesterday.

04 Jul 22:53

Why taming complex software?

by Eric Normand

My book is called Taming Complex Software. What’s that all about? In this episode, I go into why complexity is a major problem and how functional programming can help.

Transcript

Eric Normand: Why would we want to tame complex software? My name is Eric Normand, and I help people thrive with functional programming. I’m writing this book, as you may know.

The title was chosen for me by my publisher. They work with a lot of books, a lot of titles, so they know what does well. I didn’t have a better idea than this.

They used a lot of elements from what I was thinking for a title. The title is “Taming Complex Software — A Friendly Guide to Functional Thinking.” A couple episodes ago, I talked about what functional thinking meant, and why I like the term.

I didn’t choose it, but I like it. It’s grown on me since they chose it.

I want to talk about this idea of taming complex software and what that really means, what it has to do with functional programming. Why is that the title of the book? This was actually something I came up with early, early in our discussions, my discussion with the publisher.

They do this really cool exercise and they said, “Why don’t you write down the super-secret subtitle of the book? It doesn’t even have to make any sense. It doesn’t have to be coherent. It doesn’t have to be catchy, but just write down the subtitle of the book and the title.”

The title and subtitle. I came up with “Taming Software Complexity” as one of the phrases.

They chewed on that for a while. They liked it, but they changed it to Taming Complex Software. I think that there was some issue with “complexity” being complexity theory and I was not going to go there in the book and so they turned it into Taming Complex Software. I still like Taming Complex Software.

It probably makes more sense, even though I think of myself as going directly at the complexity. I think that I am operating on the software, and the software is what’s getting tamed, so it makes a lot of sense.

Why complexity at all? Why are we talking about this complex software? That’s what I want to go into in this episode. Software complexity is the reason why software gets harder to write as it gets bigger. As you add lines of code, the complexity goes up much faster than linearly.

Every language, every paradigm, has this curve of scale that it can reach. This is also true in other systems. If you can only communicate with handwritten notes, because you don’t have a printing press yet, the size of your kingdom can only get so big. You can only rule and organize, and work with a kingdom of a certain size.

A lot of energy is put into systems of communication, systems of record-keeping. All these things help manage the complexity of a bigger and bigger kingdom. As your kingdom gets bigger, it actually gets bigger…what do I mean? As the radius of your [inaudible 4:34] , let’s imagine it’s just an expanding circle.

As the radius increases, the amount of land you have is growing quadratically. It’s going up with the radius squared, so you do have issues where your communication distance that you can communicate effectively is within a certain radius. You’ve got interesting issues with the communication and how things work, as it grows.

Software has this similar problem, which is, as you write lines of code, the complexity grows more than quadratically. You need a lot of structure and a lot of help to get it to go bigger.

Where are those sources of complexity? I talk about this in much more depth in another episode. If you want to look at the sources of software complexity, search for that on my site on lispcast.com. I’ll go over two of them right now briefly and probably more directly.

Here’s the thing. Every conditional at least doubles the number of code paths. Every time you add an if statement, there’s at least two branches. There’s the then and the else.

Even if you don’t have the else — it’s a do-nothing branch — it doubles the number of code paths. That means potentially something will be different in each of those code paths.

It’s more to test. It’s more stuff that can go wrong. It’s more you have to think about and analyze to know that yes, that code path is possible, and it doesn’t break anything. It does give the right answer. It doubles.

If you look at a typical program, a typical piece of software, it must have millions of code paths in it. Millions, trillions. You don’t even notice like, “Oh, if I just remove one if statement.” Let’s say you’re refactoring and you remove an if statement. You’ve halved the complexity.

But it’s so high already. You don’t even feel it. It’s already too complex to comprehend, even though you’ve cut it in half. You’ve made a significant change.

That’s really interesting that we get to this point where it doesn’t even matter if we add one or remove one. We don’t feel the difference.

If you have $10 billion and you double your money, like, “Eh, I don’t care anymore.” [laughs] “I can’t spend it all. I can’t even comprehend all that money.” Or if you lose half of it, you’re like, “Ah, I’m still super rich,” which is really interesting.

I think that we’re at that point in our software that we can’t intuit. We can’t have this good idea of what our complexity actually is. Functional programming has some ways of managing this. The main way is that through data modeling, we can reduce the number of conditionals down to the essential.

You’re going to need conditionals in your software, because you’re modeling some complex system that operates with the world. It needs a certain amount of complexity to it, but often we add conditionals. We add problems, more complexity than we need.

With good data modeling, in theory, you can reduce that number down to the essential bit. I have an episode on this if you want to go deeper into that. I go into the math of it and stuff.

The other source of complexity is something that we’re dealing with more and more these days. Probably for the last 20 years, it’s been pretty apparent that every action in sequence, when you’re doing programming in parallel or in a distributed system, increases the complexity.

It increases it in a combinatorial way. Your operations, let’s say they’re running on different CPUs in your machine, different cores. These are operations on a different CPU. They can interleave in different ways every time they run. You need to make sure that every possible way that they can interleave is a valid way, because you can’t control it.

You can’t control the scheduler, how the CPUs are running, and what they’re doing at what time unless you coordinate between them. In general, the baseline is you can’t control how they interleave.

You need to make sure that every possible interleaving gives you the right answer. The number of possible interleavings has a factorial in it. It grows really fast.

The way I like to show how bad it is, is if you have 12 operations in sequence on two different threads — 12 operations, two different threads — you’re already at over a million interleavings. Do they all do the right thing? That’s your job, as the engineer, is to make sure that they either do the right thing or they can’t happen.

Functional programming doesn’t have all the answers to this, but it has some answers, and it’s asking these questions. It’s been coming up with ways of limiting the number of interleavings. It’s been coming up with ways of making it so that the interleavings don’t matter so much.

If you’ve got all immutable data, it doesn’t matter. If all you’re doing is reading immutable data, even if it’s shared, it’s OK. Functional programming has been working on stuff with distributed systems.

Even if you’ve got a single threaded system like you do in JavaScript, once you make a call to the server, you’re now a distributed system, and you got the same problems. Stuff happening on the server is interleaved with stuff that’s happening in the browser and the messages going back and forth are being interleaved. You’ve got the same problem.

I’ve said this before. I’ll say it again. I don’t think that functional programming is gaining popularity because of the cores that we’ve got. We’re trying to make all this parallel software.

It’s not happening. Not as much as we thought it would. Of course, in some places, it is happening, but it doesn’t seem to be like, “Oh, it’s so necessary to make everything parallel all the time.”

What is necessary is we’re making Web apps. We’re making distributed apps. We’re making an app on your phone that’s talking to a server. Now, you need to horizontally scale out your service but you need to have some kind of consistency between the different servers.

Now, it’s all distributed systems. That’s where functional programming is really showing its value. It’s because we’ve been thinking about these problems for a long time, and we have some answers.

What do you do? Like I was saying, you can reduce the complexity that’s inherent in this distributed system and this parallel system. You can reduce it by limiting the number of interleavings, by eliminating certain possible interleavings from possibility, by limiting the number of things in sequence.

The longer your sequence is, the more interleavings there are by a combinatorial factor. If you shorten your sequence, you actually have fewer interleavings, which is another way of doing it.

That means doing less stuff with actions, with side effects. Doing more stuff with calculations that don’t lengthen your timeline. That’s why I talk about complexity.

Functional programming, I guess that it doesn’t have all the answers. It lets you get to a bigger scale before you have problems, because you are going to still hit complexity limits. It’s also been thinking about the problems and has solutions where other paradigms don’t. The solutions are baked in to the paradigm.

This first notion of, “Is it an action, a calculation, or a data?” already divides the problem up into the hard parts, the actions, the necessary but medium-difficulty stuff, the calculations, and then the data, which is the easiest part.

Once you have immutable data, it’s pretty settled. It doesn’t cause problems. Then the data modeling is actually not so easy. It requires a lot of experience and design skills to model a problem as data, but that actually helps reduce the complexity.

Just dividing things into those three things really helps clarify where is my complexity. What can I do to reduce it to a minimum? I believe that the paradigm itself has baked in a lot of the solutions to eliminate complexity.

Awesome. I’ll just recap real quick. Complexity is the reason software gets harder to write as it gets bigger. I don’t know why, but you see every piece of software has this huge blossoming and blooming at first — all these new features, all this stuff. Then it slows down.

It’s not that people run out of ideas for features to add. It’s just that they can’t add more features without breaking existing stuff. It’s too hard. It just gets harder. Every conditional doubles the number of code paths, and every action and sequence when you’re talking about parallel or distributed systems, increases the number of interleavings.

What we’re talking about is the same with code paths and with interleavings. What will happen next? What is the next thing that will happen? Is that going to give us the right answer?

That’s always the hard part because we have to reason it out in our heads. We have to play it out. What’s going to happen next? If there’s 12 things in sequence, and there’s a million possible things that could [laughs] happen next, it’s no good. It’s too much to keep in your head.

The same with the number of code paths. Got all these branches, I don’t know what’s happening next. I don’t even know what just executed.

FP doesn’t have the answers, it can’t reduce this to nothing but it does have frameworks for thinking about it. It does have a nice set of concepts that map nicely to these notions of complexity, to these sources of complexity. Pull out the things that are more complex, deal with them specially.

You got calculations that are much easier to deal with because they don’t add to the number of interleavings. They are going to have conditionals, but with good data modeling, you can limit it down to the bare minimum.

All right, thank you so much. You can find this and all the other ones — the past, the present, the future episodes from the beginning of time to the end of time on lispcast.com/podcast. I’ve got video, audio, and text transcripts of all the episodes depending on your mood and your predilection for different media.

If you like the text, you like reading, go for it. If you like to listen in the car, you can subscribe. There’s links to subscribe.

There’s also links to social media including email, Twitter, LinkedIn — however you want to get in touch with me. I am happy to answer questions. I love getting questions, and talking about them in the podcast.

Tell me that you appreciate me. Make me feel good. All right people, thank you so much, and rock on.

The post Why taming complex software? appeared first on LispCast.

04 Jul 22:48

Untangling the IndieWeb

David Yates, dy, Jul 01, 2019
Icon

This is what I would take to be a first effort to explain the IndieWeb in a way that is accessible to people who are not programmers (something it has sorely lacked to date). " IndieWeb is about using the World Wide Web itself as a social network, through a set of open standards for communication and identification of content and people. These things can be used instead of modern social networks (Facebook, Twitter, etc…) or in a way that incorporates these networks as a complementary channel. The movement has three main pillars, expressed as sequential levels: identity, publishing and federation." Via Ton Tijlstra.

Web: [Direct Link] [This Post]
04 Jul 22:47

Wandering the Stacks

by Eugene Wallingford

In You Are Here, Ben Hunt writes:

You know what I miss most about the world before Amazon? I miss going to the library and looking up a book in the card catalog, searching the stacks for the book in question, and then losing myself in the experience of discovery AROUND the book I was originally searching for. It's one of the best feelings in the world, and I'm not sure that my children have ever felt it. I haven't felt it in at least 20 years.

My daughters, now in their mid-20s, have felt it. We were a library family, not a bookstore family or an Amazon family. Beginning as soon as they could follow picture books, we spent countless hours at the public library in our town and the one in the neighboring city. We took the girls to Story Time and to other activities, but mostly we went to read and wander and select a big stack of books to take home. The books we took home never lasted as long as we thought they would, so back we'd go.

I still wander the stacks myself, both at the university library and, less often these days, the local public libraries. I always start with a few books in mind, recommendations gathered from friends and articles I've read, but I usually bring home an unexpected bounty. Every year I find a real surprise or two, books I love but would never have known about if I hadn't let myself browse. Even when I don't find anything surprising to take home, it's worth the time I spend just wandering.

Writing a little code often makes my day better. So does going to the library. Walking among books, starting with a goal and then aimlessly browsing, calms me on days I need calming and invigorates me on days when my energy is down. Some days, it does both at the same time. Hunt is right: It's one of the best feelings in the world. I hope that whatever else modern technology does for our children, it gives them something to rival this feeling.

04 Jul 22:46

Fixing Antivirus Errors

by Wayne Thayer

After the release of Firefox 65 in December, we detected a significant increase in a certain type of TLS error that is often triggered by the interaction of antivirus software with the browser. Today, we are announcing the results of our work to eliminate most of these issues, and explaining how we have done so without compromising security.

On Windows, about 60% of Firefox users run antivirus software and most of them have HTTPS scanning features enabled by default. Moreover, CloudFlare publishes statistics showing that a significant portion of TLS browser traffic is intercepted. In order to inspect the contents of encrypted HTTPS connections to websites, the antivirus software intercepts the data before it reaches the browser. TLS is designed to prevent this through the use of certificates issued by trusted Certificate Authorities (CAs). Because of this, Firefox will display an error when TLS connections are intercepted unless the antivirus software anticipates this problem.

Firefox is different than a number of other browsers in that we maintain our own list of trusted CAs, called a root store. In the past we’ve explained how this improves Firefox security. Other browsers often choose to rely on the root store provided by the operating system (OS) (e.g. Windows). This means that antivirus software has to properly reconfigure Firefox in addition to the OS, and if that fails for some reason, Firefox won’t be able to connect to any websites over HTTPS, even when other browsers on the same computer can.

The interception of TLS connections has historically been referred to as a “man-in-the-middle”, or MITM. We’ve developed a mechanism to detect when a Firefox error is caused by a MITM. We also have a mechanism in place that often fixes the problems. The “enterprise roots” preference, when enabled, causes Firefox to import any root CAs that have been added to the OS by the user, an administrator, or a program that has been installed on the computer. This option is available on Windows and MacOS.

We considered adding a “Fix it” button to MITM error pages (see example below) that would allow users to easily enable the “enterprise roots” preference when the error is displayed. However, we realized that this was something we want users to do rather than an “override” button that allows a user to bypass an error at their own risk.

Example of a MitM Error Page in Firefox

Beginning with Firefox 68, whenever a MITM error is detected, Firefox will automatically turn on the “enterprise roots” preference and retry the connection. If it fixes the problem, then the “enterprise roots” preference will remain enabled (unless the user manually sets the “security.enterprise_roots.enabled” preference to false). We’ve tested this change to ensure that it doesn’t create new problems. We are also recommending as a best practice that antivirus vendors enable this preference (by modifying prefs.js) instead of adding their root CA to the Firefox root store. We believe that these actions combined will greatly reduce the issues encountered by Firefox users.

In addition, in Firefox ESR 68, the “enterprise roots” preference will be enabled by default. Because extended support releases are often used in enterprise settings where there is a need for Firefox to recognize the organization’s own internal CA, this change will streamline the process of deploying Firefox for administrators.

Finally, we’ve added an indicator that allows the user to determine when a website is relying on an imported root CA certificate. This notification is on the site information panel accessed by clicking the lock icon in the URL bar.

It might cause some concern for Firefox to automatically trust CAs that haven’t been audited and gone through the rigorous Mozilla process. However, any user or program that has the ability to add a CA to the OS almost certainly also has the ability to add that same CA directly to the Firefox root store. Also, because we only import CAs that are not included with the OS, Mozilla maintains our ability to set and enforce the highest standards in the industry on publicly-trusted CAs that Firefox supports by default. In short, the changes we’re making meet the goal of making Firefox easier to use without sacrificing security.

The post Fixing Antivirus Errors appeared first on Mozilla Security Blog.

04 Jul 22:44

Fun with consent cookies and meta tags

This blog has GDPR consent management on it. (I'm running OIL.js which is open source.) That's the cookie dialog you probably saw on your first visit, or every visit if you clear cookies or use private browsing mode.

As any web user knows by now, the consent dialogs as currently used have a bunch of problems. Consent management platforms (CMPs) are behind on both UX and accuracy.

  • They're annoying, especially on small screens.

  • They don't accurately capture what the user really intends to consent to. They're more like "click to make this stupid dialog go away" management platforms.

If your site has to do consent management, and uses a CMP, there is a solution, currently being tested as a browser extension. Global Consent Manager does a couple of things.

  • First, it will temporarily populate your consent string (using the Interactive Advertising Bureau's own Transparency and Consent Framework) with a value indicating "no consent." This is equivalent to visiting the site the first time and drilling down to some consent managemnt screen and choosing all "no".

  • Later, if you show that you're interested in the site, Global Consent Manager removes the temporary "no consent" and allows the site or the CMP to present the original consent interface.

For a site, why would you want users doing this instead of capturing all the consent you can as soon as you can? Look at the engagement study. People stay engaged with a news task longer when they don't have to provide consent for everything up front. (This idea is totally borrowed from LinkedIn. They don't make you fill in your whole profile at once before you start using the site. They let you try it first, then prompt you for more info when you're more likely to think it's worth the exchange of value for value.)

Smoother consent management UX sounds great, but how do we scale it? How can Global Consent Manager, and future next-generation consent handling features in browsers, tell which of a site's many cookies is the consent cookie, and what to set it to?

I suggest a pair of meta tags.

meta name="consent-location" -- Name of the consent cookie. (Or could be extended to support other ways to persist the consent information.)

meta name="consent-format -- Format of the consent string. Oil.js has a little extra JSON around the IAB TCF string, so we need to handle that and any other CMPs that do their own thing.

More testing coming soon. The meta tags are on this page now, and I'll make some more test pages with different variants.

Bonus links

Consumers Are Becoming Wise to Your Nudge

‘Siphoning off the crap’: Agencies prioritize buying premium content directly on YouTube

Firefox Will Give You a Fake Browsing History to Fool Advertisers

How to Speak Silicon Valley

‘Only enforcement will bring change’: Ad tech responds to regulator’s GDPR warning

‘We expect to see change’: ICO warns ad tech not to flout GDPR

At Work, Expertise Is Falling Out of Favor

Why Google’s Advertising Dominance Is Drawing Antitrust Scrutiny

Why we moved our servers to Iceland

04 Jul 22:44

June 2019 Review

by Michael Kalus

Books

Level Up Trilogy by Dan Sugralinov

June 2019 Review

This was actually a surprisingly entertaining story. In some ways it is reminiscent of “Ready Player One”.

What if you life suddenly turned into a Role Playing Game? Where you could level up stats, see other people’s stats and generally try to do quests?

That’s basically the hook of the trilogy, though in the end something bigger is afoot (I am not going to spoil it).

Fast writing style with a lot of pop culture and gaming references, but accessible to pretty much everybody. The flow I found surprisingly American / British considering that the author is Russian.

If you want a fast, easy read, this is it.

Rating: 4/5

Fall, or Dodge in Hell by Neal Stephenson

Ah, a new book by Neal Stephenson. Released at the beginning of the month it comes in at close to a thousand pages. One of Stephensons doorstops.

And no, that is not a criticism. He manages to create loveable worlds and characters and “Fall, or Dodge in Hell” is in a way a continuation of his 2013s “Reamde”.

Whereas “Reamde” dealt with the world of (online) computer games, “Fall, or Dodge in Hell” asks the question: What if we could digitize a person and give them an artificial afterlife?

Many of the characters from “Reamde” are back, older, somewhat wiser and quite a bit closer to deaths door.

Part 1

In the first part of the book the characters mourn the death of one of theirs, only to realize that he, and others, had worked on a kind of digital afterlife. By scanning in the brain, they hope to rebirth them into a digital realm. They do succeed.

Stephenson in this part is mostly stuck in meatspace, with insights into the very earliest part of the digital afterlife. In true “Reamde” fashion though the afterlife and the real world still interconnect. With the living watching the newly living evolve.

Part 2

The next part of the book deals with evolution of the afterlife and what that means for the humans still alive and where it will lead society. Both worlds go through tremendous transformations and changes as time passes on. Several thousand times faster in the afterlife than in meatspace. (I would like to write more about this section, but it would steal from the story. I may write a longer analysis / review of the book in the future though).

Part 3

In the final part of the book we have entered the afterlife and become witness to all too human struggles as the meatspace world, at times, still watches on.

The End

The book ends with…… an open ending. Not in that character arcs aren’t closed, they are, but rather that Stephenson leaves us with an open ended world.

I am curious to see if he will pick it up in a future book.

Rating: 4.5/5 (Amazon Link)

Grand Dark by Richard Kadrey

Richard Kadrey is mostly known for his “Sandman Slim” in which the titular hero dies, goes to hell, at one point in time becomes the Devil all the while he lives in LA. Grand Dark? That’s different.

It is listed as “Dark Fantasy” in Goodreads and it fits. The world feels dark, a post WWI Germany comes to mind, with broken yet powerful institutions. A broken city and people infused with Jules Verne inspired machines all in the name of the greater good.

What reinforces the “Post WWI Germany” feel for me is that many of the places carry German names, and kudos to Kadrey to not butchering them up but actually using real words.

The story itself starts in a sort of no-mans land. The war has ended, in a victory, of sorts. The war invalids (Otto Dix’s “The Match Seller” comes to mind) are still around and the State appears oppressive and controlling and a sense of doom hangs over Largo, our protagonist. Young and poor he is working as a bicycle courier with an artistic actor girlfriend when he suddenly finds himself promoted to supervisor. Largo has dreams, he wants to get out of poverty and climb the latter. But life in Lower Proszawa is strange and weird.

While his life is changing, so is the city around him. The War may have been won, or at least not lost, but a sense of dread and defeat still hangs over the city of Lower Proszawa and its inhabitants. A mysterious sickness shows itself from time to time as well, which many attribute to weapons used during the war.

Largo himself will find himself in the middle of several different forces that all seem to propel the city towards the next war. With a mixture of action, romance, adventure and a good amount of steampunk meets Jules Verne style aesthetics Kadrey creates a world and a story I greatly enjoyed.

Kadrey always has been a very visual writer, but I think in “Grand Dark” he’s upped his game. This is a book that almost cries out for a mini series. Unlike “Sandman Slim” it does not rely on violence and gore to drive the story forward, rather mystery, conspiracy and fear is what propels Largo and the other characters forward.

All seem to have a sense of urgency, but few know why and all will not be revealed until the end. (I am really trying to avoid spoilers here, even though I acknowledge this reads a bit like an ad copy).

Rating: 4.5/5 (Amazon Link)

The Unincorporate Woman by Dani Kollin

A few years ago I read two books in the “The Unincorporate Man” series and it ended… well, in the death of the title character. So I presumed it was done and dusted. But as it turns out, there are more books in the series.

I was a bit torn on this book. I though the first third was a bit boring, it didn’t really catch me. It picked up a bit afterwards and did catch my attention more. But in general I think this is a bit of an average book. Both “Fall, or dodge in Hell” and “Grand Dark” where better reads this month.

You can read it without having read the previous books. It will make the world slightly less accessible, but from the context of the story enough will be revealed to make it enjoyable.

Rating: 3/5 (Amazon Link)

Climate: A New Story by Charles Eisenstein

This is one of these books where I agree with the diagnosis but reject, by and large, the solution.

In the first part of the book Eisenstein “dismantles” the debate around Climate Change. His core argument is essentially that the argument misses the point and it is about something bigger entirely, but this gets missed because everybody is hung up on CO2.

So far, I agree with him. He then goes on to talk about it being a mistake to frame things in the context of monetary value and arguing that something is worth doing because $$$. I sort of agree with that sentiment, though what he overlooks here is that money is a frame of reference that people do actually understand. I am not going to say this is ideal, but making a high-minded argument that nobody gets is also not very useful.

Lastly he goes onto a rather extensive rant about the failure of Science. Essentially arguing that “science doesn’t get it”. It’s an extend of the financial argument. I think this analysis is rather narrow minded. Science has understood for a while now that things aren’t just existing in parallel but rather are interconnected. The fault here is not with science, but with the way things are being reported. Because so much of science is deep, rather than wide, press releases, and by extension news stories, focus only on a single item.

Science reporting in the past managed to bridge that gap. It put things into context so people could understand was discovery in field X meant overall. But with the decline of Journalism and scientific literacy over the last few decades, this crucial part is missing.

So, in the end, I think the book is a good conversation starter and people should probably read it. But if they just take the book as gospel and run with it? I doubt much good will come of it.

In the end, his solution is one I have read repeatedly from North America writers: The natives know so much more than we do, and we should listen to them.

I have my doubts that just because you’re native you have a better understanding of the world, but that’s a different discussion.

Rating: 4/5 (Amazon Link)


TV

Chernobyl (2019)

I am old enough to remember when the whole thing happened. The somewhat panicked news reporting about radiation on children’s playgrounds etc.

In no small part did it lead to Germany originally decide in the early 2000s to phase out nuclear power.

So it is with a bit of interest to see the Hollywood / HBO treatment of this event.

First and foremost: It’s excellently shot, as you would expect from a HBO show and many people who have lived in the Soviet Union / Ukraine during the events confirmed online there was an enormous amount of attention paid to the little details.

So that’s the good part about the show. The not so great part for me was that a lot of the characters and their behaviour felt rather stereotypical of how an American things Russians talk. I am by far not an expert on Russian culture, but my mothers family was on the other side of the Iron Curtain and we did visit and a lot just “felt off”. Some people on online forums also voiced this, so it wasn’t just me.

And then there is the science behind what happened and what could have happened and that…. Seems to be more myth making than reality, but I let someone who knows more about this explain it in the video below.

Rating: 7/10 (iTunes Link)

The Twilight Zone (2019)

Oh Mr. Peel. It all started so promising.

The first few episodes where good, if not without it’s problem, but then they very quickly started gong downhill, with one of the worst episodes probably being Episode 7 “Not all Men”.

No, it wasn’t the topic, it was the generally hamfisted writing and the characters and this applies not only to Episode 7 but to a lot of them.

I cannot decided if the writers thought they were so smart that people couldn’t get what they wanted to say without getting it hammered into them, or if they really wanted to just preach the message.

In any case, it makes for some seriously bad TV watching. It is well shot though, I give it that, but then these days, that’s almost to be expected.

Rating: 3/10 (iTunes Link)

Thatcher - A Very British Revolution

A Margaret Thatcher, a person I can respect but utterly despise from an ideological point of view.

The timing is probably coincidental, but that the BBC releases this in the midst of a new Conservative Leadership race is…. nice.

The series comes in five parts and chronicles her rise and fall and spends, in the last episode, quite a bit of time on Thatcher and Europe and shows pretty clearly that what comes out of the Conservative party these days towards and about the EU and Europe is something that has been going on for 40 years.

Rating: 9/10

Catch-22

Well that’s dark, is my thought now that I have finished it.

I love the book and I love the 1970s movie this…. I am not so sure. It’s all there, but where the movie tries to paint over the horror with the absurdity of the story this mini series at times goes to the much darker places.

It’s not better or worse than the original movie, just different and as this is a remake, this is actually a good thing.

Like most modern TV shows it has excellent production values, the only gripe on this one would be the at times atrocious special effects (e.g. people on parachutes). Beyond that it is visually interesting, even though I find the yellow tint they gave the entire show a bit uninspired. I am not sure what they tried to convey here, that it’s hot? Either way, a weird choice.

Rating: 8/10 (iTunes Link)


Movies

John Wick: Chapter 2 (2017)

Now that the third one is out I thought it was finally time to catch up on the second one that has been sitting in my “to watch queue” for a while.

And…. I liked it. It was a good continuation from the first, though I admit some of the action scenes are way over the top, especially in the beginning. CGI though seems to be well done / minimal, with the most noticeable exception of the blood splatter.

Having said this, the movie had a great feel similar to late ‘80s and ‘90s John Woo movies. The camera work was dynamic, but not to the point where you couldn’t follow the action / choreography.

The movie also moved surprisingly slow. We didn’t really get into it until around 50 minutes in and the movie itself is only about two hours long. I appreciate it.

And then of course there is the cliffhanger in the end. Greatly enjoyed it, looking forward to the third.

Rating: 8/10 (iTunes Link)

Captive State (2018)

Well, that was a disappointment. The movie is…. I wouldn’t say confused, but it’s completely and utterly uninteresting. It’s supposed to be about the struggle for Freedom but it doesn’t really bring anything new.

Early on the movie teases a bit of the Aliens, but we never really see anything of them / about them or who they are. That works for a movie like “The Arrival” but for this? Not really. The story may have worked as an action movie, but it seems to try to be more “The Arrival” than “Battle for LA” (not that the latter one was a cinematic masterpiece).

What a waste of John Goodman.

Rating: 4/10 (iTunes Link)

Captain Marvel (2019)

Well, that was…. Boring.

To be fair, I have “Marvelled Out” a while ago, but this completely lost me around 45 minutes in. I kept it on in the background and puttered around the place because it’s so utterly forgettable on so many levels.

So, story? Probably. Cinematography? Marvel Standard. Yeah…. That’s about it.

I leave this RedLetterMedia review here:

Rating: 3/10 (iTunes Link)

Chinatown (1973)

Ah, Film Noir. I was recently reminded of this movie and re-watched it. I am not sure I would call it the “best movie of all time” as I have heard some people call it, but it is definitely a cinematic masterpiece, that captures the Film Noir mood incredibly well, even though it’s shot in colour.

It is also “funny” to see a really young Jack Nicholson, as the movie is older than I am. So it’s somewhat interesting to see an actor I had always known as “old” being so young.

It’s too bad that the two follow up movies were either a bomb or didn’t happen. Sad.

Rating: 8/10 (iTunes Link)


Internet Videos of Note

Destroying my insides with Wakeup Juice from Back to the Future Part Three

Came YouTube recommended and “Drinking with Babish”. The presenter is funny too. So if you’re into Mixocology, check it out.

Abortion & Ben Shapiro

I came across the Philosophy Tube channel a few months ago. His videos are generally funny and at the very least make you think. Over the life of the channel the presentation has definitely improved and he has found an interesting voice for the themes he deals with.

In this one he takes on Ben Shapiro and anti-abortion people in an entertaining way that makes you think.

Check out the whole channel though. Good stuff there.

Star Trek Discovery Season 2 - re:View

Red Letter Media is probably my go-to movie review “site”. Mostly because the guys do understand movies and have the ability to enjoy schlock as well.

I have been rather “torn” over Discovery, mostly because I just don’t think it feels like Star Trek and I found Season 2 somewhat confused. It’s nice to see that I am not the only one.

And I am sorry for Chris Evans laughter. No, really, I am. Still, watch it.

Smooth Jazz CD 101.9 - "The CD Files" (1999 VHS

VWestlife loves old technology, mostly audio, and sometimes he finds time capsules like these.

The whole thing is so very '90s, it hurts.

A VHS tape from 1999 promoting New York City radio station CD 101.9 (WQCD). "The story of a stressed out man and a woman with a secret. Find out how she turns him on to the hidden pleasures of 'The CD Files'." One of the recipients of the tape could've won $10,000, but this copy wasn't the winner.
The station changed formats in 2008 and Smooth Jazz is no longer a popular radio format, but the video is a surprisingly well-produced time capsule of New York City in 1999, with the Twin Towers visible in the background.
As for the DJs seen and heard in the video, Deborah Rath, now known as Deborah Howell, is a voiceover artist and a DJ on Los Angeles radio station 94.7 The Wave (KTWV). Pat Prescott is also now a DJ on 94.7 The Wave, and Dennis Quinn is now a Professor of Radio, TV, and Film at Hofstra University.

Erotic Boredom: A Book Review of The Mister by E L James

KrimsonRogue's book reviews are funny. Mostly because he actually reads stuff I wouldn't touch with a barge pole and a hazmat suit.

I guess, watching someone's misery can be fun.

04 Jul 22:42

Twitter Favorites: [ReneeStephen] @PhillyInquirer Backpacks are awesome. Unlike this article.

Renée Stephen @ReneeStephen
@PhillyInquirer Backpacks are awesome. Unlike this article.
04 Jul 22:41

Todoist Premium price increase (and locking in old price) - Andrew Mckay

Some positive feedback about this company and paid subscriptions

I rather foolishly forgot to cancel my yearly subscription as i had not used it for 6 months and was not planning on using it in the foreseeable future

I received an sms from my bank that the money had been paid to Todoist and I got on line to see if I could get a refund
There was an item in the help section and I wrote a brief note and submitted it requesting a refund

Within a very short period if time I received a positive reply, no problem, they were sad to see me go but a refund would appear in the next few days

Based on this experience I can definitely trust this company in the future
04 Jul 22:41

The Cost of Every Message You Send To Your Community

by Richard Millington

I joined Elizabeth Warren’s community about a month ago.

Since then I’ve received a couple of emails a day. Some of them are newsletter digests, others are from the community manager, others are donation requests written in her name.

There’s probably data somewhere which proves the more emails you send, the more donations and acts of advocacy you gain.

But don’t be surprised when members quickly begin to tune you out. Like a balance sheet, every expense also has a cost. If members deem an email irrelevant, they’re far less likely to open the next email.

Because it’s hard to quantify the value of attention, let’s put an imaginary cost on it. I’d suggest $0.20 per email to member i.e. sending an email out to 10,000 members would cost $2k.

Now is your email so important to members (and so critical to your mission), that you would spend $2k to send it out? And if you are going to spend $2k to send it out, shouldn’t you invest a lot more time to make it as relevant, educational, and entertaining as possible? If you don’t believe a member would be grateful for receiving it, don’t send it.

Now you can lower the cost by sending the email to fewer members (better targeting) or sending fewer emails. And you can raise the return by ensuring every email you send to your mailing list offers so much value it’s a no brainer to you and members.

Sending emails to community members isn’t free. Member attention is finite and you should invest wisely in it.

p.s. pro-tip > send as few regular, weekly, updates as possible.

04 Jul 22:41

[ridgeline] Responses to SMSes – Part 1

by Craig Mod
It arrived. The book. Of your responses. For those of you who don’t know what I’m talking about, this is the book of responses that subscribers sent to my SMS project. There’s a lot I want to write about this whole process, procedure. Want to pull apart the gangly, floppy loop the project formed between me and the walk and those following along. Anyway, for the time being: THANK YOU to everyone who wrote in.
04 Jul 22:41

Tim Cook ärgert sich

by Volker Weber

Tim Cook ärgert sich über diese Geschichte im Wall Street Journal:

Mr. Ive had been growing more distant from Apple’s leadership, say people close to the company. Mr. Jobs’s protégé—and Apple’s closest thing to a living embodiment of his spirit—grew frustrated inside a more operations-focused company led by Chief Executive Tim Cook.

Mr. Ive, 52, withdrew from routine management of Apple’s elite design team, leaving it rudderless, increasingly inefficient, and ultimately weakened by a string of departures, people close to the company say.

More >

04 Jul 22:40

Where is 1Password made?

by peter@rukavina.net (Peter Rukavina)

I was updating 1Password on my Mac this morning and took the occasion to look at the “About 1Password” dialog:

Screen shot of the 1Password about box.

I was intrigued by that long list of places: it seemed to suggest that 1Password is maintained entirely by remote workers. And, sure enough, it turns out to be true; from the 1Password jobs page:

Work remotely, from anywhere, flexibly. You could be in a sweet home office, then a café for part of the day, and even in your camper on a caldera – so long as there’s a reliable Internet connection. We’ve got folks in over 30 cities, from New Zealand to Germany to our office in Toronto.

I pasted that list of places into MapCustomizer.com to generate a map of all of them; here’s what I got:

Map of 1Password workers (from MapCustomizer.com)

It turns out that a good number of those workers are in southern Ontario, not surprising as it’s a Toronto-based company:

Map of 1Password workers in southern Ontario.

I see they have workers in Burlington (where my parents live) and Brantford (where my grandparents lived) and Peterborough (where Catherine and I used to live).

I like being about to put a geography to my software creators, especially those that create software that’s as mission-critical to my everyday as 1Password is.

04 Jul 22:38

Conversation on Creativity

David Dykstal, Micro.blog, Jul 02, 2019
Icon

If you were on the web before Facebook and Twitter you will remember conversations like this. Notice how you can't just drop in on it and troll it or cover it with spam? Other people can enjoy it, but they don't get to ruin it. This is the sort of web the distributed web is intended to create - one where you can participate in conversations like this, and view the conversations of others, but one where people control their own spaces and keep them clear of clutter and rubbish. Image: what's the difference between a blog and a microblog.

Web: [Direct Link] [This Post]
04 Jul 22:38

Dumpster Diving Writer Scoops Info on New Skytrain Station on Granville Street

by Sandy James Planner

stanley-woodvine

stanley-woodvine

I have written before about the work of Stanley Woodvine who writes for the Georgia Straight. Mr.  Woodvine is a homeless writer as well as a graphic artist, and brings a unique perspective to the city.  I wrote about his take of people carrying large sandwich boards in the city, and the scramble for retail positions in a shifting storefront market.

Stanley Woodvine also likes to dumpster dive, and his combination of interest in city events and looking for that elusive item hit paydirt. And his latest find is truly  the stuff of legends~Stanley’s  “pastimes of binning and blogging unexpectedly came together on Friday (June 28) when I pulled actual blueprints for a Granville Street Skytrain station out of a cardboard Dumpster in the 1400 block of West Broadway.”

Unbelievably a set of blueprints for the proposed new Granville Street station were dated May 24, 2019, and stamped by  architectural firm Musson Cattell Mackey Partnership (MCM) and building contractor PCI Developments. The plan showed that the new Broadway subway’s Granville street station will be on the northeast corner of West Broadway and Granville Street where the existing Royal Bank building is at 1489 Broadway.

The drawings themselves detail a five story mixed use building above ground with a curious six floors of parking for 332 vehicles below ground, completely out of keeping with the density of the project.  Mr. Woodvine surmises that the five stories being built above ground may merely be a platform or podium for a tower that will require this parking capacity as part of their development permit. The drawings indicate the location of the “future residential elevator” which confirms Mr. Woodvine’s hunch. He also notes that the future tower may be 40 stories based upon the parking capacity noting that the new 40-storey condo tower at 1335 Howe includes 430 vehicle stalls.

You can take a look at Stanley Woodvine’s blog for the details of his remarkable find. 

While the blueprints detail the location and access to the trains and suggest a five year process to build out, it is disappointing that once again no public washrooms are being planned at this major transit junction, despite the fact a recent TransLink survey indicated that over 70 percent of those surveyed would like them. As Mr. Woodvine surmises:

“Their apparent absence in the Granville station plans may piss off some people but one supposes that TransLink will argue that until the Broadway subway has been in operation for a while, it will not know which of the stations are busy enough to warrant washrooms.”

Given the high use of the Broadway corridor to the University of British Columbia, washrooms are definitely needed. Perhaps TransLink can rethink the need for washrooms as a vital basic human necessity.  I guarantee that 100 percent of the transit using public will need  these facilities at some time.

As former City of Vancouver Councillor Elizabeth Ball indicated in a motion Access to public toilets is a basic human need and is a critical feature of any age-friendly city.”

stanley-woodvine

stanley-woodvine

Images: CBC.ca

 

 

 

 

 

 

 

04 Jul 21:37

The Programmer Mindset: Main Debug Loop

by Chase Seibert

Validating ONLY with tests is basically flying the plane on instrumentation, versus being able to look out the windshield. Flying visually and by muscle-memory is both more efficient and safer, in conjunction with instrumentation. You’re much less likely to hit a mountain by mistake.


When you’ve been coding for more than twenty years, it can be difficult to recapture beginner’s mind, and explain how to think like a programmer to someone who is new to it. I remember an incident in college, when I had been coding for a comparatively short time, that crystalized in my mind the thought process behind writing code—what you might call the programmer philosophy. I was helping a friend complete a Computer Science 101 assignment. They were completely new to coding. They had written an entire solution, on paper, beginning to end—maybe 100 lines of code. THEN they typed it all in to a text editor, and ran it. What do you think happened? They got about a thousand syntax errors. This is when they came to me, feeling like they had hit a brick wall. I had been sitting beside them in the same class—but critically, I had been coding for a while already. I had already internalized the basic thought process of writing code, without ever having to articulate it. Our professor had failed to impart that thought process.

The Main Debug Loop

What I had to then explain to my friend is the thought process that I’m now going to call the “Main Debug Loop.” I believe that this is a natural mindset that develops in all programmers—assuming they successfully learn to code. It involves breaking down the problem into very small pieces. Small enough such that you’re writing 1-3 lines of code at a time. Every time you write one of these small chunks, you run the program. Usually it doesn’t work, and you try again. Slowly, you accrete code that you’ve convinced yourself works. You build up the whole solution iteratively.

The keys are two fold: you’re building incrementally, and you’re validating as you go. As you gain experience, you work on more and more complex systems. But this mindset scales to problems of any complexity—you just have to break them down more.

This is the main debug loop. Write code, run code. Running the code is the validation.

Validation Happens in Layers

What exactly is validation? Here is an example of what I’ll call in-application validation. In web development, you write a few lines of code, save the file, and refresh you browser. Then, you interact with the page/application manually to see if what you just changed works. For speed, you’re probably only testing the happy path, or the one edge case that you’re currently implementing. For any other kind of development, the process in analogous, but the specifics look different.

Test validation does not happen in the application. Instead, you run a small set of synthetic assertions against the code you’ve just written. This is a best-practice called test-driven development. TDD is used in conjunction with in-application validation. In practice (and contrary to strict TDD), my observation has been that developers work in short loops, validating in-application, and then quickly fast-follow with unit-test coverage.

Another layer of validation is automated integration testing, using either a tool like Selenium for application layer validation, or Postman for API layer validation. You may also have exhaustive manual testing, potentially by dedicated QA engineers. Finally, you can use feature gating to validate in production. All of these layers of validation work on concert to ensure quality. When you’re writing the code iteratively, you typically utilize in-application validation and/or or test validation, because they are so much faster.

Optimizing Loop Time

The main debug loop can be something that you execute hundreds of times an hour. Thinking and typing code are the natural bottlenecks—you’re a lot slower than the computer, after all. In an ideal world, running the code to validate what you just wrote is instantaneous. For the vast majority of my coding career, running small chunks of code averaged maybe 5 seconds. The overhead is due to latency in the file system registering that files have been updated, the runtime loading the change, and your own “human time”—interacting with the newly updated application to run the change and see the results.

The computer’s portion of the loop time is variable based on the language, the framework, and the application itself. Scripting languages don’t have to be compiled before they are run. Some types of coding naturally involve more or less human interaction. For example, running a console command tends to involve less human latency than refreshing a web app. But because the main debug loop time is so universally critical to the developer workflow, the language and framework authors have a large incentive to optimize it. The developers likewise are incentivized to optimize their own application for it.

Why Fast Loops are Better

To my mind, slow loop time recalls some of the worst debugging nightmares of my career, what I call “flying blind.” The worst cases have two properties: they are not reliably reproducible, and each attempt at reproduction takes a long time. For debugging, non-reproducibility by itself can lead to unacceptably slow loop time. If you have a deploy to production to see if it worked, or you have to run the code many times to see if it fails once, that’s a worst case slow loop time scenario.

It’s easy to see how this extreme scenario can lead to slow development, and low quality output.

In contrast, some of my most positive memories of being “in the flow” invoke the sensation of being in constant, fluid dialog with the computer. Like a back-and-forth conversation, you’re arriving at your conclusion collaboratively. You’re validating the code nearly as fast as you can think it and type it. For me, even a 10 second latency in being able to run and validate a change can break that flow.

Still, the assertion that shorter loops times are better rests on an unprovable assumption—that running more cycles for a given scope of work will result in higher output per time period, and/or higher quality. I believe this is true, but I concede that (no matter how personally counter-intuitive) it’s possible that over-all throughput and quality could be as high or higher with slow loop times.

Are Short Loop Times Universal?

Loop times are not guaranteed to be short—in fact, technical entropy will exert constant pressure to increase loop times. Significant developer time needs to be expended to make sure that the test suite continues to run quickly, the application reloads code quickly, and that the UX itself (on user facing applications) affords developers the ability to quickly reload and validate.

Given that brand-new projects tend to inherit short loop time on small codebases from their parent language and framework, it’s no surprise that in my career-to-date at small startups, we tended to have short loop time. We had to expend effort to keep them short, but we were generally able to do so.

However, I have seen that in larger code bases, with larger teams, short loop time is not a given. Perhaps it is too costly to maintain short loop time as the complexity scales? What ever the cause, once the loop time hits the point of breaking flow, developers will naturally seek shorter loops, such as switching to test validation. In an extreme case, you may not validate in-application at all, and trust that your test are validating correctness.

To me, the retreat to test validation seems super dangerous—but the developers will do what they need to do to keep loop times short, even if they are not validating fully.

Some Integrated Testing is Necessary

Without running code in a fully integrated environment at some point before shipping it, you’re running a greatly elevated risk of shipping bugs. This could look like validating in-application as you write the code, exhaustive manual testing or gated validation in production. Validating only in a synthetic scenario simply does not afford the same confidence as running everything integrated together. How many times have separately developed components not worked properly once they are eventually integrated? This happens even if the interfaces match perfectly—the composed behavior is very often still wrong.

No QA person on the planet would condone shipping something to production without running it the same way a user will experience it—integrated together.

Validating ONLY with tests is basically flying the plane on instrumentation, versus being able to look out the windshield. Flying visually and by muscle-memory is both more efficient and safer, in conjunction with instrumentation. You’re much less likely to hit a mountain by mistake.

Does Complexity Lead to Test Validation Loops?

Keeping loop time short is hard when you have complex systems, and large codebases. Hot reloading may very well take longer than 10 seconds by itself, in order to load and recompile a large codebase. Scripting languages have an advantage here, but have their own non-orthogonal costs. Even scripting languages may have unacceptable latency if the framework requires transpiling.

Service oriented architecture presents unique advantages and challenges for the main debug loop. On one hand, you are working on an individual, smaller codebase most of the time. Hot reload times are shorter. On the other hand, running your application composed with services and external data-stores gets both very complicated and also takes a ton of compute resources. Before long, running it locally is not even possible.

In practice, I have noticed a correlation between large codebases, service architecture, and a retreat to test validation as the primary debug loop.

Staging Environments to the Rescue

A staging environment is like a miniature version of production. It should have all the same services set up, as well as the same basic network architecture. It’s just scaled down significantly. Typically it has the exact same data-stores and schema, but totally different data-sets. Staging is totally isolated from production; you can’t talk to production versions of any services, and you can’t talk to production data-stores.

Depending on the sensitivity of the product domain, you may be able to sync production data down to staging, either in whole or sanitized. In many domains, that is not possible from a security perspective, so you create fake test data, with the entire engineering team using the same test data-sets and data-stores. You begin to have your “favorite” test users and records, and can bring them up in-application quickly.

Staging environments have a lot of uses—but how can they help keep developers in the in-application validation flow? Intelligent service routing can help solve the local machine resource problem, AND alleviate the burden of maintaining a local data set. The downside is that it requires that developers have an active internet connection to staging.

The premise is that you hook your development service up to staging, and route your individual in-application validation requests through the normal staging service graph—EXCEPT for one or two services that you’re currently developing. The staging network topology will pieces of the service call graph from the staging environment in the cloud back to your development box, likely over a VPN. It sounds really complicated, but this dynamic routing is a standard feature of service aware routing mesh frameworks like linkerd.

Conclusion

The switch from in-application validation to test validation in the primary debug loop lead to lower quality, slower velocity, and to context switching.

System entropy towards test validation takes a LOT of work to counter. Maintaining short debug loops quickly becomes a full time job for someone, or a team of someones. But, even with as few as 50 engineers, organizations I’ve been in have opted to pay that cost. It’s possible (though I’m not yet convinced) that the cost grows exponentially as you scale up in terms of people and codebase size. In that case, I would expect companies at large scale to near-universally live with slow debug cycles and the primacy of test validation.

View original post on Chase Seibert’s blog.

04 Jul 21:36

Splatter Painted Fenders Make Your Ride Totally Unique

by noreply@blogger.com (VeloOrange)
by Igor


There's a reason why MTB's from the 80s and 90s are awesome - splatter paints makes everything 100% more radical. And while the process, on first glance, seems to be time consuming and difficult, it's actually super easy and fun!

All you need is a spread of paints, some cardboard, fenders (mudguards for our friends across the pond), and time. I'd suggest going with three colors: color matched (or close enough), complementary, and analogous. In this case we went with Lilac, Pass Hunter Orange, and Gen1 Piolet Blue. We used extra touch-up paints, but you could really use anything including rattle-can paint sprayed into a cup, nail polish, auto paint, or even model paint.


Prior to splattering I'd suggest getting the fenders 100% ready for mounting. That includes cutting and affixing the stays to the fenders, drilling for frame mounting, and thoroughly cleaning the surface of any grease or fingerprints. Having them ready to mount means you'll be able to re-install without risk of damaging your new, unique paintjob.


Lay some cardboard down to catch excess splatter and use the fender stays to keep everything upright and stationary. Turn up the beats, shake some paints, and get to splattering. Lines, blotches, speckles, and imperfections are all encouraged.


Once you're satisfied, leave them to dry. We left them out in the sun for the afternoon. You can clear coat if you'd like, but we didn't.


Now that they're dry, mount them up!


04 Jul 21:29

What to look for in our next president

by Josh Bernoff

This is a political post. If you don’t like politics, skip it. Briefly: I like smart presidents. Right now, 23 Democratic candidates are vying for the nomination. People are scrutinizing their specific positions, looking for disqualifying events in their past, wondering about their rhetorical skills, giving them points (or deducting them) for debate performance. I’m … Continued

The post What to look for in our next president appeared first on without bullshit.

01 Jul 04:37

It is important to remember the invaluable support crews from Alberta provided to BC during the last two extreme #BCwildfire seasons, and to reciprocate that support whenever possible. Below are some photos of the things our crews have been up to while in Alberta! (2/2) pic.twitter.com/KEjEPeysfi

by BCGovFireInfo
mkalus shared this story from bcgovfireinfo on Twitter.

It is important to remember the invaluable support crews from Alberta provided to BC during the last two extreme #BCwildfire seasons, and to reciprocate that support whenever possible. Below are some photos of the things our crews have been up to while in Alberta! (2/2) pic.twitter.com/KEjEPeysfi






Posted by BCGovFireInfo on Monday, June 24th, 2019 5:34pm


80 likes, 21 retweets
01 Jul 04:36

db-to-sqlite 1.0 release

db-to-sqlite 1.0 release

I've released version 1.0 of my db-to-sqlite tool, which lets you create a SQLite database copy of any database supported by SQLAlchemy (I've tested it against MySQL and PostgreSQL). The tool has a bunch of new features: you can use --redact to redact specific columns, specify --table multiple times to copy a subset of tables, and the --all option now efficiently adds all foreign keys at the end of the import. The project now has unit tests which run against MySQL and PostgreSQL in Travis CI. Also included in the README: a shell one-liner for creating a local SQLite copy of a remote Heroku Postgres database based on extracting the connection string from a Heroku config environment variable.

01 Jul 03:18

"How To Fuck Up An Airport"

by peter@rukavina.net (Peter Rukavina)

Back in 2012 I booked a flight to Berlin that was scheduled to land at the new Berlin Brandenburg Airport. Before I flew, however, I received a message from the airline telling me that the new airport’s opening was delayed and that I’d be landing at the venerable Berlin Tegel instead.

Remarkably, Berlin Brandenburg still has yet to open, and the reasons behind this are the subject of the four-episode podcast, How To Fuck Up An Airport, from Radio Spaetkauf:

Every Berliner knows the new airport is late. Few know exactly why. We’re here to explain. BER is the international airport code for Berlin Brandenburg Airport, nickname Willy Brandt. It has also become a signifier of failure, incompetence, corruption and Berlin’s general inability to get its act together.

If you’ve flown to Berlin Schönefeld Airport in the last few years, you’ll have seen BER as your plane taxied along the runway. But despite outward appearances, BER is far from finished. It has been under construction for 11 years, blown through six opening dates, three general managers and two state leaders. Costs have ballooned from around €1 billion to at least €5.4 billion.

Across this series, you’ll learn why the escalators are too short, why the lights are always on, and why the rooms seemed to be numbered by bingo. We’ll interview insiders and disgruntled workers, chase ghost trains running to the terminal, and go inside the unfinished airport.

01 Jul 03:17

"The more efficient your house, the lower the interest"

by peter@rukavina.net (Peter Rukavina)

Following a link on Frank’s blog, I learned about an innovative mortgage product from the Dutch Triodos Bank, the sustainable mortgage:

With the Triodos Mortgage you get a discount on the interest when your house becomes more sustainable. We offer the Triodos Energy Saving Loan for the renovation. With this loan you can finance up to 25,000 euros in sustainable adjustments to your home. The great thing is that the interest on this loan is only 50% of the interest on your mortgage.

This is an excellent idea.

01 Jul 03:17

Tasker + Termux = Android + Mac

by peter@rukavina.net (Peter Rukavina)

Thanks to a helpful post by William Denton, I remembered the Android utility Tasker, and realized that I could use it to automate the gluing together of my Android phone and my Mac.

Here’s what I did.

First, I installed Tasker on my phone from Google Play and then the Termux:Task add-on from F-Droid.

Next, on my phone I launched Termux, created a directory ~/.termux/tasker, and created two scripts there.

The first, start-ssh, to start the SSH server on the phone (after killing it first, in case it was running already):

#!/bin/bash

pkill sshd
sshd

The second, mount-phone-on-mac, to mount the phone on the Mac (by SSHing to the Mac and doing the mount from there, unmounting it first in case it was already mounted):

#!/bin/bash

ssh peter@192.168.2.2 "umount ~/motog7"
ssh peter@192.168.2.2 "/usr/local/bin/sshfs phone:/storage/emulated/0 ~/motog7 -o volname=motog7 -p 8022"

To allow this second script to work properly, I had to do a couple of things.

First, in System Preferences on the Mac, I had to check the “Remote Login” box on the Sharing sheet.

Second, on the phone, in Termux, I had to create an SSH keypair:

ssh-keygen -t rsa -b 2048 -f id_rsa

This left me with a public key file ~/.ssh/id_rsa.pub that I then added to the end of ~/.ssh/authorized_keys on my Mac.

I made these two scripts executable with:

chmod +x ~/.termux/tasker/*

I then tested them out to make sure they worked.

Next, I set up Tasker.

I created a new Profile called Reinventorium with the trigger of State > Wifi Connected and the SSID of my office’s wireless network:

Screen shot of Tasker Profile

I added a new Task called Mac to this Profile, and added two Actions to that Task, one for each of the two scripts I created above, selecting Plugin > Termux:Task from the Action category and entering the name of the script:

Screen shot of Tasker Task

With all of this in place, every time I come into the office with my phone and it connects to the office wireless network, it automatically launches its SSH server, and tells my Mac to mount its storage.

30 Jun 04:47

Ghosting stinks. Learn to write a rejection email.

by Josh Bernoff

Is there anything you hate more than businesspeople who “ghost” you? In case you’re not up the slang, “ghosting” is ending a relationship by just disappearing and failing to respond to all forms of communication (social media, texting, or email, for example). In a personal relationship, that’s cowardly. In a professional relationship, it’s very bad … Continued

The post Ghosting stinks. Learn to write a rejection email. appeared first on without bullshit.

30 Jun 04:37

Keeping Memories As Part of Identity

by Ton Zijlstra

This blog is a bit of a commonplace book, which I keep because note keeping is a key tool in learning, thinking and ultimately doing stuff. Even though this blog is mostly oriented towards professional interests, it also builds a pretty consistent picture of my actions, whereabouts and life events over the past 17 years. That makes it a reference for myself, and a source for checking memories.

Today at IndieWeb summit Jonathan LaCour made a call to action to remember “memories are important“, part of your identity so you should “hold onto your identity; not encumbered by any silos“, and ensure those memories are in a place you fully control. Memories and identity as building blocks of agency.

He incorporated various online materials over the years into his current site, all accessible through the archives. Which reminds me I should do something like that with importing my exported FB archive here.

30 Jun 04:37

Replied to Dear IndieWeb, it may be time to sta...

by Ton Zijlstra
Replied to Dear IndieWeb, it may be time to start considering the user, not just the technical spec. by Eli MellenEli Mellen
I’ve been working on a series of walkthrough posts that outline how to IndieWebify a Wordpress site. I presumed the initial setup would be fairly straightforward because a) I have a vague idea of what I’m doing, and b) a suite of plugins already exists. Boy-howdy, was I wrong. (ಥ﹏ಥ) I’ve...

Fully in agreement with you Eli. To provide agency to potential IndieWeb adopters, it is needed to start from purposes and what things a person wants to achieve. Build a pathway from there, and provide the building blocks. Not start from the tech specs. Myself I am frequently lost in the IndieWeb woods, even if I have some tech knowledge, and am not easily thrown off by the need to hunt down clues in obscure fora for a fix to an issue. Too often too much knowledge is assumed on all things IndieWeb if you seem to have some knowledge about a tiny part of it.

30 Jun 04:36

The End Of The Age Of The Guitar?

by Steve

This is a thing that’s been touted in the music press (and apocalyptically amongst music gear manufacturers) for years but it really does feel like we’re at the end of the age when guitars are the dominant icon of popular music. It’s not that people aren’t still playing them, and making both brilliant and utterly tedious music with them, just that they no longer play the totemic role in the visual semiotics of what ‘rock n roll’ looks like any more.

Three tales from Glastonbury to make the point – 0n Friday night, Stormzy headlined (BBC iPlayer link if you’re in the UK). His set was alternately a classic MC+DJ Grime set and a MASSIVE theatrical soul/gospel/grime/funk extravaganza with live band, dancers, dudes on mountain bikes, and an irony-free appearance by Chris Martin with a real Fender Rhodes. The music was heavy, complex, beautiful, and more rhythmically advanced than ANY guitar band that have ever headlined the festival. Grime is a music form developed in bedrooms, clubs and pirate radio stations. To transfer it to a festival headline slot took some monster skills and vision. The first Grime star to cross over like that was Dizzy Rascal, but he took on the predominantly white festival audience by working with shred-guitar-genius Guthrie Govan. He met them half way. Stormzy gave no quarter. It was an astonishing show, but there was no pandering to the expectations of a white rock-loving crowd.

Two – The Comet Is Coming, (iPlayer link) a sax, drums, keys trio featuring the great Shabaka Hutchings. Heavy riffage, ecstatic posturing, drum solos, hypnotic grooves. Not a computer gig at all but not a guitar-shaped instrument to be seen.

Three – Kate Tempest: performance poet and rapper, on stage with just a keyboard player/DJ, controlling all the beats and playing the most sublimely responsive minimalist keyboard parts. Utterly compelling, engaging, enthralling, and HEAVY in the broadest sense, but with nothing of the visual semiotics of a rock gig at all. Just talking/rapping and mellow keys. Brilliant and brave.

I’ve just finished teaching the first year of a creative performance technology course at BIMM here in Birmingham, in which students get to explore a wide range of ways to enhance their performance with technology (or completely upend their preconceived ideas about what performance even is). In amongst the final pieces we only had one ‘band’ performance, and two that used guitar as part of an otherwise electronically/digitally mediated performance, making use of the Ableton Push 2 controller. Gone are the days when ‘tech’ meant either decks or a DAT, with software and hardware options existing to create interactive performance tools for creative artists, and allow for as much improv and spontaneity as you could have with a ‘normal’ band.

My own performing set up is built entirely for improv, around choices, differing vocabularies and a variability that means I can choose from a suitably wide and nuanced range of places to start, and nothing can ever happen the same way twice. Despite bass still being my beloved instrument, the role of the bass is now as a component within a larger instrument, comprised of all my tech. It’s not the iconic emblem of rock in this context (I sit down to play, FFS! 🙂 ) It’s transformed and manipulated, and those vestiges of expectation become a useful foil for surprise and intrigue for an audience hopefully encountering sounds and ideas that are both entertaining and stimulating…

It’s weird, in a field (literally, at Glastonbury) that they used to OWN, bands with just four white dudes playing guitar, bass, drums and singing often feel almost hopelessly anachronistic if they don’t have something else to set them apart, and just standing there holding a Les Paul no longer seems to carry the same social or cultural cache it once did…

The value proposition has changed, and the range of possible start points for music making presented to young people who want to make pop music have expanded immeasurably. Arguably, it’s been that way to some degree since the advent of turntablism and sampling in the 80s, but guitars were still the orthodoxy, still the icon, the emblem, the badge, the logo.

Not any more? Not in my world. And I’m glad for the change. Western culture has moved on, we just need to make sure all of music education and retail keeps up!

(That said, I’m still REALLY looking forward to The Cure on Sunday night 🙂

30 Jun 04:36

Twitter Favorites: [ianb] @P_Ratchford It’s a war on inequality. It’s a war to bring a return to a normalized economy. It’s a war against inv… https://t.co/YHbaedtDk7

Ian Andrew Bell 🇨🇦 @ianb
@P_Ratchford It’s a war on inequality. It’s a war to bring a return to a normalized economy. It’s a war against inv… twitter.com/i/web/status/1…
30 Jun 04:35

Auntie Beth’s Present

My Aunt Beth died a few weeks ago. Her real name was Bertha Marian White (née Scott), here’s her obituary. I was close to her when I was a kid; she was an awfully nice person, and I’m sad. But she’d been fading for years, and in the way of death these days, Beth the person we knew pre-departed the spark of life in her body. One reason we loved her is she always gave the best birthday presents, and she did that again one last time this month.

Here’s a 1986 picture of Beth’s and my branches of the family.

Beth White and Jean Bray and their children in 1986

I’m not going to Net-publish the names of living people unless I’m pretty sure they’re OK with that. Beth is in the blue dress; beside her in glasses my Mom Jean Bray. Beth’s living sons are behind her, either side; the elder is Bill White, who we’ll be hearing more from. The woman in the front married Beth’s youngest and is holding Beth’s first grandson, who is now online at Henry White Music. At the right side of the picture, with glasses, is Beth’s now-deceased husband Ralph White, one of twelve siblings of whom ten are still living.

I’m in the red sweater and my brothers are beside me in white and with a beard in the back row. The woman in black was married to my bearded brother.

That birthday present

Beth’s memorial was on my birthday. It was so great to get together with family that, although I’m only one province over, I seldom see. What a great birthday present; thanks Beth! (And Myra, who organized it.)

Beth was a big talker and a fabulous cook, eccentric in her beliefs and habits. But I was just a kid; it never dawned on me that her regularly staying up till two in the morning on one project or another was because she was running the place, probably — this was the Sixties — with only moderate support from her all-male family.

At the memorial, I learned there were a couple of seriously tough periods when the ends really had to be stretched to meet. I’d never noticed, I was just a kid. And she lost her son Dan, who was a year older than me and I was pretty close to. He was shot by a drunk with a hunting rifle in a parking lot outside a bar. He’d been a party animal and a star athlete and I’m pretty sure he would have gone far in this world.

Beth was never ever without a smile. Now I wonder what they cost her.

The memorial event

It was in Beth’s youngest’s big house in Balzac, Alberta. That branch of the family has had five kids, of whom several are now reproducing. In the first picture Henry White, whom we saw as a baby above, sings Abide With Me, his sister accompanying. Good voice! Henry, an active Christian, also gave us a reading from Scripture (1 Corinthians 4:7-15, James 4:13-15, and Romans 5:18) and a few observations on it. Also there were personal memories and biographical notes from several of Beth’s grandkids,

Aunt Beth’s grandchildren perform at her funeral

Then Bill White, Beth’s oldest son, got up and gave us an extended tour through Beth’s life, throwing color on the facts, finding humor and sorrow. It was a masterful piece of work.

Aunt Beth’s eldest son speaks at her funeral

Then we said the Lord’s Prayer (my kids wouldn’t even know the words) and sat down with tea and good things to eat.

I’ve grown into another space — multicultural, coastal, technical — but this is my birth tribe, comfortable in their skins on the Prairies. We didn’t talk much about pipeline politics or theology, but I enjoyed every minute with every one of them. Thanks everyone.

30 Jun 04:33

Cyclist dies after being hit by a motor vehicle in Burnaby, RCMP say

mkalus shared this story .

Burnaby RCMP say a cyclist has died after being hit by a motor vehicle on Saturday afternoon. 

Police and emergency health services were called to the scene at the 1500 block of Gaglardi Way at around 1:30 p.m. PT.

The cyclist, who has not been identified, was 53 years old.

Traffic at the location is blocked as investigators canvass the scene. 

Burnaby RCMP is asking anyone with information about the incident to contact them at 604-646-9999.