One of the common memes to come from covid19 is to post a before-after photo of a famous city or landmark. The before covid19 photo is the city as we’ve become accustomed to it: brown air full of smog. The after covid19 at the same location, but with naturally blue skies and clear air.

With everyone social distancing and automobile/truck traffic near zero we have been given a rare opportunity. We no longer have to imagine what our air and cities could be like if we didn’t drive pollution emitting vehicles everywhere, we can see, taste, and smell it with our own eyes.

Air pollution from cars and trucks have been suffocating our cities slowly, like one boil’s a frog, so we acclimate and brown air becomes “normal” and the way things have always been. With the burner temporary malfunctioning we can see just what a precarious position we’ve put ourselves in.

When this is all done and our lungs have acclimated to clean air we’ll have a choice: do we go back to the way things were and forget what we’ve experienced, or do we the courage to demand a change.

It’s been almost 5 years since I wrote Slow is not a Dirty Word. Reflecting on the sentiment in that article, that the best things in life take time and we needn’t rush as society tries to force us, didn’t quite go far enough. The concept of Slow should also be applied to the web.

The Slow Web

What is the slow web? At it’s core it’s the idea that we shouldn’t fill our mind with junk and we should connect with those around us. Social media is fast food for the mind. Consuming it feels in the moment, but when you look back you’re not left with anything memorable. Moreover, because of the lack of nuance afforded by platforms, such as Twitter, it encourages behavior based on dopamine and adrenaline impulses.

  • The slow web is formulating your thoughts and expressing them fully.
  • The slow web is about owning what you produce.
  • The slow web is open.
  • The slow web is yours.

The Slow Web in Practice

For most people the slow web is best manifested as a blog. This could be a simple WordPress blog, a micro.blog, a bunch of static files on a server somewhere, anything that works for you. The important part is that you have control of your content. That you can control how and when it appears.

Sharing

