Shared posts

18 Jan 02:21

A template for more deliberate 1:1 meetings (v2)

by leisa.reichelt@gmail.com (Leisa Reichelt)

I mentioned on Twitter recently my intention to do better 1:1 meetings with my direct reports and stakeholders in 2021 and promised to share how I was approaching it.

This is not the first time I’ve made this resolution and it often tails off into adhoc-ery all too quickly but I’m hoping that being intentional about why I am doing this will help it stick more.

To that end there are a few things that I’m changing in how I do my 1:1s this year, including:

  1. Diarising time each week on Monday to prepare for my 1:1s. Here I need to admit that usually I’ve been collecting topics on post it notes throughout the week and then winging it through the 1:1 meeting, basically triaging on the fly the most important topics that I or my team member are bringing in that day. This means that we tend to deal with urgent things but not always important things.
  2. Creating a template for each of us to complete in preparation for the meeting, and to help ensure that we regularly touch on important topics that might otherwise be overlooked by urgent things. More on this below.
  3. Taking proper notes and actions in the meeting, and making sure the actions get acted on. Basic stuff really, the former wasn’t really happening and the latter could be a little hit and miss. Using the template as a way to build accountability for the actions.

With that in mind, here is my current iteration of the template I’m planning to use. I’ve used it only twice so far and already iterated it a little (hence the v2 in the heading) and I expect I will continue to iterate it more and more over time. So far its been pretty positively received, but it is still far, far from perfect. Feedback welcome.

The idea is that each week in preparation for the 1:1 my direct reports, who are mostly Research Managers, fill out this template and take the time to reflect on each of these items. I also have a section I need to fill in. We both contribute topics in addition to the standard items.

Template for my 1:1 Meetings

Date of the 1:1 Meeting

Actions from our last 1:1 Captured from the previous 1:1
– action 1
– action 2 etc.
Emoji of the week: meaning discussed in the meeting
Win what wins did you have last week? My managers fill out these sections of the template BEFORE the 1:1 meeting
Frustration –what was your biggest frustration last week?
Focuswhat is your focus this week? Pick one thing
Growth plan focus – what aspect of your growth plan are you currently working on?
Project Status – what are your top three (or fewer) projects right now and how are they tracking? 1.
2.
3.
Team Healthanything remarkable to report re: people doing really well or poorly?
Stakeholder Healthanything remarkable to report re: relationships going well or poorly?
Reflections and/or feedback from Leisa This section is for ME to fill out each week. Needs to be personal feedback, not just feedback / opinions on work, ideas, questions.
Items for this week:
– topic 1
– topic 2
– topic 3
Take tonnes of notes.

(My actual template is in Confluence and look lots better as it has lots of colourful emojis all over it. Annoyingly WordPress won’t play nicely for me with emojis here so I’ve prioritised making this accessible over giving a screenshot of the pretty one instead)

During the meeting I will then capture a tonne of notes as the meeting progresses (my background as a qual researcher has prepared me well for this!). These notes are shared on a Confluence page so that both of us can add more, annotate etc.

As soon as the 1:1 meeting is completed, I update the template with next weeks items, and the agreed actions captured.

I am a little bit concerned that the extensive ‘structured’ section might not leave enough time to focus on the more ‘urgent’ topics – especially given these currently tend to take up the entire time allowed right now. But, that is also somewhat deliberate, so perhaps that’s not a bad thing.

The 4Ls – an alternative approach I might use on a monthly basis.

When I was talking about this approach with my colleague Dom Price, he shared another 1:1 format that he likes to use. I’m not sure it would work quite so well for me on a weekly basis but I might experiment with using this every 4-6 weeks as I think it does provide a really different perspective on how people are doing in their work and how you might be able to help them be more successful.

Dom’s approach asks people to reflect on these four categories:

  • Loved – what I loved doing this month
  • Longed for – what I longed to be doing but was unable to find the time/etc
  • Loathed – what I really did not enjoy doing this month
  • Learned – what I learned this month

The idea is to try to support the person you are managing to increase the loved and learned, enable the longed for and remove the loathed.

I’m sure there are many more great frameworks from people who have given this a good deal more thought than I have. I’d love to hear what’s worked well for you and what you’d recommend.

18 Jan 02:21

“Bad Things Will Happen”

by Richard Millington

It’s common when trying to build support for a community to pretend nothing bad will happen.

But this is going to hurt you and your community when it does. Worse yet, if you’ve pretended nothing bad will happen you probably don’t have an agreed plan to deal with the risks.

Instead of trying to pretend it won’t happen, it’s better to pretend it will.

But you need to explain three things here:

1) You’ve identified the risks. You have worked with various teams (marketing, PR, IT, legal, product to identify the most likely risks (legal, reputation, risk to members, risk to staff etc…). Invite stakeholders to add their concerns to the list.

2) You have a plan to respond and mitigate each of them. You’ve taken proactive steps to reduce the likelihood of something bad happening and have a plan to respond when it does. Invite anyone with concerns to help develop your plans here too.

3) The incredible benefits of a community far outweigh these risks. Much of the business world is shifting towards community. Control is in decline. You can figure out how to do community now or later, but at some point it will happen. The benefits of a community are too important to not pursue because of concerns about risks.

The more active your community becomes the bigger the risk that something bad will happen. On a long-enough time scale, it’s almost inevitable.

If you want to mitigate the concerns of colleagues, engage them in the journey of identifying and mitigating the risks (and identifying the benefits they need from the community).

18 Jan 02:19

brumm.af/shadows

brumm.af/shadows

I did not know this trick: by defining multiple box-shadow values as a comma separated list you can create much more finely tuned shadow effects. This tool by Philipp Brumm provides a very smart UI for designing shadows.

Via @joshwcomeau

18 Jan 02:19

Power and paths

by Doug Belshaw

One of the big influences for me when I started personal blogging, as opposed to blogging about education, was Zen Habits. It doesn’t look like it, but it’s one of the most viewed blogs on the web, with more than two million readers.

It’s written by Leo Babauta, who was recently interviewed on The Tim Ferriss Show. The podcast episode a great listen for a number of reasons, but I want to focus in on one thing that’s touched on briefly.

Babauta explains that he has six children, with four from his and his partner’s previous marriages, and the two they’ve had together. Some have gone to school, and some have been unschooled:

Unschooling is an informal learning that advocates learner-chosen activities as a primary means for learning. Unschoolers learn through their natural life experiences including play, household responsibilities, personal interests and curiosity, internships and work experience, travel, books, elective classes, family, mentors, and social interaction. Often considered a lesson- and curriculum-free implementation of homeschooling, unschooling encourages exploration of activities initiated by the children themselves, believing that the more personal learning is, the more meaningful, well-understood and therefore useful it is to the child. While courses may occasionally be taken, unschooling questions the usefulness of standard curricula, conventional grading methods in standardized tests, forced contact with children in their own age group, the compulsion to do homework, regardless of whether it helps you in your individual situation, the effectiveness of listening to and obeying the orders of one authority figure for several hours each day, and other features of traditional schooling in the education of each unique child.

Wikipedia

The point he makes is a simple one: if children are always brought up to be told what to do next, to be given a path, then how will they find a path of their own as adults?

He doesn’t make the connection explicitly, but my next thought was that this is perhaps why the default option for most people after school / college / university is to get a job in a hierarchical organisation with a boss telling you what to do.

The radical thing to do, and the thing which is much more empowering, is to reject persistent hierarchy and coercive power relations altogether. Instead, approaches such as consent-based decision making are the way forward. No-one needs someone telling them what to do all of the time — including children.


This post is Day 83 of my #100DaysToOffload challenge. Want to get involved? Find out more at 100daystooffload.com.

The post Power and paths first appeared on Open Thinkering.
18 Jan 02:19

Art Direction for Static Sites

Your personal site is your playground. Overhearing some recent chatter about putting the personality back in personal websites, I thought it might be helpful to share how I’ve been approaching art direction on my blog. I have a bit of experience here, in fact years ago during the heyday of “blogazines”, I forked and maintained an art direction plug-in for WordPress. It adds a text field for either global and page level styles and scripts enqueues those in the appropriate places. It wasn’t pretty but did the job and is in use on big sites like CSS-Tricks.

Switching to static sites some years ago, I still wanted that ability to add some flavor to posts when I feel inspired. I wanted to replicate that CodePen-like feeling in my blog post authoring. I think I came across something even easier than a WordPress plugin. To achieve a “minimum art-directable” effect, I’ve settled on three-ish features that get me most of the way there and allow me to add some spice to my bland, beige-colored blog.

1. Set a CSS Custom Properties baseline

If you’re going to do art direction in 2021 or beyond I think the biggest bang for your buck is: Use CSS Custom Properties. I wrote about variable layers for wiring up a dark theme, but having a handful of CSS variables as an underlying framework allows you to override and tweak your theme anytime you see fit. You can see this in action on a post I wrote about the economics of Twitch, to convert it to Twitch-brand purple, I just needed a few lines of CSS:

:root.theme-dark {
  --bg: #19171c;
  --link: #b19dd8;
  --link-active: #6441a4;
  --heading: #fff;
 }

I also have a body_class field in my post metadata that allows me to hardcode a dark theme, but I have only used it a handful of times. The resulting effect looks something like this, some simple theming applied to an otherwise normal post.

A dark website with white text and purple links

This isn’t going to win any Awwwards, but because it’s CSS, the sky’s the limit on how much you want to blow this out. Barring any dramatic site changes, you should have something that is easily re-skinnable and scales pretty well over time.

2. Add head and foot metadata fields

In order to get the styles into the post template, I more or less recreate what I was doing in Better Art Direction. I support two metadata fields in my primary layout. One called head and one called foot. The top of an art directed post looks something like this:

---
title: My kewl post
head: |
  <style>
    .post { font-family: fantasy; }
  </style>
