I rarely finish books that I start reading. Usually I’ll get what I need out of it, plan to finish it, and start a new book in the mean time. Some may shake their heads in disbelief, but I don’t think this is a problem.

While I feel like retain “a lot” of what I read, a few months down the like and I usually only remember the gist. I’m wondering if I couldn’t retain more details if I were to take notes when I read. Writing down notes physically on paper is an option, but transcribing them so I can easily reference them becomes a burden. My handwriting is also horrible as I write with paper so rarely.

One thought that comes to mind is to setup a personal wiki where I can just store anything and everything, including notes on book and articles that I read. I could easily link/categorize content. I don’t necessarily want to make everything I read and write fully public and managing which page are private, which are public could become a chore.

The other thought is, I have this blog why don’t I just write what I learn here. Start interspersing notes about books / magazines that I read here on this blog. It should help me retain more of what I read as well as help people discover new and interesting topics.

Podcasting is perhaps the last bastion of the open web. Where the distribution system isn’t centralized into a single large tech company’s systems. Yes, those big tech companies run directories, but they’re all powered by the same open technology under the hood – rss. Which is quite surprising as Podcasting was popularized by Apple and the iPod. One might argue that the Apple of the early 2000’s is different than the Apple of today and they’d be right. But despite the podcasting boom, they don’t seem to have any interest in closing the podcast kingdom.

I want to help the health of the open web with the next service that I build. While I try to figure exactly what that service will be, I do what I can to help by blogging and mostly syndicating what I write to social media.

Building a service around podcasting or starting a podcast may seem like the simplest way to help reinforce the open web and build a fun new service. But I’m not a podcaster and, most importantly, the world needs another audio blog by a white 30-something software engineer as much as I need a poke in the eye with a sharp stick.

But the open web doesn’t need a new service to make it strong again. It’s easier today than ever before to setup your own site using open source software and start publishing. What it needs is more people participating. More people. Writing more. In more places.

Blogs didn’t die because Google killed reader. Blogs died because people starting posting their content on social media and not their own site.

And so, to help the web, I’ll continue doing what I’ve been doing this past year. I’ll think. I’ll read. And I’ll write. But under my own domain.

I bought a new (shorter) domain for my new email address. One advantage of migrating away from gmail that I hadn’t anticipated is how much calmer I feel.

You see, Gmail technically supports IMAP, but it’s more of a shim. You’re not really supposed to use IMAP with Gmail. And as such I never felt comfortable using a regular email client, instead opting to check mail via the web-app.

Checking mail via a browser is fine but being in a browser switches your mind to a different context. Browsers are meant for consuming. The entire internet is just a simple cmd-T away. So “checking email” became a mental excuse to open my web browser. And then Twitter. And then Hacker News. And then Reddit. Oh, I wonder if I got any new email? And repeat.

Now with a provider where IMAP is a first class citizen, I can use Mail.app again. Mail is set to be pulled in once an hour. No more temptation from a web browser. And an unexpected sense of calm.

I’m back in control.

Each time I watch “Rams”, a documentary of Dieter Rams, something different gets stuck in my head.

This time was brief interaction at the very start of the film. A designer asks how he can propel his work beyond mediocracy. Rams’ response is simple: Find people whom you can collaborate, and to use this collaboration to move beyond mediocracy.

The shift in ability required to elevate your craft is something that often can’t happen alone. Collaborating is the most effective method to improve your work. Looking back, I can pinpoint exactly when and where my sense of design as a developer went from typical engineer to closer to a designer.

I was moonlighting and doing some work with a designer, who was also the lead on the project. I’d submit a revision and she she noticed immediately when my implementation wasn’t perfect. A section was a bit too tall, or a line off by a pixel. Through this back and forth, I began to catch things I didn’t before. My eyes began to see what she saw.

Before I was blind and, through collaboration, I could see.

The mantra in bootstrapping circles for the past while has been “charge more”. And the best way to charge more, over time, is a SaaS. So it’s natural that most bootstrapers default to a SaaS pricing model when starting their new projects and companies.

I’m no different. I build web-apps professionally and have for the past 10 years. Web apps are my bread and butter.

But when I compare my successful SaaS projects to my successful desktop app projects, no matter the metric, I’ve always made more when I charge less and charge it once.

And since I’ve been so focused on SaaS and this charge more mentality, I’ve automatically dismissed ideas that I had that weren’t SaaS.

After attempting to build a number of web apps independently I’ve mostly stopped midway through. The slog of getting the basics perfect, managing servers, dealing with recurring payments, it’s too much like my day-job.

And so I find myself considering going back to my old bread and butter for side-projects: native apps for the Macintosh.

So far I’ve got a few ideas for small utility apps. The ones I’m most interested in are the ones that fit in the open web and apps that can help increase privacy for its users.

It’s been a breath of fresh air and I’m excited to be having fun making things again.

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?