So much of sharing on the web these days is based on these social media platforms. So how do you get the word out about your new latest pieces in the slow web?

  • Writing unique content that matters to you and like-minded people will find it via search
  • RSS Feeds (standard in most all blogging systems)
  • POSSE (Publish (on your) Own Site, Syndicate Elsewhere

Ignore the Numbers

Knowing the number of visits to your website or article only serves to feed disappointment when one article doesn’t match your expectations. Avoiding that sense of failure will inevitability lead to a habit of not writing and only consuming.

Privacy

The common methods of tracking visits can not only break your site, it also invites an invasion of privacy for your readers. Are there more privacy-minded ways to collect visitor statistics? Yes. Do you even need to collect the information in the first place? Probably not.

Don’t Over Engineer

As technologies it’s often easy to get caught up in nuts and bolts. We’re want to build our websites to handle all the traffic the world can throw at it, so we setup database servers, build servers, deploy servers, proxy servers, and CDN caches. And for what? A trickle of traffic? All of this could be easily served off a single server, reducing operational complexity and reducing the places where things can break when you really just want to publish a blog.

Making the Jump

Making the jump to the slow web doesn’t mean you cannot participate in the social networks, you’re just changing the terms of engagement. Instead of being the default place to collect your thoughts and ideas, it simply becomes another channel to link back to your site.

Because you no longer tweet every clever thought you have into the void, you’re able to slow down your mind, formulate your thoughts, and take back control.

How many times have you tried to plug in a USB cable and failed on the first try? If you’re like me that number is nearly the number of times I’ve ever attempted to connect a USB device. How many times has this happened with a network cable?

While most people have heard of the term kaizen, or continuous improvement, when talking about Toyota and it’s lean manufacturing principles, fewer have heard of kaizen’s unsung sibling poka-yoke, or mistake proofing.

The main idea of poka-yoke is to draw attention to human errors as they occur, so they can be corrected or prevented, reducing the number of defects in a product.

After observing a defect, we identify the root cause of the mistake, and then apply a fix or change in process that attempts to prevent the same error from happening again. This learning can then be applied to improve the design and function products.

Building your products with poka-yoke requires more initial effort, however the end result is a higher quality and more reliable product.

As developers, our tool to poka-yoke our services are unit tests.

Tests are small pieces of software that exercise a piece of code and verify that it’s behaving as intended. Writing tests are, however, many developers least favorite thing about creating software. We like to build new services and libraries because they’re fun and there is a sense of immediate gratification.

While writing good tests is time consuming and not fun. Setting up the scaffolding, defining test cases, and setting the test data can feel like tedious grunt work without an end in sight. However boring tests may be, they are essential to quality software.

With Kwoosh we’re aiming for high reliability, minimum regressions, and fast operations. Part of our testing strategy is to have “workflow” integration tests. These tests aim to help make certain that our tests are comprehensive while being easy to understand.

Each test currently has a maximum of two tests named ‘test_get_workflow’ and ‘test_post_workflow’. Each test then calls a series of descriptively named helper functions to assert behavior.

def test_get_workflow(self):
      # Make sure that anonymous users are redirected to login
      # and that users are denied access to data that's not theirs
      self.redirect_for_anon_get()
      self.not_found_for_wrong_account()

    # Check that our filter interface is filtering data properly so
    # calls to "mine" only show tasks assigned to me and so forth.
    self.filters_response(self.sub_task_data['title'], 'all', [])
    self.filters_response(self.my_task_data['title'], 'mine',
        [self.sub_task_data['title'],
        self.completed_task_data['title']])
    self.filters_response(self.completed_task_data['title'],
        'complete',
        [self.sub_task_data['title'],
        self.my_task_data['title']])

def test_post_workflow(self):
    # Make sure that all post requests are redirect
    # or return 405 and denied
    self.redirect_for_anon_post()
    self.post_not_allowed()

As a lot of the tests will have some helpers in common (such as confirming anonymous users get redirected to login), we can bundle up these helper methods in small classes and include them into the tests, reducing the amount of code we need to maintain.

Less code = Fewer places for bugs = Less maintenance

Having descriptively named helper methods will allow future me to glance at the test I wrote today and identify exactly what’s being tested, without having to read through hundreds of lines of code.

Quality isn’t many things. Quality isn’t free. It isn’t flashy. It isn’t fancy. And it sure as hell isn’t an accident.

When someone says the word “Slow”, what comes to mind? People driving 10 miles per hour below the speed limit for no discernible reason? Snails sliming their way across the street? Business?

Probably not business. Business is supposed to be quick. We’re supposed to have gotten to market yesterday, rush around, be busy, work overtime, and grow forever.

We’re constantly looking for things quicker. We lay miles upon miles of fiber optic cable to get a measly 1ms faster transfer rate. We want our photos developed in an hour or less. We only have 7 minutes to work out, 4 minutes for a video, 2 minutes to cook noodles, and and 3 seconds for a sound-bite.

We bombard ourselves with pings from everything under the sun so we never miss an instant and we’re always on. For what?

What’s the purpose of all of this? Usually we hear something about demanding customers and better service, but usually it’s ‘shareholder value’. We focus on the short-term and neglect the long-term.

But is this the only way businesses are supposed to be run? Should we just accept it as the one true way? Does achieving all of this make us a success?

No, it doesn’t. This fast-paced always-on life style blends our home-life and our work-life together. We can no longer leave the office and are always just a text or phone call away. This makes sense for mission critical launches or in times of crisis, but it has become the norm.

There’s an alternative. It’s called Slow.

  • Slow is recognizing that we work to live, not live to work and creating a culture that embraces this.
  • Slow is growing at a considered and deliberate pace.
  • Slow is building a business that respects its customers, employees, and community.
  • Slow is quality craftsmanship and livable wages.
  • Slow is long-term thinking and continuous improvement.
  • Slow is sustainable and responsible.
  • Slow is waiting for a well articulated response.
  • Slow is cooking a healthy meal rather than going through the drive-thru.
  • Slow is enjoying a sunrise and not tweeting about it.
  • Slow is enjoying a moment for the moment that it is without needing to documenting it.

The best things in life: lovers, friends, wine — do not come in an instant, an hour, or even a year. They come over time. Slowly.

What can you Slow Down today?