foot: |
  <script type="module">
    import twoUpElement from 'https://cdn.skypack.dev/two-up-element';
  </script>
---

The heavy lifting is then passed to layouts/default.html, my default Liquid layout template. It’s more complex but looks something like this:


<!doctype html>
<html lang="en-us" class="{{ page.body_class }}">
<head>
  <title>{{ page.title }}</title>
  <style><!-- Critical CSS goes here --></style>
  {{ page.head }}
</head>
<body>
  <header><!-- Main navigation goes here --></header>
  <main>{{ content }}</main>
  <footer><!-- Footer links go here --></footer>
  <script src="/js/scripts.js"></scripts>
  {{ page.foot }}
</body>
</html>

The head metadata field does what you might expect and injects whatever I want in the <head> of the page. I mostly use this for styles, but I decided not to limit myself to only styles. It could be used for Google Font imports or some custom preload/prefetch work. The most important thing is that you build yourself a CSS playground that you can use or don’t use depending on how the mood fits.

The foot content renders at the end of the <body> tag after all of my site scripts (~787 bytes) have run. The “after all my scripts” part was more important back when I was using jQuery, but it still seems like a smart idea to run after my vanilla FitVids. Occasionally, if I have a post with a lot of Twitter or CodePen embeds, I’ll yoink out their repeating embed scripts and just put a single script call in the foot. In theory, this may adversely impact RSS readers, but I haven’t triple checked that. The beauty of Progressive Enhancement is that I don’t care, readers will get some version of the content and someway to access it.

Now that you have a playground established, you can really mess up your page. Have fun! Go wild! I’ve used these fields on over 50 posts over the past 10 years and while most people have never noticed, I sure have and that’s what counts.

3. Add support for SVG titles

The low-effort solution of having optional head and foot metadata satisfied my art direction needs for many years, but around 2016 I started getting bored with the web and felt like I needed a new way to punch up the jam. I started playing with SVG animations and realized that SVG post titles might be a great way to inject a lot of spice with as much effort as I want to put into it.

SVG has a lot of advantages for art directed blog posts:

  • SVG is vector-based, so it won’t look old in 10 years when we all have 22K retina displays.
  • You can theme SVGs with CSS, specifically CSS custom properties, so illustrations can effortlessly transition between light and dark modes.
  • You can animate SVGs with CSS opening the door for lots of subtle surprise and delight.
  • SVG is scriptable which means you can programmatically generate, alter, morph, or destroy your art work.

The process here can be as simple as typing out some text in Illustrator, outlining it, and copy-pasting that into my post metadata. Or the process can be as complex as breaking out the GreenSock Animation Plugin (GSAP) to create some wild morphing animations. I can do as much with that core concept as my time and ambition will allow.

I sneak the simple SVGs in from time to time. Like on this post about “endless content”, I used the Endless Summer typeface because I enjoy a good pun. Or on my review of the graphic novel March, I outlined the book’s title typeface, which is based on typefaces found on civil rights posters of the time. I’ve started a tradition of doing custom titles on my year end review posts because it gives me an opportunity to express a bit more of the feeling of the year.

But sometimes you need to dial it up a notch. For my 2020 year end review, being such a chaotic year, I felt something bigger was needed so I manipulated a giant coronavirus map of US counties that when you move your mouse over the image, the virus spreads more. That’s where scripting comes into play. I wrote a little bit of science fiction called The Mammoth and because it’s about a large lumbering robot in the future, I wanted the title to look sci-fi but without importing a whole new font, so I outlined Marvin Visions, but I also wanted the title to have some weight so I came up with a way to use CSS variables to create a cheap-ass parallax effect. My biggest effect to date however was my post about Cognitive Overload, where my brain literally explodes into the title when you begin to scroll. Prolific CodePen artists like Sarah Drasner, Mandy Michael, Lynn Fisher, Stéphanie Walter, Stephen Shaw, David Khourshid, Pete Barr, Adam Kuhn, and more have been a major inspiration for me in regards to the possibilities of vector art.

From a technical standpoint, it functions similar to the head and foot technique but with a new svg_title metadata field that is supported in the layouts/post.html template. The metadata looks like this and can get pretty long and make your editor angry so I recommend chucking it through SVGOMG.

---
title: Rectangles!
svg_title: |
  <svg viewBox="0 0 200 100">
    <rect width="200" height="100" fill="pink">
  </svg>
---

And your post template looks like this:


{% if page.svg_title %}
<h1 class="svg-title" aria-label="{{ page.title }}">{{ page.svg_title }}</h1>
{% else %}
<h1>{{ page.title }}</h1>
{% endif %}

An accessibility note: One commitment I’m making is that my art directed title must be a representation of the post title text, otherwise I’d have to come up with a bit more complex solution here.

I’m not a professional illustrator. I’d probably go so far to say I’m a poor illustrator. Most of my ideas revolve around sourcing some SVGs and manipulating them or outlining a neat typeface. But if you… if you can actually illustrate… then, wow! I can’t wait to see what you do.

The tradeoffs of supporting art direction

It wouldn’t be fair to talk about art directing blog posts without talking about the maintenance tradeoffs. Costs exist going this route, but since I’ve been doing this for over 11 years (according to Github), I think I’ve come up with some strategies to minimize some of the trauma.

The biggest challenge is that if I redesign or change my layout dramatically, I’ll occasionally have to tidy up old posts. The amount of pain in this process correlates to the amount of art direction and media-queries I’ve used in the post. For example, one of my oldest art directed posts on interaction consistently causes me frustration. Even now it’s in a state of disrepair. The <aside> should float out more and the page title is actually supposed to be much larger and controlled by your device’s gyroscope. Something broke along the way and my desire to fix it (yet again) is very low.

On the note of fixing up old pages, a nice thing about static sites over their database-backed competitors is that I don’t have to click through some web-based UI to find my art directed posts that I need to fix up. I can quickly grep or search for posts with a head: or foot: metadata field. If I was a more astute developer, I’d make a hidden page of only art directed posts so I could QA faster any time I do some heavy-handed changes.

Another nice thing about static sites is that you’re not as limited in your options. If you want to go all out and create the weirdest page on the Internet, you don’t have to hijack the system. You can eject from your layout entirely by choosing not to specify a layout. That alone gets you most of the way there! A page can be a hand coded page that atrophies at its own pace away from the parent styles is a great way to limit your technical debt.

That’s all the tips and tricks I have. Hope this helps. If you head down this route, please let me know, I’d love to see what you come up with. And welcome to the small but enjoyable group of folks still having fun with their personal websites.

17 Jan 21:13

Plaintext HTTP in a Modern World

On the modern web, everything must be encrypted. Unencrypted websites are treated as relics of the past with browsers declaring them toxic waste not to be touched (or even looked at) and search engines de-prioritizing their content.

While this push for security is good for protecting modern communication, there is a whole web full of information and services that don’t need to be secured and those trying to access them from older vintage computers or even through modern embedded devices are increasingly being left behind.

Note: This article is mostly directed at those serving personal websites, like this one, with no expectation of privacy or security by most readers of the content. If you are running a commercial website, collecting personal information from users, or transmitting sensitive data that users would expect to be done privately, disregard everything here and don’t bother offering your website over plaintext.

Table of Contents

  1. HTTP Upgrading
  2. Avoid Forced Upgrading by Default
  3. Continue Upgrading Modern Browsers
  4. Content Concessions
  5. A Rant About Gemini

HTTP Upgrading

Though it’s less common these days, users may still type in your website URL manually as opposed to clicking on a link that already includes the https scheme. (Imagine a user hearing your website mentioned on a podcast and they have to type it into their browser.)

For a URL entered with an http scheme or, more commonly, no scheme specified, unless your domain is listed in the STS preload list of the user’s browser or they are using a plugin like HTTPS Everywhere, the browser will default to loading your website over plaintext HTTP. For this reason, even if your website is only served over HTTPS, it’s still necessary to configure your server to respond to plaintext HTTP requests with a 301 or 302 redirect to the HTTPS version of the URL.

If your server is properly configured to send a Strict-Transport-Security header, once the user’s browser loads your website’s HTTPS version, the browser will cache that information for days or months and future attempts to load your site will default to the HTTPS scheme instead of HTTP even if the user manually types in an http:// URL.

Avoid Forced Upgrading by Default

This forced redirection is a major cause of websites becoming inaccessible on vintage computers. Your server responds to the HTTP request with a 301 or 302 status and no content, and either a) the browser follows the redirection and tries to negotiate an SSL connection, but your server doesn’t offer legacy SSL versions or old ciphers so the negotiation fails, or b) the browser just doesn’t support SSL/TLS at all and fails to follow the redirection.

A real-life example of this is that I recently purchased a Powerbook G4 and updated it to MacOS X 10.5.8 from 2009. It has a 1.5Ghz processor and 1.25Gb of RAM, and can connect to my modern WiFi network and use most of my USB peripherals. It includes a Mail client that can talk to my IMAP and SMTP servers, and a Safari web browser which can render fairly modern CSS layouts. However, it’s unable to view any content at all on Wikipedia simply because it can’t negotiate TLS 1.2 with the ciphers Wikipedia requires. Why is a decade-old computer too old to view encyclopedia articles? I am not the first to complain about this.

A solution to this problem is for websites to continue offering their full content over plaintext HTTP in addition to HTTPS. If you’re using Nginx, instead of creating two server blocks with the listen *:80 version redirecting to the listen *:443 ssl version, use a single server block with multiple listen lines, like so:

server {
    server_name jcs.org;
    listen *:80;
    listen *:443 ssl http2;

    ssl_certificate ...;
    ssl_certificate_key ...;
    ...
    ssl_protocols TLSv1.2;
}

While it may seem counter to the point of this article, I recommend not serving legacy SSL/TLS ciphers like SSLv3 to try to help older browsers. These old protocols and ciphers are insecure and broken, and I feel it’s better to make it clear to the user they’re connecting to a website in cleartext than to offer a false sense of security by having the browser indicate a “secure connection” when it’s being done over an old, broken protocol. Also, while it may not be practical anymore, modern browsers might be tricked into negotiating an old, broken cipher if your server still offers it.

Even if you do offer legacy protocols and ciphers to older browsers, your TLS certificate might be signed by a certificate authority whose root certificate is not trusted by older browsers.

Continue Upgrading Modern Browsers

Now that your entire website is being offered to legacy browsers over HTTP, modern browsers can still be directed to connect over HTTPS for added privacy by responding to the Upgrade-Insecure-Requests header. This header is only sent by modern browsers that support CSP when making an HTTP request, so it’s a reasonable indicator that the client is sufficiently modern and robust that it will be able to negotiate a TLS 1.2 connection if redirected to your site’s HTTPS version.

For Nginx, this can be done inside a server block by defining a variable per-request that includes whether it was made over plaintext HTTP and whether it included an Upgrade-Insecure-Requests: 1 header:

server {
    ...
    set $need_http_upgrade "$https$http_upgrade_insecure_requests";
    location / {
        if ($need_http_upgrade = "1") {
            add_header Vary Upgrade-Insecure-Requests;
            return 301 https://$host$request_uri;
        }

        ...
    }
}

This location block will respond for any request and, for those made over plaintext HTTP where $https will be blank and which included an Upgrade-Insecure-Requests: 1 header, they will be offered a 301 redirection to the HTTPS version. The Vary header is sent so that any caching proxies in the middle won’t cache the redirect.

Content Concessions

With legacy browsers now able to access your site, you may want to make some changes to your HTML and CSS to allow your site to render with some degree of readability. I don’t recommend giving it the full IE6 treatment catering to the lowest common denominator, but at least make the main text of your site readable.

Obviously avoid JavaScript unless it is used progressively, though many older browsers raise error dialogs at the mere presence of modern JavaScript that can’t be parsed even if it’s never executed.

Modern CSS and complex layouts can also be a problem even for browsers just a few years old, so it’s probably best to use them sparingly. For any <a> or <img> tags that are local to your site, use relative links to avoid specifying a particular scheme.

<a href="/posts/blah">
<img src="/images/...">
</a>

If you have to specify an absolute URL to another site that is also available over both HTTP and HTTPS, you can specify it without a scheme or colon and the browser will use the same http: or https: that the document is being viewed over:

<a href="//other.example.com/">My other site</a>

A Rant About Gemini

Tangentially related, Gemini is a modern document transfer protocol that aims to fit between the ancient Gopher protocol and the too-modern HTTP web. Its document markup language is based on Markdown so it’s very lightweight and simple to parse without complex HTML/CSS parsers.

It sounds like the perfect thing to bring modern content to vintage computers, except that its protocol requires all content to be transferred over TLS 1.2 or higher which makes it nearly impossible to access from a vintage computer or even a modern embedded system with limited CPU power.

This requirement seems poorly thought out, especially considering the Gemini protocol doesn’t even support forms (other than a single text box on a search form) so there’s no chance of users submitting private data, and, short of using clunky TLS client certificates, there’s no mechanism for client-server sessions like cookies so clients can’t be authenticated, meaning everything served pretty much has to be public anyway.

Its protocol author argues that TLS is just a simple dependency no different than a TCP server module, so it should be trivial to implement in any client or server. But if your computer’s CPU is so slow that a modern TLS negotiation would take so long as to be unusable, or its platform doesn’t have a TLS 1.2 library available, that makes it difficult to write a client without depending on an external system [2].

In my opinion, the protocol should recommend that servers offer both plaintext and TLS encrypted versions and recommend that clients prefer TLS, but may use plaintext if needed. Clients for modern operating systems can continue enforcing a TLS requirement so their users aren’t feeling any less secure.

Perhaps just sending actual Markdown text over plaintext HTTP to clients that ask for it can be the new, old web.

Accept: text/markdown,text/plain;q=0.9,*/*;q=0.1

Please don’t contact me to “well ackchyually” me and explain MITM attacks and how your terrible ISP inserts ads into your unencrypted web pages and how you were able to make a Gemini client out of a whistle and some shoelaces. If you don’t want to make your website content available to stupid old computers, then don’t.

17 Jan 21:01

First Time Through

While I was working with Skylar Watson and some others at a client in Michigan, we were discussing metrics with their uses and abuses (see What Should We Measure).

Skylar had suggested that there was a metric used in manufacturing that has strong applicability to software development in a CI/CD world.

The concept is First Time Through (FTT).

alt_text

Obstacle course racer climbs through pipe

Origin of the Concept

A factory (and, yes, we know that software is not very like a factory… hold on to that objection) seeks to make a perfect instance of their product every time. The aspirational goal of Lean manufacturing is to have perfect value while producing no waste at all.

Sometimes, though, there is a problem.

Perhaps a part is out of tolerance, or something was damaged in handling. The problem must be remedied before the product can be released to customers. The product cannot be allowed to go through to delivery in a defective state.

Since remediation involves a loss of material and time, having and fixing problems are operations that involve waste rather than operations that add value.

So every time a product is assembled perfectly without remediation, the factory has done a splendid job.

The factory work is managed by considering the First Time Through rate.

If a factory had some problem to remediate once for every dozen widgets produced, you would consider it a very poor factory indeed. One would expect that a factory would not see one failure for several hundred or several thousand units produced.

Software “Construction”?

Software is unlike factories. Factories create replica instances of a product but in software, perfect replicas are created by downloading or file-copy commands.

Likewise, the original product isn’t being created by programmers either. The compiler is the analog of fabrication, taking a specification (source code) and building a product according to the specification given by the programmer. Our compilers are bit-perfect, repeatable, and have few imperfections.

Compilers and file-copy are to software as factories are to tangible products.

Certainly, if one measured FTT of a set of compilation and file copying tools, one would find that metric consistently at 100%. Every time one compiles the same code and copies the executable, one gets an essentially perfect copy of the product.

Of course, a metric that never changes is not very helpful in managing an effort, so we don’t bother to measure the FTT rate of our nigh-perfect machinery.

But imagine that you were producing the compiler or the copying command. You would want to have a measurement of how often the machinery correctly produced the intended code and successfully deployed it, right?

If a copy command ran very quickly but the result was not byte-for-byte identical to the original file, you would consider it to be faulty and would set about uncovering and solving its problems.

Likewise, if a compiler produced different and flawed results for the same input, you would set about finding and correcting the causes of error in the compiler. You would certainly leave no stone unturned in fixing or rearchitecting the compiler to produce consistently good results.

FTT In Normal Software Development

Your development teams are continually beginning with whatever version of code currently exists, then extending the design to incorporate additional functions and features. When they are done, they have produced a new revision of code that has never existed before.

This new product is expected to solve problems for some members of the product community. Maybe it is to make the product easier to install and operate. Perhaps it makes it easier to administer various configurations for varied users. Perhaps it provides new operations for users or a better user experience. Maybe all of the above.

This is a design operation, rather than manufacturing.

It’s rather harder to tell if a design will meet its user expectations in the abstract, and the deliverable code is the first complete working model that has been created.

But we deliver our designs (source code) to the machinery that builds and copies the product as we’ve specified (the pipeline).

If the design cannot pass through the pipeline, it is because there is a defect that stops the compiler or the code does not pass the quality checks (often levels of static scanning and tests) in the pipeline, or perhaps there is a failure to install and start the software at the deployment end of the pipeline. Either way, there is some defect that must be returned to the development team for remediation.

Ah, here we see a parallel.

We want the code to pass effectively through the pipeline every time, but sometimes it doesn’t. We want to know how often we can successfully pass through the pipeline and how often we are able to actually solve user problems with the code we produce.

Every time we fail to pass through the pipeline, we have been saved from a public failure, but we also have remediation work to perform.

This remediation costs time and money. Remediation is a waste since no user would pay extra for software where developers spent a lot of time fixing rejected builds.

The remediation waste may (or may not) be a lower cost than releasing defects to the end users in production. Our intention is to make it inexpensive to build software with no defects, or to catch all defects so quickly that they effectively never happened.

I spent a few years in which I polled developers at conferences and user groups, and corporate programmers in various companies I visited. I found that roughly 70% of all developer efforts were going to fixing defects found either in testing or in production code.

I know that sounds obscene, but between 60 and 80 percent of all development effort was waste. It’s not really surprising that their work frequently falls behind schedule.

The “solution” (really a coping mechanism) in many companies is just to fix the errors and move on – pretend after-the-fact that they never happened and don’t think about it anymore.

What if we measured how often we could successfully deploy software, as a ratio of perfect releases to total attempts to release?

Say we created version 2.4 yesterday. If it can go to production, that gives us one try with one success: 100% First Time Through (FTT)!

Today we create version 2.5. It has problems. It takes us 3 tries to get it to pass through the production pipeline. Now we’re 50%. We tried twice, and the second try had issues. This gives us 50% FTT (one troubled attempt with retries, one successful attempt).

That dip suggests that something different happened in 2.5. What was it? Was there a flaw in our process or our understanding that let the issues slip past our awareness until it failed in the pipeline? What does the difficulty have to teach us?

Tomorrow we create version 2.6, and it goes out without an issue. We’re now at 66% FTT.

Armed with this information, and an intention to improve FTT, we start to change our procedures to create more safety and confidence.

We may add security and quality scans to our IDEs so we can find problems and correct them sooner.

We test better and earlier, increasing our supply of automated tests so we have reason to believe that our code will pass in testing (and to support refactoring).

We review each other’s work, perhaps continuously.

We remove code smells like primitive obsession, to make it harder to make common mistakes.

We eliminate duplication in the code base, so we reduce our maintenance effort.

We may take a little longer to get code into the pipeline, but now we aren’t spending 70% of our time on fixing failures and so we are delivering more often.

If you spend 20% of your time on new code, and 80% on fixing broken code then if you could reduce your defects to consume only 40% of your time, you could spend 60% of your time on new code. That is a threefold increase in development time. Even if you spent twice as much time developing each feature you would deliver code to production more often and more predictably.

So measuring FTT and acting to improve it can result in better code sooner.

As with any metric, measurement without focused improvement efforts is useless.

Unanswered Question

“Tim, this is helping our process of making code, but it doesn’t answer whether the products are any good – whether they satisfy user needs or not! What about validating the code with users?”

Guilty. FTT focuses on the process of making software, but doesn’t directly influence whether we are making the right software.

At least, using FTT doesn’t do anything to damage or impair your ability to produce the right solutions. It is entirely synergistic with attempts to build better products.

But consider this, if you can’t get your software to production quickly then your ability to experiment with new solutions is stymied by your inability to release experimental code.

If your process is not very good at getting your software delivered, it doesn’t much matter if it’s pretty good or pretty awful - if it’s not perfect in every way, you are going to struggle to improve it.

Additional External References

17 Jan 20:59

An American Tragedy

by Tristan Louis

This story initiall appeared on TNL.net. Accept no substitute for the original.

I was recently telling a friend that I had no concerns about the future of the USA because, as bad as things as have ever been, there was one thing that was always clear about American democracy: ever since Washington stepped down, there had always been a peaceful transfer of power in this country.

This rich tradition stood in contrast to other parts of the world, where violent behavior by losers in an election could be seen as threats to basic democratic principles.

Today, with shots fired inside the US Capitol, violent protesters attempting to take over the building, and a general demonstration of willingness to undermine democracy, that tradition violently came to an end. As of this writing, at least one person has been killed, at least a hundred people have been wounded, and America’s image as a proud beacon of democracy lays in tatters.

I am a partisan but this is not a partisan note: this is an American note and let’s be clear, this was an attack on America. While there is a constitutional right to protest, the seizure of the Capitol is not a protected right. And when someone tries to break into the Capitol of the United States of America at a time when the democratic process of counting the ballots of the electoral college is happening, this effort was meant to terrorize and thus could be classified as a terrorist attack.

Anyone who fails to denounce this effort in the strongest possible term could be considered guilty of sedition against the United States, sitting alongside the people who attacked American democracy. Since the president was addressing the group earlier this morning (the headline quote was “We will never concede”), Congress should also consider whether his actions this morning constituted incitement to riot and whether another impeachment proceeding should be fast-tracked.

Dictators around the rest of the world will replay today’s event over and over as tools to demonstrate either the weakness of the American system or its failure. Either way, this protest will be used on recruiting videos for anti-American terrorist groups for years to come.

A few days ago, there were reports of a potential threat from Iranians around the counting of our electoral college votes. It turned out that the external threat wasn’t as strong as the internal threat of domestic terrorists.

And unless we find a way to prosecute those involved in today’s events (including the public figures who created the conditions for today by giving voice to the claims of a stolen election), then this could be seen as the day America died.

The post <span class='p-name'>An American Tragedy</span> appeared first on TNL.net.

17 Jan 20:58

Ted Lasso

by peter@rukavina.net (Peter Rukavina)

There’s an exercise where you take an abstract scribble and transform it into a fully formed drawing. It’s hard not to think of that exercise when watching the Apple TV+ dramedy Ted Lasso.

The show, or at least its characters, started life as a series of NBC Sports promos starring Jason Sudekis, but those were mere abstract shapes compared to the fleshed out thing that they’ve evolved into.

Among the digerati, I’ve read more than once comments like these from Jason Kottke:

It’s ok if you don’t care for sports. It’s not about sports.

Assuming it was about sports kept me from watching it initially; when I finally succumbed I realized that, indeed, it’s not about sports, at least not in the sense that you have to be sporty to enjoy it. Which I do.

In this vein it’s not unlike Sports Night, the venerable Aaron Sorkin/Thomas Schlamme creation, from which the absence of a laugh track earned a New Yorker profile before it even debuted. Author Tad Friend wrote there:

The subject of sports isn’t particularly suited to a TV series, but likeable characters who like sports are.

The characters of Ted Lasso are exceedingly likeable, especially Sudekis, who, with his costar Brendan Hunt and two others, created the show. The original Ted Lasso, from the NBC Sports days, was all thinly drawn goofy parody; the Ted Lasso in the series is that, plus backstory, plus heart, plus metaphysics. He is the coach we all wished we once had.

This success of transforming a sketch into a work of art makes me think I should option the series rights for those old Peter Pan commercials.

17 Jan 20:58

The Best Example Of Discussion Tagging

by Richard Millington

At the bottom of most areas where you type your question for a community, you have an option to add a ‘tag’.

This seemingly benign option has such a huge impact over a community it’s bewildering how little discussion it receives.

When tagging is done well, it achieves three things:

1) Ensures the right posts appear in front of the right people. Experts in particular topics can browse a page of properly tagged discussions and answer questions. This increases both the quantity and quality of answers. Sometimes people can even follow particular tags.

2) Enables you to create topic pages. You can use tags to create unique topic pages filled solely with discussions, articles, and other material relevant to that particular tag. This gives you far more flexibility than category pages.

3) Lets members follow tags. Members can follow and receive questions related to particular tags they’re interested in. You can even find the top experts by each particular ‘tag’ in the community.

However, tagging is rarely done well in the community. Most communities fall victim to one of three mistakes.

Mistake 1: Forcing members to come up with tags. This is the worst option. If members have an open text box to create a ‘tag’, you’re going to get dozens of variations of similar tags ranging from (‘iphones’, ‘brokeniphone’, to ‘dfgdfg’).

Mistake 2: Forcing members to start typing for tags to appear. This is slightly better, at least relevant tags will appear as members type them. However, members still have to know what a tag is and can still misclassify their answers.

Mistake 3: Presenting too many tags. This at least lets people select tags, but often there are so many tags to choose from members just select anything to make the boxes go away.

The Right Approach to Tagging

The right approach to tagging is to use your existing member data to suggest relevant tags.

The Apple community is the best example of this. To ask a question, you first need to log-in. Once you log-in, you can start typing your question in the search box (this helps reduce duplicate questions).

Once you click the link to ask a question, the platform uses your data to suggest the most likely tags.

This is about as good as it gets.

You can select what you’re asking about and what topic your question is relevant to. You can still change it if it’s not a good fit, but thus far I’ve found these options to be spot on.

If you’re looking for a project to massively improve your community in the new year, I’d start here.

17 Jan 20:47

Fall, by Neal Stephenson

by Ton Zijlstra

I read Fall or Dodge in Hell in the past two weeks, reading the Dutch book Suikerbastaard in between.
Fall is about 900 pages, so it took a bit more time than average to read.

(spoilers below the image)

Neal Stephenson
Neal Stephenson discussing The Fall, image by Christopher Michel, license CC-BY

The book consists of multiple distinct large parts on a timeline. Normal beginnings where a billionaire wants his body preserved until his brain can be properly scanned, a part where the internet is becoming obsolete due to too many fakes, hoaxes and trolling, a post truth US where religious cults are rampant in Ameristan i.e. the spaces between the urban areas that are still tied to reality, the part where the rebooted brain of the billionaire creates his own world, to be unseated as main deity by newcomers, and a quest to right that wrong.

Enoch Root makes an appearance again, entering quite dramatically, and seems to indicate he comes from a plane of existence that created our world as a simulation. Towards the end Zula says ‘I understand light speed now’ as an externally applied constraint, the limit posed by the processing power available to our virtual environment. The speed at which changes propagating from an event can be calculated determines the speed of causality in the piece of spacetime we’re in. That’s the moment Enoch Root says to her his task here is complete and he vanishes into the fog, suggesting he’s leaving our sim, to return to another plane of existence. Not so much turtles all the way down, as sims all the way up?

17 Jan 20:46

Where We Feel Emotion

by swissmiss

This graphic about where we feel emotion made me look.

17 Jan 20:45

Encrypted Client Hello: the future of ESNI in Firefox

by Kevin Jacobs

Background

Two years ago, we announced experimental support for the privacy-protecting Encrypted Server Name Indication (ESNI) extension in Firefox Nightly. The Server Name Indication (SNI) TLS extension enables server and certificate selection by transmitting a cleartext copy of the server hostname in the TLS Client Hello message. This represents a privacy leak similar to that of DNS, and just as DNS-over-HTTPS prevents DNS queries from exposing the hostname to on-path observers, ESNI attempts to prevent hostname leaks from the TLS handshake itself.

Since publication of the ESNI draft specification at the IETF, analysis has shown that encrypting only the SNI extension provides incomplete protection. As just one example: during session resumption, the Pre-Shared Key extension could, legally, contain a cleartext copy of exactly the same server name that is encrypted by ESNI. The ESNI approach would require an encrypted variant of every extension with potential privacy implications, and even that exposes the set of extensions advertised. Lastly, real-world use of ESNI has exposed interoperability and deployment challenges that prevented it from being enabled at a wider scale.

Enter Encrypted Client Hello (ECH)

To address the shortcomings of ESNI, recent versions of the specification no longer encrypt only the SNI extension and instead encrypt an entire Client Hello message (thus the name change from “ESNI” to “ECH”). Any extensions with privacy implications can now be relegated to an encrypted “ClientHelloInner”, which is itself advertised as an extension to an unencrypted “ClientHelloOuter”. Should a server support ECH and successfully decrypt, the “Inner” Client Hello is then used as the basis for the TLS connection. This is explained in more detail in Cloudflare’s excellent blog post on ECH.

ECH also changes the key distribution and encryption stories: A TLS server supporting ECH now advertises its public key via an HTTPSSVC DNS record, whereas ESNI used TXT records for this purpose. Key derivation and encryption are made more robust, as ECH employs the Hybrid Public Key Encryption specification rather than defining its own scheme. Importantly, ECH also adds a retry mechanism to increase reliability with respect to server key rotation and DNS caching. Where ESNI may currently fail after receiving stale keys from DNS, ECH can securely recover, as the client receives updated keys directly from the server.

ECH in Firefox 85

In keeping with our mission of protecting your privacy online, Mozilla is actively working with Cloudflare and others on standardizing the Encrypted Client Hello specification at the IETF. Firefox 85 replaces ESNI with ECH draft-08, and another update to draft-09 (which is targeted for wider interoperability testing and deployment) is forthcoming.

Users that have previously enabled ESNI in Firefox may notice that the about:config option for ESNI is no longer present. Though we recommend that users wait for ECH to be enabled by default, some may want to enable this functionality earlier. This can be done in about:config by setting network.dns.echconfig.enabled and network.dns.use_https_rr_as_altsvc to true, which will allow Firefox to use ECH with servers that support it. While ECH is under active development, its availability may be intermittent as it requires both the client and server to support the same version. As always, settings exposed only under about:config are considered experimental and subject to change. For now, Firefox ESR will continue to support the previous ESNI functionality.

In conclusion, ECH is an exciting and robust evolution of ESNI, and support for the protocol is coming to Firefox. We’re working hard to make sure that it is interoperable and deployable at scale, and we’re eager for users to realize the privacy benefits of this feature.

The post Encrypted Client Hello: the future of ESNI in Firefox appeared first on Mozilla Security Blog.

17 Jan 18:57

The continuing rise of virtual private neighbourhoods

People are increasingly hanging out in small, private communities. Global timelines and newsfeeds won’t come back.

The shift looks something like this:

As covered by this excellent edition of Garbage Day, Twitter shows all the characteristics of a rotting online community. How to recognise a rotting community, quoting the full list:

Power users aggressively dominate discussion on the site.

Public harassment and inter-community elitism has created a culture of indirect communication, where users no longer directly say what they’re actually trying to say.

There is no longer any internal cultural memory.

Users have become so obsessed with the minutiae of the community that the site now functions as a meta discussion of itself instead of whatever its intended purpose was.

Poor or lax moderation has created a sense that nothing on the site is genuine - fake users, fake trending topics, fake threads, fake engagement.

Users, reacting to the inauthentic behavior, public harassment, and elitism that occurs due to bad moderation, create their own self-policed communities within the larger community, which typically only exacerbates these problems and creates warring factions within the site.

– Ryan Broderick, Garbage Day (2 Dec, 2020)

Meanwhile, only the olds use Facebook (including me), but everyone younger has mostly vanished, being increasingly uncomfortable with

  • ad microtargeting and its rapacious data appetite
  • living your online life in the open with the perpetual risk of context collapse and your whole identity blowing up from one misguided status update that another group takes offence to.

So this is the end of the era of global timelines. Who would take on the responsibility of content moderation to build another one.

Where is everybody going instead?

Well there are the peer-to-peer and small group spaces of texting and WhatsApp.

But the problem of peer-to-peer is that you don’t get those joyous, serendipitous moments of running into like-minded friends-of-friends.

In-between:

There are private Discords, private Slack channels, and a flurry of spatial interfaces in development. They’re immune to data harvesting, invisible from search engines, and there’s no context collapse – good fences make good neighbours.

As the global timelines get abandoned, this is where people are homesteading.

And doing all the usual things of chatting, sharing links, giving support, falling out, making jokes, and all the rest.

…Or so I’m told.

I’m no zillennial hanging out in a handful of private Discords. Instead I have a blog, which is like being a big noise in ham radio, or an unironic aficionado of VHS.


My own, limited experience of this, from back in 2015:

If the global timeline feels like a city, a private Slack group feels like a neighbourhood.


I do not include in this “virtual neighbourhood” space media like newsletters and podcasts, both growing fast rn.

Perhaps what we’re seeing is the disentangling of social media back into social and media: newsletters and podcasts are best understood as being part of the media spectrum, even if many of them are smaller and have community spaces attached. And Discord space, Slack spaces, etc, these virtual neighbourhoods are pure social.


I’d love to understand these virtual neighbourhoods better.

My hunch is their optimum size will hover around the Dunbar number of ~150, fewer if you’re just looking at active members (you need a mix of active and less active in any community).

But has anyone published any research on this?

What is the distribution of populations of private Discord groups and other similar spaces? How many groups do people belong to? How does this time take away from other activities? Is there a typology of groups and how they start? How well do people know each other? Is there a typical lifecycle? Are there temporary groups and persistent groups? Is there a difference in the culture created vs the global timelines? Etc.

And let’s assume that this grows into the dominant mode of socialising online in the 2020s:

  • What does this mean for the nature of celebrity?
  • What about the businesses that rely on data capture, and in particular what about advertising?
  • Will these make echo chambers problems worse or better?
  • What are the new product opportunities?
17 Jan 18:57

APIs from CSS without JavaScript: the datasette-css-properties plugin

I built a new Datasette plugin called datasette-css-properties. It's very, very weird - it adds a .css output extension to Datasette which outputs the result of a SQL query using CSS custom property format. This means you can display the results of database queries using pure CSS and HTML, no JavaScript required!

I was inspired by Custom Properties as State, published by by Chris Coyier earlier this week. Chris points out that since CSS custom properties can be defined by an external stylesheet, a crafty API could generate a stylesheet with dynamic properties that could then be displayed on an otherwise static page.

This is a weird idea. Datasette's plugins system is pretty much designed for weird ideas - my favourite thing about having plugins is that I can try out things like this without any risk of damaging the integrity of the core project.

So I built it! Here are some examples:

roadside_attractions is a table that ships as part of Datasette's "fixtures" test database, which I write unit tests against and use for quick demos.

The URL of that table within Datasette is /fixtures/roadside_attractions. To get the first row in the table back as CSS properties, simply add a .css extension:

/fixtures/roadside_attractions.css returns this:

:root {
  --pk: '1';
  --name: 'The Mystery Spot';
  --address: '465 Mystery Spot Road, Santa Cruz, CA 95065';
  --latitude: '37.0167';
  --longitude: '-122.0024';
}

You can make use of these properties in an HTML document like so:

<link rel="stylesheet" href="https://latest-with-plugins.datasette.io/fixtures/roadside_attractions.css">
<style>
.attraction-name:after { content: var(--name); }
.attraction-address:after { content: var(--address); }
</style>
<p class="attraction-name">Attraction name: </p>
<p class="attraction-address">Address: </p>

Here that is on CodePen. It outputs this:

Attraction name: The Mystery Spot

Address: 465 Mystery Spot Road, Santa Cruz, CA 95065

Apparently modern screen readers will read these values, so they're at least somewhat accessible. Sadly users won't be able to copy and paste their values.

Let's try something more fun: a stylesheet that changes colour based on the time of the day.

I'm in San Francisco, which is currentl 8 hours off UTC. So this SQL query gives me the current hour of the day in my timezone:

SELECT strftime('%H', 'now') - 8

I'm going to define the following sequence of colours:

  • Midnight to 4am: black
  • 4am to 8am: grey
  • 8am to 4pm: yellow
  • 4pm to 6pm: orange
  • 6pm to midnight: black again

Here's a SQL query for that, using the CASE expression:

SELECT
  CASE
    WHEN strftime('%H', 'now') - 8 BETWEEN 4
    AND 7 THEN 'grey'
    WHEN strftime('%H', 'now') - 8 BETWEEN 8
    AND 15 THEN 'yellow'
    WHEN strftime('%H', 'now') - 8 BETWEEN 16
    AND 18 THEN 'orange'
    ELSE 'black'
  END as [time-of-day-color]

Execute that here, then add the .css extension and you get this:

:root {
  --time-of-day-color: 'yellow';
}

This isn't quite right. The yellow value is wrapped in single quotes - but that means it won't work as a colour if used like this:

<style>
nav {
  background-color: var(--time-of-day-color);
}
</style>
<nav>This is the navigation</nav>

To fix this, datasette-css-properties supports a ?_raw= querystring argument for specifying that a specific named column should not be quoted, but should be returned as the exact value that came out of the database.

So we add ?_raw=time-of-day-color to the URL to get this:

:root {
  --time-of-day-color: yellow;
}

(I'm a little nervous about the _raw= feature. It feels like it could be a security hole, potentially as an XSS vector. I have an open issue about that and I'd love to get some feedback - I'm serving the page with the X-Content-Type-Options: nosniff HTTP header which I think should keep things secure but I'm worried there may be attack patterns that I don't know about.)

Let's take a moment to admire the full HTML document for this demo:

<link rel="stylesheet" href="https://latest-with-plugins.datasette.io/fixtures.css?sql=SELECT%0D%0A++CASE%0D%0A++++WHEN+strftime(%27%25H%27,+%27now%27)+-+8+BETWEEN+4%0D%0A++++AND+7+THEN+%27grey%27%0D%0A++++WHEN+strftime(%27%25H%27,+%27now%27)+-+8+BETWEEN+8%0D%0A++++AND+15+THEN+%27yellow%27%0D%0A++++WHEN+strftime(%27%25H%27,+%27now%27)+-+8+BETWEEN+16%0D%0A++++AND+18+THEN+%27orange%27%0D%0A++++ELSE+%27black%27%0D%0A++END+as+%5Btime-of-day-color%5D&_raw=time-of-day-color">
<style>
nav {
  background-color: var(--time-of-day-color);
}
</style>
<nav>This is the navigation</nav>

That's a SQL query URL-encoded into the querystring for a stylesheet, loaded in a <link> element and used to style an element on a page. It's calling and reacting to an API with not a line of JavaScript required!

Is this plugin useful for anyone? Probably not, but it's a really fun idea, and it's a great illustration of how having plugins dramatically reduces the friction against trying things like this out.

17 Jan 18:56

The Wrong Way To Pick A Community Platform

by Richard Millington

“I’ve already reached out to a few platform vendors”

….is a sentence message I’ve learned to dread.

It’s usually a sign they’re trying to select a platform before determining the best approach to a community. Once people reach out to vendors, they fall in love with a particular vision for the community which is hard to shift.

A friend of mine recently reached out for advice on which platform to pick.

He had narrowed the list down to four options.

What surprised me was how different the four platforms were. One was a major enterprise platform, one was a forum-based platform, one was an instant messaging platform, and one was a hybrid of all three.

Each platform was suited to an entirely different approach to building a community.

One would’ve been great as a customer support channel and enabling members to share content with one another. Another would’ve been great for creating a tighter, more intimate, sense of community.

One platform might’ve been ideal for an organisation that needed to tightly integrate the community with existing systems, another was perfect for a separate, undercover, experience that could be launched quickly and cheaply.

You should decide the approach your community is taking before you shortlist (and contact) potential communities.

If you’re trying to decide between different platforms in different categories, you have a strategy problem.

This is a terrible way to build community!

For starters, you’ll end up picking the platform with the most persuasive pitch (often the one that promises success in the most hyperbolic terms) instead of looking for the platform which best suits your needs (you don’t know your needs yet).

Second, you’re beginning with the needs of the vendor rather than the needs of your audience and your organisation.
For sure, you might get lucky. The platform you pick might wind up being the perfect platform for your community’s needs. But if you haven’t undertaken your audience research, gathered detailed requirements from your stakeholders, prioritised a list of items you need, you have no way of knowing that.

17 Jan 18:56

App Spotlight: Sound Recorder

by David Hamner

Sound Recorder is simple to install and a powerful way to record in the studio or on the go:

The app itself is deceptively simple, it offloads all of the audio device setup and selection to the OS layer, which can be managed in settings:

With the brunt of the setup automatically handled by PureOS, you can set up the basics from within the app menu.

Actually using the interface could not be more intuitive. Simply hit record to record, and click a past entry if you want to listen to it.

A Quiet Solution:

Silence is ideal for any recording studio or sound room. The fans in a standard x86 computer can impact the end result if kept too close to the mic. When I first built my sound closet room I cabled long runs of USB and power to prevent having to use a computer near my mic. This sucked as I had to print out my script and I couldn’t check the recording status during the session.

Being able to read the script off a screen and having access to the audio controls drove me and my roommate to build this fanless monstrosity:

This did the trick for years but did suffer from major stability issues which were endlessly frustrating to deal with mid recording. Now with USB-C dock support getting better and better, using the Librem 5 has solved all my recording issues and has now permanently replaced my sound room computer.

Discover the Librem 5

Purism believes building the Librem 5 is just one step on the road to launching a digital rights movement, where we—the-people stand up for our digital rights, where we place the control of your data and your family’s data back where it belongs: in your own hands.

Order now

The post App Spotlight: Sound Recorder appeared first on Purism.

17 Jan 18:56

Brave new world

by Chris Grey
As trailed in the previous post, this blog is now retitled ‘Brexit & Beyond’ to reflect that we are now in a significantly new stage of the Brexit process, with the UK having left the EU, finished the transition period, and agreed a new arrangement for future trade and cooperation.  As it has since 2016, the blog will continue to provide a broad non-technical analysis of the political, economic and cultural events associated with Brexit, normally on a weekly basis, drawing on a wide range of news sources and expert technical commentaries.

It is a new stage, but the new title is meant to suggest that it is also a continuation, not least because of the numerous loose ends left, and reviews created by, the EU-UK Trade and Cooperation Agreement (TCA). These are helpfully summarized in a diagram created by Professor Simon Usherwood of Surrey University. More generally, there will be a whole new institutional architecture, in the Partnership Council and its sub-bodies, within which the UK-EU relationship will unfold.

Moreover, from now on it will be possible to compare the realities of Brexit with what was claimed or promised for it. I don’t think that doing so amounts to “leap[ing] with glee onto every bureaucratic bump in the road out of Europe”, as counselled against by the columnist Clare Foges in a thoughtful article in The Times this week (£), and it most certainly isn’t, and shouldn’t be taken as, what she rightly calls “gruesome” relish in “businesses suffering or Leave-voting areas getting poorer”. Regular readers of this blog will know that I have repeatedly warned against that on grounds of both principle and political tactics.

Rather, it has two purposes, one being the primarily analytical one of making sense of events and the other the political one that it is legitimate and necessary to hold accountable those who made these claims and promises. Truth matters; at least I think it does, or at any rate that it should.

So whilst it would perhaps be churlish - and, anyway, impossible – to record every such “bureaucratic bump” it is likely that many of them will be relevant to those two purposes if, for example, they are in fact instances of the non-tariff barriers to trade that Boris Johnson has told the public do not exist. For as Professor Ian Begg of LSE writes on the Federal Trust blog “the essence of the [TCA] is the re-imposition of non-tariff barriers swept away in the process of creating the EU single market”. In that sense, “bureaucratic bumps” are a feature, not a bug, of Brexit.

Two kinds of claim for Brexit

It is already clear that assessing those Brexit realities is going to be as fraught with difficulty as it was for the original claims and promises. For already there have been a string of misleading and sometimes downright false statements made by Boris Johnson and others about what those realities are. Yorkshire Bylines have begun a useful register compiling and debunking them.

It’s worthwhile to draw a distinction between cases where there is at least some room for different interpretations with those which are plain lies.

In the former category an example might be the abolition of the ‘tampon tax’ (i.e. VAT on women’s sanitary products) in that it is true that the UK was able to do this when it did – on 1 January – because of Brexit, but it was in train to happen anyway and, arguably, might have happened earlier had the UK continued its previous push for a change in EU rules which fell by the wayside once the Brexit process got underway. Still, it’s not entirely bogus to interpret it as a benefit of Brexit (though strange that some of those most vociferously doing so had voted against it).

In the second category is the statement by Northern Ireland Secretary Brandon Lewis that “there is no ‘Irish Sea border’”. This is simply untrue, because that is precisely what was created by the Withdrawal Agreement yet Lewis is quite shameless in denying it, as he also did last February. It was absurd then, but how much more so now when there is direct evidence of companies in Great Britain suspending deliveries to Northern Ireland, and direct evidence of delays at the border? Lewis’s position is all the more ludicrous because, at the same time, he is extolling the unique benefits of Northern Ireland’s dual status. And apart from the fact that the Irish Sea border is part and parcel of that status, it begs the obvious question of why, if it is so advantageous for Northern Ireland to be in the goods single market and customs union, it makes sense for Great Britain not to be?

Slightly less brazen, but almost equally misleading, is Home Secretary Priti Patel’s claim (£) that the UK’s security is enhanced by Brexit. I briefly indicated in my previous post why this is not so, and it has since been explained in more detail (and with more authority) by Julian King, former EU Commissioner for the Security Union. A key issue, as he confirms, is real-time access to EU databases and, more generally, patching administrative solutions to the gaps created by being a third country. There are also still unresolved issues about whether the EU will grant the UK data adequacy equivalence (which also matters hugely for trade) and about how to replace the European Arrest Warrant. Overall, KIng describes what has been agreed as “a damage limitation exercise”. That is worthwhile in itself, of course, but it can hardly be described ‘making Britain safer’.

Borders and business

Brexiters have been quick to point out that there have not been huge lorry queues at channel ports in the first few days since the end of transition (with John Redwood dishonestly contrasting this with the single market by referring to the pre-Christmas chaos caused by Covid). But few with detailed understanding of the issues had anticipated there would be, partly because firms had been stockpiling in advance and partly because of the new year holiday. Now, of course, there is a new lockdown, further suppressing trade flows.

Nevertheless, there have already been some reports of freight being turned away at the borders because of a lack of correct documentation, and these are likely to increase according to significant new industry warnings of much greater disruption in prospect, especially, though not limited to, Northern Ireland. The long warned of shortage of vets to undertake post-Brexit SPS tests has caused some major delays to fish exports. There have been some supply chain disruptions, a high-profile example being shelves empty of ready meals in M&S stores in France, illustrating that even some very large firms were not fully prepared. There is also some evidence that EU-based truck drivers are unwilling to take on trips to the UK.

Some of these effects will be short-term, as businesses get used to the new customs requirements or adjust supply chains, though that in itself is indicative of the foolishness of having made a deal at the last moment, so that there was no genuine transition or implementation period, and the more so in the middle of a pandemic. In any case, it can’t be assumed that they will have no long-term impact because if customers find that a few of their orders do not arrive they may well switch, permanently, to new suppliers.

This is an aspect of the more significant long-term danger, as suggested in my previous post, being not so much of queues at ports but that trade simply reduces because of the increased burden of customs formalities. EU importers of UK goods now have to do extra customs paperwork, which they will not do if they can source the same or similar products from within the EU. Similarly, several UK firms have already announced (£) that they will permanently or temporarily cease to export to the EU because of the additional customs processes as well as, in some cases, the costs of having to duplicate the UKCA and CE safety marks, an especially absurd consequence of Brexit.

Apart from the re-introduction of customs formalities, new UK VAT rules which started on 1 January have put new requirements on EU exporters (and those of all countries) of low value goods to the UK to register for, collect, and pay VAT in the UK. Already, several have announced it is not worth their while doing so: they will simply cease to offer their products in the UK market, either temporarily or permanently. Edwin Hayward, author of Slaying Brexit Unicorns, has produced a listing of some 140 examples of companies which for this or some other Brexit-related reason are not, at least for now, exporting to the UK. This is undoubtedly the tip of a very large iceberg.

The VAT change is a complex one both in itself and in how it relates to Brexit, which illustrates how, from now on, it will often be difficult to disentangle exactly what is caused by Brexit and what would have happened anyway. For these changes are due to happen on an EU-wide basis later this year so would have applied to the UK as well had it still been a member or in transition. However, crucially, firms in member states will be able to use the EU’s ‘one stop shop’ single VAT return, avoiding the need to register in each country, but that will not cover the trade they do with UK customers which will require a separate, UK-only, registration. So, in that sense, this is a new Brexit impediment to EU-UK trade. Moreover, it creates particular complexities for Northern Ireland because of its dual status following Brexit.*

So we are beginning to see the serious limitations of a free trade deal, as compared with membership of the single market and customs union. Fishermen are learning that ‘taking back control of our waters’ brings with it new barriers to their largest market, the EU. The food and drink industry is discovering (£) that ‘zero tariffs, zero quotas’ does not help when goods fall foul of ‘rules of origin’. Thus when goods arrive from the EU to UK distribution hubs and then go back to customers in the EU, they face full tariffs. It is not just food and drinks companies affected, of course, but at least 50 major UK retailers including B&Q, Boots and Dixons.

Meanwhile, there has been an immediate and dramatic flight of trading in EU shares from the City of London (£) to EU financial centres – not a huge market in itself, but a sign that where business has international mobility it will move to wherever it is most advantageous. A senior fund manager has described this as “a stunning own goal for the UK [which] is only the beginning”, and the consensus view is that it is business which will not return to the UK (£).  Less dramatic (except perhaps for those directly affected), 80,000 UK-run websites with an EU domain name have been suspended. Anyone concerned that this will affect the Leave.EU site need not worry, though, as our patriotic friends took the precaution of re-registering it in Ireland.

The deep roots of these problems

These kinds of problems arise in the first instance from the nature of TCA, but their roots lie very deep within the entire Brexit project. What was concealed, during the Referendum and thereafter, under the meaningless phrase ‘access to the single market’ was a complete misunderstanding of what the single market is, allied with a highly dated understanding of free trade being mainly about removing tariffs rather than non-tariff barriers, and a total ignorance of the nature of modern supply chains. This in turn is reflected in the relative absence of provision for services in the TCA. 

It is of course much too early to know how all this is going to affect the British economy (or, to be less abstract, jobs, prices and tax revenues). Whilst many of the effects already seen were predicted (and dismissed as Project Fear), as were many others which will become evident soon given the inevitable consequence of creating new barriers to trade with the UK’s largest trading partner, others will be unanticipated and will take many months, if not years, to emerge. Often, they will involve highly technical things – VAT rules and rules of origin, for example – that few will understand and which will seem far removed, both conceptually and temporally, from the Referendum vote. Brexit is akin to an economic depth charge, with the effects only slowly rippling out over a wide area.

How do Brexiters respond?

Brexiters have three inadequate and also contradictory responses to all of this. The first is to say that it is entirely irrelevant and simply an example of ‘remainers’ failing to understand that Brexit is about taking back control and the reassertion of sovereignty. Their sovereignty argument does not stack up even in its own terms, as was once demonstrated once again this week in an elegant essay by Public Law Professor Mark Elliott of Cambridge University. But even supposing that it did, this isn’t at all how they are ‘selling’ Brexit. If it were, they would not be making all the bogus claims about how much Brexit is, or will, improve things. They would honestly acknowledge the costs, economic and non-economic, but say they were worth paying.

The second response is an extension of the first, which is to deny the problems that Brexit is creating, or to downplay or trivialise them. In effect, this is to reprise the Project Fear narrative, but with the added dishonesty of denying demonstrable facts and not just well-informed predictions. Almost inevitably, such denials are accompanied by irrelevant (and usually inaccurate) reference to some of the macroeconomic forecasts of 2016.

The third response is to make claims about how, in the future, any immediate negative effects will be overcome (what we might call ‘Project Hope for the best’). Domestic production will increase to substitute for imports from the EU (which it may, but to what extent and with what implications for cost and/or quality is questionable) and/or new global markets will be developed (which they may, but the gravity model of trade, which applies almost as much for services as for goods, suggests limits to the extent of that). Not only are such claims dubious but, again, they give the lie to the line that the case for Brexit is one of sovereignty, regardless of the economic cost. Brexiters still can’t decide whether their project is one of political principle or economic pragmatism or, more accurately, they flip opportunistically to the one whenever the other is discredited.

The demand to accept Brexit, or to move on

But I think there is a much deeper aspect to such arguments and counter-arguments, deriving from the complex political psychology of Brexit. Ever since the Referendum it seems as if Brexiters have both expected and needed those who disagreed with them to recant and to acknowledge that, after all, Brexiters had been right. Of course, it can be said that remainers have also sought to convince their opponents that they made a mistake. But I don’t think that, had remain won, anyone would have expected Brexiters to suddenly say that staying in the EU was the right decision or even tried to get them to do so. In any case, asking people to accept an unwanted status quo is very different from asking them to support an unwanted radical change.

Several factors lie behind this Brexiter need for affirmation. It is in part an insecurity, based perhaps on a lurking knowledge that what they have brought about is so damaging. Related to that, for some it is ‘remainer negativity’ which is the cause of any damage or, at least, which has soured what was supposed to be a moment of triumph. A stronger version of that is, to the extent that Brexiters believe themselves to have been a ‘resistance’ movement that has enacted a national liberation, they expected the whole of the country to welcome it, and are genuinely bemused that at least half the country does no such thing. And at least for some of the most vociferous Brexiters that links to a populist authoritarianism, in which opponents are derided as traitors and saboteurs.

So the early jibes that remainers should ‘suck it up’ and accept ‘the will of the people’ morphed into the expectation that they bestow ‘losers’ consent’ and now into the demand that they at least ‘put Brexit behind them’ or at most ‘get behind Brexit’ so as to, as ERG leader Steve Baker suggests, ‘move forward together’. Lurking behind these escalating demands lies an implicit and much darker accusation than that of being ‘bad losers’. It was evident this week when numerous Brexiters, including public figures, equated those who had campaigned peacefully for a second referendum with the insurrectionist mob which stormed the US Capitol building on Wednesday.

Apart from being a morally contemptible and intellectually vacuous false equivalence, it is hardly likely to engender ‘togetherness’ and is ironic given that it was Nigel Farage who once threatened to “pick up a rifle” if a “proper Brexit” was not delivered, and that numerous Brexiters talked of riots and civil disorder in the event of another referendum. And, in case anyone has forgotten, the only example of lethal violence in relation to Brexit was the murder of Labour MP Jo Cox by a far-right terrorist.

Even apparently reasonable calls for unity are all too often couched in divisive ways. For example, as a letter to The Times (£) put it this week, “we should all of us be looking forward to the future and how we can now help our country succeed. This includes ‘remoaners’ who wish to wallow in the past.” It hardly needs to be pointed out that to express that aspiration in such heavily loaded and pejorative terms makes it unlikely to be realised.

Even so, it is the force of such demands which, I think, explains why Keir Starmer has been and still is so reluctant to even talk about Brexit and its effects. I don’t think that is a viable stance, politically, for how can so central a policy be treated by the official opposition as taboo? It has only been just about feasible because of the urgency of the coronavirus crisis. Certainly for society more widely it is unrealistic because, like it or not, the referendum result – partly because of its closeness, partly because of the way it was achieved – could never be enough in itself to create a widespread endorsement of Brexit. That was compounded by the failure to create any process to develop such an endorsement and, on the contrary, to pursue Brexit in a way which maximized alienation amongst its opponents.

In that sense, too, this new phase of Brexit is not a radical break with what has happened over the last five years, but grows organically out of it. Of course everyone must ‘accept’ Brexit and the TCA in the specific sense that these are established facts, but that doesn’t preclude people from actively working to deepen the TCA or, for that matter, to rejoin the EU. Nor does it stop people passively resenting what has been done and deploring its consequences for themselves and others, or mean that they will refrain from pointing these out. And this will not be assuaged, but rather exacerbated, if the Brexiters continue to lie about what those consequences are and even further inflamed if, as Daniel Hannan proposes, they now proceed to use Brexit to enact the deregulatory agenda that, undoubtedly, has always been the motivation of some of them.

Far from Brexit being over, we are at the beginning of the very long and hard road that lies beyond.

 

*I am extremely grateful to Richard Asquith, VP for Global Indirect Tax at Avalara, for patiently answering my questions about the new UK VAT rules. He is not, of course, in any way responsible for what I have said about them, nor for any errors I have made in what I have said.

17 Jan 18:41

Today’s outside time was a rainy walk & sto...

Today’s outside time was a rainy walk & stop in at @timbertrain depot. I’m loving the super cute skull-with-toque design on the t-shirt.

17 Jan 18:41

Engineering vs writing code, @benwerd

“The goal is a creative, detail-oriented [software] team that finds the best solution using the full weight of their diverse skills and creativity, and has fun doing it.”

Ben Werdmüller, Engineering vs writing code

Somewhere in here is a longer discussion about building products vs solutions, understanding who you’re building for, and even on to things like learning by doing, prototyping, and more.

Building a business built on software vs writing code to solve a problem for yourself is maybe the two aspects to contrast?

I don’t think the distinction between engineering and programming / hacking that Ben makes is the most useful one.

And perhaps this is my Canadian perspective where “engineer” is a protected, professional term like doctor or lawyer.

So much of software still appears to be based on fashion.

But I do take Ben’s point. This concept of rigor is interesting to me as I think “beyond open source”. I use to think that the license of a software was one of its most important aspects. Now I feel that way more about open data structures, standards, and protocols.

If we agree on the protocol, we can always build the code again, and it can be built by hackers or by engineers as long as the protocol still works.

Do protocols need to be rigorously designed? And we’re back to square one ;)

17 Jan 18:38

Today’s #eastvan coffee shop is Pallet. No rain...

Today’s #eastvan coffee shop is Pallet. No rain and a touch of blue sky!

Plus: view from the corner of Meditation Park. East Van’s waterfront is mostly blocked off because it’s the commercial Port of Vancouver space. Wall Street has several small view parks like this.

17 Jan 18:38

I had sourdough bread success today. I’ll take it.

I had sourdough bread success today. I’ll take it.

17 Jan 05:01

DALL·E: Creating Images from Text

OpenAI, Jan 06, 2021
Icon

Here's the headline: "We’ve trained a neural network called DALL·E that creates images from text captions for a wide range of concepts expressible in natural language." Oh, but do look at the article; it is chock-full of examples of images created for different types of phrases and expressions. "It has a diverse set of capabilities, including creating anthropomorphized versions of animals and objects, combining unrelated concepts in plausible ways, rendering text, and applying transformations to existing images." The MIT Technology Review article loved the example of the avocado-shaped chair (and frankly, so do I, but I also like the snail with the texture of a harp and the baby daikon radish in a tutu walking a dog). The name is a portmanteau of the artist Salvador Dalí and Pixar’s WALL·E. Personally, I'm waiting for BALL-E, an AI that creates and sends vacation pictures to your social media accounts.

Web: [Direct Link] [This Post]
17 Jan 05:01

A Distributed Systems Reading List

Dan Creswell, GitHub, Jan 06, 2021
Icon

This is a really good reading list devoted to distributed systems. If you're just learning about them, start here. You'll find accessible accounts of some of the key considerations (with odd-sounding names like Paxos consensus, Byzantime Generals, consistency models, and gossip protocols. None of this is easy sledding, and there's a lot to learn about actual implementation after, but this list frames the target people are working toward. See more on Dan Creswell's GitHub page. If you don't like this reading list, here's another. Image: Stanislav Kozlovski, who offers a nice introduction to all of it.

Web: [Direct Link] [This Post]
09 Jan 03:25

Headphones need smart transparency mode with voice recognition

Headphones should have smart transparency mode, letting in only specified sounds and catching all other noise at an audio firewall.

I have a vague memory that I first ran across this concept in ear defenders for hunters. These were “transparent” in that the hunter needs to hear the distant sound of a stag stepping through the undergrowth – and then active noise cancelling would kick in instantly for a rifle shot.

And that’s clever. I would like the same functionality but in reverse.

I’ve got my headphones on right now because I need to focus. But I’m concerned I might miss the postman if he bangs at the door.

If I had fancy modern headphones, the answer would be to turn on transparency mode, so that my music is layered with the ambient noise of my environment. But that’s exactly what I don’t want! I don’t want to hear people talking downstairs, or a truck idling outside my window.

What I want is active noise cancelling, with smart transparency mode that kicks in automatically if

  • there is a knock at the front door
  • the cats meows, or there’s any kind of crying
  • or, somebody says my name.

(The final one like getting an @mention notification but in real life.)

I want to hear those things, and nothing else.

I note that Apple recently and quietly launched, as an accessibility feature on iPhone, Sound Recognition: Your iPhone can continuously listen for certain sounds - such as a crying baby, doorbell, or siren - and notify you when it recognizes these sounds.

So my guess is that this is on the roadmap, and AirPods will end up being quite the app platform.

(Or rather, given they have spatial audio, and AirPods share a high-precision ultra-wideband, spatial positioning chip with the watch and also phones, quite the component in Apple’s inevitable not-too-distant-future wearable augmented reality app platform.)

Okay back to work.


P.S. I have just been reminded that, back in February 2019, on the bus a small child thought my Apple AirPods were a new kind of cigarette and that I was smoking with my ears.


Update: On Twitter, Hans Gerwitz suggests I want to allow my partner’s voice to punch through. Should be pretty “easy” if we’re both wearing them, eh?

Which is smart! And weirdly ageographic. It would work the same if you were in the same room or 1,000 miles apart.

That’s the second time ageography has come up recently. Perhaps it’s a thing.

09 Jan 03:24

How on earth do we run 2021 admissions now?

David Kernohan, Wonkhe, Jan 08, 2021
Icon

The problem, of course, is that in many cases test results (ie., "A levels") are not available to UK universities due to pandemic restrictions. So how to preserve the fairness of admissions (or at least, the appearance of fairness)? If it were me, I would do away with the admissions process - after all, we're in the age of digital learning and can, in theory at least, support much larger student numbers, and can also lower the stakes for students. Offer first-year courses as open-admission MOOCs. Offer preparatory MOOCs for those who might lack the skills or abilities. As people make their way through the MOOCs, scale online learning to meet the resulting demand. Focus on offering learning to anyone who has the determination and ability to master the discipline. Though I admit - 'education for all' is probably too radical a concept for the guardians of the higher education system.

Web: [Direct Link] [This Post]
08 Jan 19:56

U.S. President Donald Trump banned from Facebook ‘indefinitely’

by Aisha Malik

Facebook is extending its ban on U.S. President Donald Trump’s account “indefinitely and for at least the next two weeks.”

Following the violent siege of the U.S. Capitol on January 6th, the social media giant banned Trump from its platforms for 24 hours but has now decided to extend the measure until the “peaceful transition of power is complete.”

“We believe the risks of allowing President Trump to continue to use our service during this period are simply too great,” Facebook CEO Mark Zuckerberg said in a statement.

Zuckerberg states that over the last several years, the company has allowed Trump to use its platform in accordance with its rules and at times removed some of the content when it breached its policies. However, he says the current context is now fundamentally different as the platform is being used to incite violent insurrection.

“The priority for the whole country must now be to ensure that the remaining 13 days and the days after [Joe Biden’s] inauguration pass peacefully and in accordance with established democratic norms,” the statement reads.

Facebook is the first social media platform to extend its temporary ban on Trump’s account. He was temporarily banned from Twitter and Snapchat, and it’s unclear if these platforms will follow Facebook and extend their measures.

Social media giants are attempting to contain the spread of Trump’s messaging amid the ongoing unrest and are imposing restrictions. YouTube, Twitter and Facebook removed a video posted by Trump in which he spread misinformation about election results and told the rioters: “we love you. You’re very special.”

These actions follow increased criticism of social media giants for their role in the spread of propaganda, hate speech and misinformation.

As Facebook has taken this unprecedented step, it’ll be interesting to see if other companies will follow and if it will take such action again, perhaps in other countries around the world as well.

Source: Mark Zuckerberg 

The post U.S. President Donald Trump banned from Facebook ‘indefinitely’ appeared first on MobileSyrup.

08 Jan 19:55

GM rebrands to welcome its all-electric future

by Brad Bennett

GM is rebranding to focus on electric vehicles with a new marketing campaign targeted at what it’s calling ‘Generation E.’

The company’s global chief of marketing, Deborah Wahl, says that “Unlike ever before, we have the solutions, capability, technology and scale to put everyone in an EV. Our new brand identity and campaign are designed to reflect this.”

It should be noted that GM sees ‘Generation E’ not as exclusively young people, but rather people of all ages that want to make a change and help be part of the electric vehicle revolution. The automaker is trying to use an ad campaign to legitimize this section of the market and draw more people into it. For now, I think that Generation E is more commonly know as early adopters. It will be interesting to see if GM’s marketing works and draws more people into the EV fold.

As part of the marketing campaign, General Motor is using Canadian Malcolm Gladwell since his theory from the book The Tipping Point can be applied to mass EV adoption. Beyond Gladwell, viewers may also see “professional surfer and shark attack survivor Bethany Hamilton, fitness instructor Cody Rigsby and gamer Erin A. Simon.”

The last time the company revamped its logo this drastically was in 1964, and this is only the fifth redesign in the automaker’s history.

Beyond the new logo and ad campaign, GM is also pledging $27 million in EV and autonomous vehicle production. It also plans to release 30 electric vehicles globally by 2025.

These new ads focus on the GM Ultium Battery pack, which will be used in the upcoming GMC Hummer and the Cadillac LYRIQ. The company says that this battery will ensure that GM’s EVs have a range of around 450 miles (724km) and that super-fast acceleration EVs are known for.

To make this brand change over concrete, the company is also revamping its website with a modern look on January 11th. The relaunch will happen in the U.S. first but will come to the Canadian site later.

To learn a little more about GM Canada’s stance on EVs read our exclusive interview with GM Canada president Scott Bell.

The post GM rebrands to welcome its all-electric future appeared first on MobileSyrup.

08 Jan 19:54

RT @HamillHimself: Oh PLEASE! Those who violently besieged our capitol are EVERYTHING this administration stands for. Promoted on his socia…

by Mark Hamill (HamillHimself)
mkalus shared this story from mrjamesob on Twitter.

Oh PLEASE! Those who violently besieged our capitol are EVERYTHING this administration stands for. Promoted on his social-media for months, supported in person on with an on-site speech. EVERYTHING he has ever said or done since coming down the escalator has been leading to this twitter.com/atrupar/status…

"Those who violently besieged our capitol are the opposite of everything this administration stands for," claims Kayleigh McEnany of rioters who were incited by the president. She then abruptly walks off without taking questions.

Here's the entire event. pic.twitter.com/yl5f2tgYRY




7951 likes, 1787 retweets

Retweeted by James O'Brien (mrjamesob) on Friday, January 8th, 2021 1:58pm


53539 likes, 7856 retweets
06 Jan 03:02

5th January, 4:48 pm

by nobody@domain.com (Cal Henderson)

I can't remember who linked me to blocks, but it's pretty fun. The sound effects are... something else. Unfortunately it seems to sometimes lose your progress.