Faustian Bargain

This post is more than a year old. The information, claims or views in this post may be out of date.

I had an interesting encounter on Twitter a few days ago, the implications of which have been stirring in the back of my mind since.

I rejoined the fray about a month ago, with the intention of using Twitter very differently than I had before. For one, I only follow news organizations and people that I know well outside of Twitter. Secondly, I try not to get engaged in hot-button social or political issues, since there’s generally not much benefit that comes out of those conversations.

Mostly though, I had intended to keep more of my posting activity focused on useful things – like the stuff I’m building, or how my journey as a freelancer is progressing. On balance I don’t think I’ve really achieved that so far, and I do honestly lament that fact.

And then something interesting happened. In another thread, I was commenting on Gwen Ngwenya’s resignation as the DA policy head (a big deal in liberal politics), and as usual, I tried to see it from perspectives everybody else was ignoring.

Like how she’s a young, bright, capable black woman who just burned a male-dominated organization for being incapable and disorganized, and what if most of the blowback is just a bunch of insecure men lashing out?

Between that observation and the former tweet, somebody actually took issue with me. Apparently, by both commenting on a political issue in a way they disagreed with, and expressing a desire to talk about things other than politics, I had somehow personally disappointed them.

I didn’t even finish reading the tweet before blocking that person, so I couldn’t tell you what the rest of it said, and my life is not served in any way by knowing it. But it did remind me of Ben Hunt’s mirror engagement theory – an idea that more people should really be familiar with.

I hadn’t realized it up until that point, but apparently I’ve become something of a celebrity to a few people on Twitter. I don’t say that in a self-aggrandizing way – what I mean to say is: I’ve said enough things that enough people want to hear, and by following/liking/retweeting the things I say, some of them feel like they’ve entered into a contract with me.

In that contract (which I’m completely unaware of), I need to provide them with the snippets and hot takes that aligns with their existing beliefs, which they will then boost to their own audiences – in return, I get additional exposure and influence.

For as long as I give them what they want, (they think) they’re giving me what I want – and the moment I break that contract by saying something they disagree with, it becomes my fault.

It’s analogous to sports fans – another concept I don’t really go for. I’ve known fans who get really amped up over their favorite teams and players, then take it deeply personally when these celebrities let them down. Of course, these players have absolutely no idea who their fans are – they’re just playing the game.

Twitter flips that on its head in two ways: It makes it possible for anyone to achieve celebrity status (just tell people what they want to hear), and it makes it possible for anyone to provide realtime feedback when they feel like you’ve violated their implicit contract.

The reason any of this is relevant: I’ve been on Twitter for a long, long time. I joined in 2008, back when there were so few people locally, you could count them by hand.

Twitter back then was an absolute treasure. A network full of early adopters that weathered service outages because it meant connecting with other early adopters. Twitter was the counter-culture, an “underground” network where we could be vulnerable and honest, and find empathy and common ground with people all around the world.

And then it started going mainstream. The Obama campaign used social media to take the White House, setting a precedent in US politics. Over time, here in South Africa, as the uptake grew, so did the potential for political warfare.

It’s a great deal for failing news organizations: Twitter is a constant source of drama, easily repackaged as engaging news segments. With political parties joining the fray, it’s now a battleground of ideas. When Bell Pottinger rolled out their social media offensives as part of the Gupta PR campaign, they were playing from a well-established handbook.

Today, Twitter is basically a toxic hivemind. Give it what it wants, and it rewards you with completely undue social influence – a rapid conduit to getting your message out via established and credible news organizations.

There’s every benefit to being a crowd-pleasing hack. Roll out the hottest takes, never apologize for getting things wrong, never back down, never stop making your fans feel like they made the right choice in defending you to their friends.

Create and maintain a caricature of yourself that appeals to people that would rather not put any thought into their own arguments, and will instead impulsively agree with anything that feels right to them – even if completely illogical. Do this, and you’ll end up famous (and possibly, wealthy).

But it’s a Faustian bargain: You can never be your honest self, and you must always please the crowds that give you power. Displease the hivemind, and it will literally ruin your life.

You’ll get harassed off the platform, then your personal information will be dug up and routed to people that take absolute pleasure in making your life miserable. It’ll kill your brand, your business, and in some cases, may even drive you to kill yourself.

Given the way those incentives are set up, it’s no surprise that South African Twitter is slowly becoming more toxic as it enters into the mainstream. It’s old-school pedagogy reinvented for modern technology. A true flattening of the hierarchy that never stopped to question if the hierarchy had any merit – if there was a reason we only let certain people have major platforms and massive social influence.

In any case, this is what we have to deal with. For my part, while I will occasionally apologize for not meeting my own goals, I’ll never apologize for having complex opinions, or being honest in their expression.

This means I’ll never be popular, but I’m 100% okay with being myself. At the end of the day, that’s far more important to me.

Saturday #3 of 52

This post is more than a year old. The information, claims or views in this post may be out of date.

2019 is officially back in full swing – it’s been a rollercoaster of a week, and looking at the work that lies ahead of me I’m legitimately worried I might be working too much again. As it stands, I need to put at least a half-day of effort in tomorrow (breaking my own no-work-on-weekends rule) if I want to stay ahead of my current workload.

This is reflected in my habit tracker for the last week, where I was only able to stick to one of them reliably!

Captured from everyday.app – highly recommended!

The worst part: I wasn’t nearly as productive as I’d have liked. I lost a lot of time with constant context-switching, being knocked off-course by incoming requests, and proper analysis paralysis. In other words, the back-to-work blues.

As my work’s gotten back to full swing, I’m having to re-engage my planning brain (to make sure I don’t go crazy), and I’ve had to adopt two strategies to stay on top of things.

A daily Inbox Zero habit

An inbox is basically a task list of indeterminate length. Until you actually go through the emails in there and map out the time it takes you to do things, there’s no way you know how much work you’ve really got on your plate.

So for that reason, I’ve focused on reducing both of my inboxes (work and personal) to zero every night. It’s become my new ritual for closing out a day, since it usually results in a list of to-do’s for the next morning – meaning I don’t have to think about how to start my day.

Even without Inbox Zero, it’s usually a good idea to end your day with a brain dump of everything you know you need to do the next day. It saves time and maintains momentum between “breaks” (ie eating and sleeping for the night).

I’ve found that most useful when paired with the second strategy:

Task Time Planning

Task lists are sweet little lies we tell ourselves – potentially days worth of work hidden behind one-line items. They get much more concrete when you do two things:

  1. Estimate how many hours a task will take you
  2. Add all of them up and try to fit them into your workday

So that’s what I did on Wednesday evening. I took a few hours to go through my inboxes, and eliminated everything in there:

  • Archived any emails that I didn’t need to respond to
  • For tasks, I noted down the task outside the email, then archived the email
  • For meeting invites, I made sure they were either on my calendar or rejected with an explanation

And then for each task that came in, I gave some thought to the hours it would take. I ended up with around 60 hours worth of work planned out (a solid week of effort plus overtime), and that was before I factored in all the other work I had planned elsewhere!

Most of my work runs in cleanly-defined contracts (I call them “obligations”), which mean I get to put together a table like this – charting hours per project per workday, with weekends hidden:

Freelancers can be really busy people!

And now it becomes really clear how busy I am! After I sat and charted out all my obligations (retainers, contracts, ad-hoc work, internal allocations for product development, marketing and admin) I found that I’ll only be back to “normal” at the end of February!

But I also felt relieved that the situation had been managed. Just having a plan – and some visibility into your immediate future – makes things a lot more manageable.

And then, finally, there’s the Eisenhower Matrix, an idea which has genuinely helped make the world a better place:

Borrowed from Develop Good Habits.

Urgent is usually pretty easy to discern: Things that have to be done right away, or a bad thing might happen.

Important is a little bit harder – it implies that there’s a reason beyond the completion of the task itself, which is undertaken as part of a larger plan. Developing a good sense of what’s important is, itself, quite important 🙂

In my case, I have a relatively clear idea of where I want my working life to go. I know that long-term, the sustainable path is to develop and market products (not services), so that I can generate value without constantly investing effort. I’ll likely always be doing some sort of consulting work, but it would be nice if I didn’t have to do it – that would let me pick the best projects and truly do my best work within them.

So even though they don’t address any burning needs at the moment, spending time working on “unprofitable” product development is really the smarter move over the long term. The work won’t be urgent for a while, but it’s important to do it every day.

Between those strategies, I finally felt like I had regained control over my workload by Thursday morning. Consequently, those were the two most productive days of my week.

Then there were another few wins, thankfully unrelated to work:

The Noscript Show is now syndicated everywhere
We’re finally on iTunes, which also means we’re on Pocket Casts – apparently making the show even more accessible. I also managed to put up a basic website with all the pertinent info in one place: noscriptshow.com

Laravel Quickstart has backup!
I think there’s been enough idea validation here to move on to the next phase – designing the prototype and outlining the functionality for the first Quickstart. That’s begun with the help of a frontend developer, who I won’t name in public without approval 🙂 Between us, we’re hoping to get the first version of this out a lot quicker!

Planning a podcasting info resource
Moving even further away from software, I’ve been looking at putting together a podcast learning center of sorts. The idea would be to offer once-off flat-rate access to all the information (with the price increasing over time as more info is added), and the focus would be on getting first-timers to the point where they’re producing their first podcast successfully.

It turns out there’s a lot to know – and even more questions you don’t think to ask until after you’re in the thick of it, so I’m hoping I can put something valuable together that will save everyone some time!

Finished Ghost in the Shell season 1 again
I rarely count shows as a win, but there won’t ever be a day where I don’t recommend Ghost in the Shell to people. Just skip over ARISE, that was an unintentional mistake.

Next week will be a proper grinder of a week, so I’ll probably get a head start on it by clearing up some of the smaller work items during the day on Sunday. All things considered, it feels good to be back in the driver’s seat again.

How to Podcast, 2019 edition

This post is more than a year old. The information, claims or views in this post may be out of date.

It’s actually easier than you’d think!

The Noscript Show, on Spotify

I won’t really get into the “why’s” of podcasting here – there’s a bunch of good reasons to do it (people like listening more than reading, easy way to build a brand, easier to syndicate, works great on mobile devices, fairly low production costs, and so on), but I want to focus on the how.

There’s three areas to cover: Production, Syndication and Promotion. Unfortunately none of these will tell you how to make a good podcast – that’s left as an exercise to the reader 🙂


First, you need a decent setup with which to record audio. The entire production is audio, so going for higher quality and less distortions/background noise are key.

Having a good microphone is essential. Doesn’t need to be the best, but it does need to deal with ambient noise in your recording environment, while clearly picking up the full range of your voice.

A typical USB headset designed for calls would work well for this. Depending on your budget, you could get standalone microphones for anything from R399 to R1895. While you can get USB microphones with on-board soundcards, you might also consider getting a standalone XLR microphone with a dedicated external sound card – this will give you studio-quality audio (and your environment becomes even more important!).

Then you’ll need software to do your actual recording with. I recommend Audacity unreservedly – it’s great software, completely free of charge, which works on both Mac and Windows. Using Audacity, you’ll be able to record your own microphone, as well as compose in any other audio streams.

Another really useful feature – if you have an MP4 video file, you can extract the audio from it in one go. That’s actually what we’re using to produce the podcast audio files for The Noscript Show.

If you plan on doing more conversational-style podcasts, and routinely use something like Discord or Skype for calls, the next best option is OBS Studio. While it was originally designed for video streaming, the composer is really easy to use, and you can mix in audio from other calls + your own microphone into one file.

To add a little extra personality to your podcast, you might consider editing in an intro and exit sound. Just a few seconds of music on either end will make for a more polished production. AudioJungle is a great place to buy short clips like that, and they’re usually licensed for exactly this sort of use.

Finally, the artwork. You’ll want to design something that represents your podcast (much like an album cover), but this doesn’t need to be professionally done. Between the free Photopea for editing and Unsplash for free images, you can whip up a good selection of options really quickly!


So now that you’re set up to record your podcast, the next step is syndication. Basically you need to put your podcast online, and make sure that your listeners can get ahold of it.

There’s a huge amount of options to go for here. If you’re the developer type, you can really just do this all on your own server: Make the files publicly accessible and assemble an RSS feed.

In my case, I ended up going with a paid Libsyn account. They’re the oldest and most reliable game in town, and have worked out the difficult stuff involved in getting your podcast out there. Specifically, they understand what each provider (Spotify, iTunes, Google Play, Soundcloud, etc) requires, and makes it really simple to provide the correct information.

There’s a huge amount of podcasting services out there. If you don’t like Libsyn, you can try PodBean, BuzzSprout, Blubrry, SoundCloud, Podomatic, Spreaker, BlogTalkRadio, Castos, Firesize, ZenCast, Simplecast, Audioboom, Whooshkaa, Podigee, Pinecast, Pippa, OmnyStudio, Podiant, and more.

So out of the box, Libsyn provides a hosted webpage where all the episodes are listed, and you can subscribe here with an RSS reader to be notified of new releases. But we can do better.

Once you have a working RSS feed, you can submit it to:

Each provider has their own requirements and rules, but the same deal generally applies: You provide the RSS feed, they read it, ensure it has all the information they need, and will then pull new episodes into their platforms as they arrive.

This is way better for your users. You can tell them to use their existing music app of choice, simply searching for you there. In South Africa that means iTunes and Spotify, with Google Play yet to make podcasts available here.


And finally: Getting word of your podcast out there!

Honestly, my favorite thing about podcasting is the potential for creating a community. We’re already seeing it with Noscript Show – the people that enjoy our content end up subscribing for more of it, sharing it with their friends, and join us in our community Discord.

So all the usual tactics apply here. Produce good work on a regular schedule, share it out on social media, set up a memorable brand, make your stuff easy to find, and most importantly: Interact with your listeners.

That’s what ends up building the initial community, and it gives you a better idea of what your listeners want from you – especially important if your podcast focuses on a particular industry, skill, or insight.

Bonus: Monetization

This question inevitably comes up once you start researching podcasts – mostly because you’ll find stories about how people are making millions of dollars off theirs.

Podcast monetization is pretty much identical to radio monetization. If you’ve listened to any public radio station, you’ll have noticed two variants:

  • Ad segments
  • Endorsements read out by the producers

In those respects, podcasts are the same. There are platforms that will let you insert ad slots into your podcast, then sell that inventory on your behalf (like a website). Or you could do direct deals with sponsors, and agree to read out a sponsored message (or play a clip) directly in your content itself.

But there’s a third option, which is where podcasts have radio beat: You can paywall your podcast, and charge people to listen.

The options available on Libsyn

Right now I have no interest in monetizing the one podcast I am doing, so I can’t offer much more advice than that. What I can say is that paywalled podcasting will require specialized hosting – there’s no point in paywalling it if anyone can just look it up on Spotify.

So there, it’s more likely that you’ll ship out your podcast as a custom mobile app, or via a mailing list with listen links that are connected to individual subscribers.

Lastly, there’s always the donation route. If you produce a good, free public podcast and you get lots of listeners – but aren’t concerned about generating an income – opening up a channel for donations can be mutually beneficial: You get some money, and your fans will feel good about helping to keep you on the air.

A great option for that is Patreon (especially since you can set up a reward structure), or you can just take donations locally with something like PayFast.

Are you going to podcast in 2019? Let me know – I’ll be your first subscriber 🙂

51 to go! (#1 of 52)

This post is more than a year old. The information, claims or views in this post may be out of date.

I blinked and missed the first week of 2019 – it’s going to be a pretty short year, at this rate!

At the start of this year’s blogging adventure I figured I’d borrow a strategy from Charl’s personal blog, in which he (generally) does a weekly post to recap what happened during that week.

That’s usually the reason I wrote so little last year: I keep busy with a lot of stuff, so much so that picking one topic to write about causes analysis paralysis. So I end up writing nothing instead, a sub-optimal outcome.

The first week of 2019, for me:

Most of my customers came back online by yesterday, and I’m already planning out my workload for the year. Last year, my strategy was to just take on every piece of work I conceivably could – this year, I’m limiting my billable work and planning to take time off instead.

To that end, I mapped out the 2019 year in several different configurations, until I landed on the one that was optimal for my planning. And actually relatively sad:

The entire 2019 calendar year

That’s my 2019 tracker. It includes all 365 days of the year, marks out weekends (gray), public holidays that result in time off on weekdays (P) and my minimum-acceptable-leave dates (L) – calculated and distributed in such a way that I have sufficient capacity every month to hit my financial targets through billable work.

The sad part is seeing the year laid out like that. 250 weekdays, 104 weekends, 11 public holidays, and that’s 2019 all done!

Where the planning part comes in: If I have a really good quarter, and bring in amounts above target, that means I can “afford” to slow down later in the year and focus that time towards building my own products. It’s a mindset made possible by the insane amount of hours I worked last year, and the resulting cash buffer I built.

I’ll only feel confident once I go through February though. Bare minimum, SARS is going to take a full month’s pay away from me in one shot. Once I sort out my tax predictions for the next fiscal year I’ll actually be in a position to predict things.

Then there’s the minimum-acceptable-leave idea: I have to take time off. It’s an ongoing problem with me, so much so that I’ve sought therapy to help me manage the anxiety involved. I tend to overthink negative outcomes, and then to mitigate those I’ll work myself to death (literally) to compensate.

On top of those handful of [L] days, there’s the weekends (during which I absolutely should not do billable work), and public holidays (the same), meaning that of the 365 days in the year, only 250 (68.5%) should be productive.

It’s a nice plan on paper, for sure. Whether or not I stick to it will be a different story. One of the downsides of being a freelancer is that you’re 100% responsible for the opportunities you create, and sometimes that requires you to put in effort above and beyond what a regular 9-5 will require of you. So we’ll see what happens!

Other stuff of note:

Helderberg Dev Meetup: I’m giving the first talk of the year today (Progressive site enhancement using VueJS), which as of this post I still technically need to prepare for!

Laravel Quickstart: I’ve seen some early interest in the idea, even though I haven’t done much to market out the page yet. I’ll be doing that by outlining my first product, and publishing those details to a good-looking storefront – then there’s something more tangible to talk about in public.

everyday.app: This indie-built daily habit tracker (hi Joan!) has already been very useful. Simply by replacing the home tab on my browser, it encourages me to review my habit completion status often!

Makerlog: I’ve signed up (@wogan) for one of these public to-do trackers, and I’ll be using it for Laravel Quickstart work (when I work on it). With any luck, the daily reminders from everyday will nudge me into making at least one update per day here, and progress will be made overall.

On to the next week of 2019!

The first product of the new year!

This post is more than a year old. The information, claims or views in this post may be out of date.

It’s officially game time.

After quitting my job last year (and going through an abyss of existential panic), I landed on something resembling a master plan: For the remainder of 2018 I took on every freelancing opportunity I could manage in order to build up an income buffer. Once that was achieved, the next step would be to reduce the time I allocate to freelancing, and dive into the world of product development.

Phase three, as such, will be to derive 100% of my income from products and SaaS services. It will probably take longer than I think it will, and I already think it’s going to take at least 2 years.

I didn’t have any timeframes in mind, but after the last quarter of 2018 I’m feeling comfortable enough to attempt my first build. I’ve been soaking up knowledge and insight over the last few months – time to start putting it into practice!

I initially decided to go straight for building a SaaS application (and drafted a convincing business case for it), but my thinking was shifted somewhat by an interesting Indie Hackers article.

At first, I’d discarded the notion of selling one-off products: That’s not a path to recurring revenue, which is what I ultimately need. However, there’s a bunch of upsides to going for one-off products.

For one, they’d be easier to build. I can draw up a spec, build, refine, document and release something without the pivoting and scope-creep that’s inevitable in a B2B SaaS application. And they could be a lot smaller and narrower in scope than a typical SaaS.

I don’t have to worry about hosting customer-facing services. While I’ve got no problem doing this (and am busy doing it right now), I definitely want to up my game on cloud providers before going public with a SaaS of any sort.

Once-off purchases of tools that save time are pretty easy to justify. I buy Themeforest themes all the time (I’ve spent thousands by now, I’m sure), simply because the dollar cost of the theme is a lot less than it would cost me, time-wise, to put together something similar.

They can be a foot in the door at other businesses. I’ve seen this (from a distance) several times – a company buys a product, is able to do 90% of what they need, and need help for the remaining 10%, which becomes a consulting opportunity.

They (typically) don’t expire. Stuff like PDFs, email courses, videos and so on technically don’t expire, and they can be sold for as long as they remain relevant. In my case that’s mostly true, though I will need to update the products at least every 3 months to stay current with framework and dependency changes.

With all of that in mind, I’m diving straight into building the first no, I’m kidding. Step one is idea and market validation, for which I’ve used the absolutely god-like landen.co to put together a landing page: laravel-quickstart.com

The product itself is pretty straightforward: A well-documented starter pack, using framework defaults and idiomatic patterns for common web applications.

Over the next few weeks, I’m going to find ways to send traffic to that page – organic, paid, referral, whatever. If I feel comfortable that I’m going to do at least $500 in sales, that makes it worth my time to take on one of the smaller packages.

I’m intending on delivering high-quality quickstart packages though, so the first one will be an exercise in breaking new ground. The next few will hopefully be easier.

Or, it might turn out that there’s no demand for something like this, in which case I simply park the domain and move on to the next thing. This is idea #1 in a list of around 20, which keeps growing every week.

And of course, I’m going to be as transparent about this process as I dare. For one, it makes this blog a lot easier to maintain (the posts basically write themselves). Mostly though, it’s important to me that other people can learn from my experiences.

That’s one of the motivating factors behind this product: Among other things, I want the documentation to be good enough that it basically teaches people how to build good web apps, on top of giving them a solid foundation to start.

If you’re interested in following along, best thing I can suggest is to either subscribe directly to the blog (sidebar widget, top right) or follow me on Twitter, where these posts are automatically broadcast. And if you’ve got questions, I’d love to hear from you!

My 2019 reading list

One of my 2019 goals is to read more. The intent is to spend at least 30 minutes/day reading, and I’ve set up a target on my Goodreads profile to hit at least 25 books in 2019 – that’s one book every two weeks, which is totally doable.

I got my old Kindle all charged up, and the first thing I did (after linking my Goodreads account) was to integrate all my Amazon Kindle purchases. It turns out I’ve bought quite a few books over the years that I haven’t yet read. All told, there’s 48 books on my to-read list at the moment (of the 130-odd in my Kindle library). A bit more than 25, but then I do love a challenge 🙂

These are all the books I plan to have read before the year is out. And if I can get through one book per week (should be completely doable on weekends) I may even add a few more.

History and Politics (9)

  • The Dictator’s Handbook – Bruce Bueno De Mesquita
  • People’s War – Anthea Jeffery
  • On Tyranny – Timothy Snyder
  • Algorithms of Oppression – Safiya Umoja Noble
  • Countdown – Alan Weisman
  • Democracy for Realists – Christopher H. Achen
  • The Coddling of the American Mind – Jonathan Haidt
  • Who owns the future? – Jaron Lanier
  • The Death of Expertise – Tom Nichols

Psychology, Philosophy and Self Improvement (7)

  • Games People Play – Eric Berne
  • Atomic Habits – James Clear
  • Wisdom of Insecurity – Alan W. Watts
  • Zero Excuses – Gabriel Machuret
  • How to Fail at Almost Everything and Still Win Big – Scott Adams
  • Solving the Procrastination Puzzle – Timothy A. Pychyl
  • Bowling Alone – Robert Putnam

Business and Startups (6)

  • How to Measure Anything – Douglas W. Hubbard
  • The Best Dick – Mike Sharman
  • Traction – Gabriel Weinberg
  • Drive – Daniel H. Pink
  • The 7 Day Startup – Dan Norris
  • The Innovator’s Dilemma – Clayton M. Christensen

Science Fiction / Fantasy (12)

  • Split Second – Douglas E. Richards
  • Why You Were Taken – JT Lawrence
  • 3001: The Final Odyssey – Arthur C. Clarke
  • Darknet – Matthew Mather
  • Project Northwoods – Charles J. Bruce
  • Arrival – Ryk Brown
  • BrainWeb – Douglas E. Richards
  • Failsafe – Daniel Gage
  • Silo 7 – Daniel Gage
  • AfroSF – Ivor W. Hartmann
  • Departure – A. G. Riddle
  • A Scanner Darkly – Philip K. Dick

Writing Craft (14)

  • How to Write Short Stories – James Scott Bell
  • How to be an Author – Ashton Cartwright
  • Write to Market – Chris Fox
  • How to Write Faster – Marcy Kennedy
  • Writing Deep Point of View – Rayne Hall
  • The 7 Secrets of the Prolific – Hillary Rettig
  • She Sat He Stood – Ginger Hanson
  • The 12 Key Pillars of Novel Construction – C.S. Lakin
  • How to Write Dazzling Dialogue – James Scott Bell
  • Super Structure – James Scott Bell
  • Story Climax – H.R. D’Costa
  • Techniques of the Selling Writer – Dwight V. Swain
  • Rock Your Plot – Cathy Yardley
  • Write. Publish. Repeat. – Sean Platt

I think you can tell by that last, largest category that I’m really interested in being a writer 😉

My progress will be tracked on my Goodreads profile – Kindle makes it really easy to flag which book you’re reading. Now it’s just about finding the time to sit down and do the reading.

If you’re doing a reading challenge this year, let me know!

Next year’s growth market: Smart Speaker development

This post is more than a year old. The information, claims or views in this post may be out of date.

It’s officially the last Monday of 2018 – wild! We made it to the end of the year and everything is still more or less intact, who would have guessed?

If you’re looking for a good New Year’s Resolution for 2019, might I suggest learning how to build integrations for smart home speakers?

The smart speaker market reached critical mass in 2018, with around 41 percent of U.S. consumers now owning a voice-activated speaker, up from 21.5 percent in 2017.

Sarah Perez, Techcrunch (link)

What this means in practice is that 41% of American consumers are now on a new platform with big commercial potential, and chances are it’ll continue to grow over the next few years.

In effect, this is a whole new market – the next iteration of the mobile platform/app wars, except there’s a lot less UI overhead.

It also forecast that Alexa would generate $18 billion to $19 billion in total revenue by 2021 — or ~5 percent of Amazon’s revenue — through a combination of device sales, incremental voice shopping sales and other platform revenues.

Sarah Perez, Techcrunch (link)

The magic ultimately comes down to the integrations. Alexa calls them “Skills”, Google calls them “Actions”, but they’re the same thing: Writing conversational dialog that lets end-users engage with your service verbally.

This was the market that Siri was supposed to unlock, but it turns out that people already on their phones are more likely to use their phones to get things done, instead of switching over to a clunky voice interface.

The most simple explanation is that app developers have limited resources, and don’t see the point in supporting Siri when users aren’t demanding it.

Jared Newman, Fast Company (link)

Home speakers are a different story. They’re always on, don’t require you to physically interact with them, and have the effect of enabling any given room with something approaching ambient intelligence – all with purpose-built microphone arrays and optimizations for working in home environments. Basically, for quick commands, they’re going to be more useful to more people.

It already looks like Alexa has taken the lead on revenue potential (it’s backed by a global retail giant, so this is not surprising), but both Alexa and Google Home would be good targets to build for.

Side note: Apple’s HomePod devices are nowhere to be found (5% marketshare), and their SDKs and learning requirements tend to be a lot steeper than Amazon or Google, so if you’re not already in that ecosystem it might not be worth your time to start.

Google’s platform is called Actions, and you can learn more here: https://developers.google.com/actions/

Alexa’s platform is called Skills, their developer site is here: https://developer.amazon.com/alexa

If you’re new to the world of building conversational interfaces, I strongly suggest starting with the simpler apps:

Google’s Dialogflow: https://dialogflow.com/
Voiceflow for Alexa: https://www.getvoiceflow.com/

This is all within the same problem domain as chatbots (you’re creating conversational flows with voice instead of text), so anything you learn here is going to be easily transferable to other platforms and problems. Well worth your time, in my opinion!

For myself though, I doubt I’ll ever own a smart speaker at home (the creep factor is a bit too much for me), but I might end up building one or two integrations for any products I end up developing.

Are you going to try developing something in this area next year?

The Mother of All Demos

This post is more than a year old. The information, claims or views in this post may be out of date.

Put on your tinfoil hats, we’re going for a ride.

I think James Bridle said it best:

What concerns me is that this is just one aspect of a kind of infrastructural violence being done to all of us, all of the time, and we’re still struggling to find a way to even talk about it, to describe its mechanisms and its actions and its effects.

James Bridle, Something is wrong on the internet

There’s a good few posts I can write about social media and hyper-connectedness, and how it’s having an erosive effect on our collective identities and well-being, but right now I specifically want to talk about serverless architecture.

I’m an active participant on the Indie Hackers forums, and the recent conversation about serverless websites was one I pretty much had to get involved in.

It’s a problem I keep running into – a dynamic that makes me uneasy, in a way that’s hard to pin down. That’s what I’m trying to do in this post right now: give an outline of a problem that I’m sure most people aren’t yet aware of as a problem. With the possible exception of Cory Doctorow and everyone in his orbit, and I’d hate to end up in a world where he was right all along.

Serverless architecture is the hot new thing, haven’t you heard? Absolute magic: You only need to write the bare minimum code to make your business logic work, then upload it into a magic cloud that takes care of putting it on the internet for you. And you don’t even have to pay for the server!

I have the feeling that a lot of relative newcomers to web development over the last few years are excited about this, mostly because it lets you build APIs without actually having to know anything about how APIs work. So long as you can define a NodeJS HTTP Response, you’re good to go – and that’s the sort of stuff that can be taught inside of a day, assuming you never explain the OSI Model, TCP/IP, how browsers actually connect to servers, what a network stack is, what ports are, what networks even are, and so on.

In short, what serverless encourages is bare minimum ability. Only having to learn enough to make a vendor’s specific implementation work, instead of learning any of the principles that underpin it, or whether or not they’re even good designs.

Personally, I’m in favor of learning as much as I can about any given system. I like being able to do new things, and understanding how and why things work, and trying to discern the governing principles beneath them. That’s why I’ve read most of Paul Graham’s essays, I know what a Twelve Factor App is, I understand MVPs in relation to a sales cycle, and I understand the difference between programming and engineering (among other things)

On public forums, this is usually the point where someone will argue that all developers are equal, and that it doesn’t matter if you can only do frontend pages in Javascript and other people can program embedded devices directly in Assembly, everyone deserves to be taken seriously.

Then the conversation turns into a semantic nightmare where the saner voices might suggest that a person’s value as an individual is not tied to their skill in any given field, which then generally collapses into a bunch of name-calling.

The sanest people don’t engage in these conversations in the first place.

As far as I’m concerned, the people who have spent literal decades in the trenches: writing code, making mistakes, and designing the systems that underpin everything else we do (things like the Linux kernel, or the HTML spec, or TCP/IP, or software team principles) generally do have more valuable things to say about how software should be built, vs someone who just got hired at their first frontend job.

That’s generally the point where I get booted out of the conversation for being antagonistic. Try as I might, I cannot fairly equate the skills and experience of a first-timer to someone who literally helped define the field they’re working in.

I’m learning to move on from these situations though.

My approach of late is to try looking at the bigger picture, which right now is best summed up like this:

Microsoft, Google, Facebook and Amazon own and manage a substantial portion of the information that flows through internet, and by extension, the foundations of communication, productivity and trade in the 21st century.

Note: For the purposes of this article I’m ignoring Apple – while they have an enormous market cap and built genre-defining hardware, their walled-garden approach to developing software for those devices might be the thing that ultimately exonerates them.

Each of them has built up an enormous, complicated set of technologies that makes their core businesses work – all of which has been exported to the public market:

  • Microsoft: .NET and Azure
  • Google: Angular and the Google Cloud Platform
  • Facebook: ReactJS and the social graph
  • Amazon: Amazon Web Services

Each tech giant, being American, also exports a particular set of cultural norms. Being a high-performance culture that worships productivity above all else, everything done in service to greater productivity should pass without question, including:

  • Keeping people connected and online all the time
  • Encouraging people to form family bonds in the workplace
  • Defining and projecting values (not just mission or vision) – Google in particular has explicit “Googley Values”
  • Constantly aligning, encouraging and nudging people in their employ to live up to a vision that is ultimately exploitative in the wider market (with the likely exception of Microsoft), and
  • Acting with the default assumption that they’re entitled to do whatever they like with the data entrusted to them by billions of people. Move fast, break things – right, Facebook?

Then there’s the happy tech-skill halo effect, first unearthed by Microsoft. If you export the tools you use within your business and make them available on the open market, anyone who learns how to use them would make excellent technical recruits – without having to significantly invest in training or upskilling anyone to use your systems.

They would also use your tools and products in their own work, further embedding the reach of your paradigms well beyond your own company. Individual open-source developers understand the pull of this all too well (it’s a sure route to power).

Microsoft built .NET to have a framework for Microsoft to build Microsoft products, but by making it available to businesses and developers in general, they got to look like visionaries for making a big set of free tools available – in return for the near-invisible effect of re-shaping developers into capable Microsoft candidates.

Note: Gamers will recognize this. It’s the plot of Mass Effect: An ancient civilization left behind “mass relays“, devices that enable interstellar transport so long as you build your ships to interface with them. And by doing so, it made it much easier to round everyone up during the harvest time, since all technology had been shaped in the image of that prior race.

That’s been amplified (almost inadvertently) over the last 10 years, with people shifting more of their social interactions online. They’re not just tools anymore – they’re communities, with a set of shared personal values that dictate whether or not your conduct is acceptable.

If that sounds crazy, consider that the Contributor Covenant has been imported to over 100’000 open source projects and has been publicly endorsed by major organizations. While the content of the covenant itself is progressive and relatively harmless, the mechanism of establishing a centralized monoculture across the internet is not.

So as of 2018, if you’re a “React Developer”, that’s not really a job title. It’s also not just an expression of which languages or tools you use. It potentially signals membership in, and acceptance of, a certain way of doing things – almost certainly underpinned by the value systems and worldview of a corporation that’s absolutely not acting in your best interests.

If that sounds a bit tinfoil-hatty to you, don’t worry, I hear you. It sounds that way to me too, believe me. Thing is, I’ve been building websites since before Facebook, and something has just started feeling wrong over the last few years.

And I suspect it’s got something to do with the unexpected impact of having the world’s largest technology companies also

  • establish and enforce behavior and personal values among employees and community members while also
  • owning the technical direction of the tools we use to make and share things while also
  • having enormous financial and political power in the largest market on Earth while also
  • not acknowledging any of this impact, instead stating all of the metrics in universally-friendly terms while also
  • making decisions that have widespread negative impacts on people that we’re only now just beginning to understand.

And these are all the companies selling you serverless technology today: A paradigm that further divorces the developer from the computer, abstracting away all the vital parts that, if understood, could be improved on for everyone’s benefit – like how the web has been built up until this point.

Instead, by coercing new generations of developers into paradigms that divorce them from the (relatively) simple act of bringing a basic website online, these companies are pushing us into a future where software development is not a thing you do on your computer in your home: It’s a thing you do on their services, in their languages, with their tools.

At this point I sound exactly like Cory Doctorow and wish this nightmare to end.

This exact paradigm has already proven problematic, with the Electronic Frontier Foundation taking manufacturers to task over things like not being able to update the firmware on your own car. That’s a domain that’s foreign to me, but web development is not, and I’m already dreading the day we wake up to realize that the internet itself exists in the hands of a few large companies.

Maybe we’re already there, I don’t know. I just like to think there’s still enough variety in hosting, languages, tools and approaches, that there will continue to be individual innovation that advances things for all of us.


The title is a reference to the work of Douglas Engelbart. The 9th of December this year marked the 50-year anniversary of The Mother of All Demos – a 1h40m collaborative presentation in which him and a team of engineers built hardware and software that effectively showcased the future.

The video is long and somewhat boring, so it’s more interesting to list out the sort of stuff they covered:

The live demonstration featured the introduction of the computer mouse, video conferencing, teleconferencing, hypertext, word processing, hypermedia, object addressing and dynamic file linking, bootstrapping, and a collaborative real-time editor.

Fifty years ago, a bunch of engineers had thought through the problems that we’re still dealing with in modern-day computing. Even if they had not managed to solve those problems as effectively as we’ve done today, they were at least able to articulate and navigate them.

It’s the example I keep coming back to in conversations about “new problems” in computing: There barely are any, at least not in the domains of communication or productivity. It really helps knowing the history of this stuff, too – you might save yourself a lot of trouble if you learn from the people that tried solving these problems before you.

But then that’s “old”, so it’s automatically discarded as irrelevant, and people move on to the next new shiny thing. A perpetual disregard for history and obsession over disrupting the status quo – an impulse firmly embedded in tech culture by two decades of reckless Silicon Valley gospel.

Black Mirror: Bandersnatch [SPOILERS]

This post is more than a year old. The information, claims or views in this post may be out of date.

All I wanted for Christmas, it turns out, was a new Black Mirror episode. And boy, did they deliver.

(Note: Spoilers ahead, obviously)

I normally don’t do reviews of movies or TV shows – I just watch and enjoy them. This one’s a special occasion though: between the compelling story and the sophisticated framework used to deliver it, I got sucked right in. It’s a proper work of art, really.

Bandersnatch follows a boy (Stefan) developing a game in time for Christmas, based on a choose-your-own-adventure book. The first bit of self-reference: As the viewer, you’re getting to choose your own adventure in this story about a boy building a choose-your-own-adventure game.

Depending on the choices you make, you can end up at a total of 11 endings (that I’ve found). Some of the choices are inconsequential, others are inflection points that you can keep coming back to. All told, it took me a good four hours to explore as much as I did.

Just one part of a massive flowchart

The story itself is something of a departure from Black Mirror’s last few seasons. The recurring theme has always been the dark side of technology, but in Bandersnatch the technology plays a limited role (making it easier to set in the 80’s).

Instead, this is a story about the limitations of choice and free will – a refreshing departure from the season 4 tropes, and a very compelling one at that. Considering the implications of free will vs predestination is a favorite philosophical past time, after all!

The story really contains everything: Nostalgia, callbacks, easter eggs, self-referential humor, man-vs-author, bringing the ARG into the real world, you name it. And then the references to other Black Mirror episodes:

White Bear: The symbol used in the original episode features prominently, as does the theme: The main character trapped in a script written by somebody else, forced to endure a horrible experience for the entertainment of others.

Nosedive, Metalhead: Referenced as games within the story itself.

Playtest: One of the endings is a callback to the entire horror-mansion experience Cooper went through, and the revelation at the end that he was still in the testing room the whole time.

There’s loads of other references and hidden easter eggs: Like the fact that Bandersnatch was an actual game, which failed when the studio went bankrupt in 1984. There’s an implied connection between Tuckersoft and TCKR Systems, the fictional company that ends up producing the crazy technologies in season 3 onwards. One of the endings features a news crawler that’s loaded with headlines from across other episodes.

Picture: Netflix

What fascinates me more than the story though, is the way the story was designed and delivered. Being able to explore multiple outcomes is already quite a feat in itself, especially since they all tie together in some way – so that’s some really good writing and planning.

And then there’s the technical aspect. Not only does the Netflix player need to cache multiple potential outcomes (so that you get a smooth streaming experience regardless of your choices), but I found out that it’s also remembering how many times you’ve been through each choice, which can affect the way the story turns out.

These are all the endings I’ve found. While I’ve taken the trouble to map out all the decisions that lead to them, that would just kill any exploration you might otherwise do on your own – so they’ll stay my secret 😉

Most of the endings are reviews – a TV show in which a presenter critiques the game. Possible outcomes:

  • Zero stars, with the game being “too short”
  • The presenter rattling off a litany of synonyms for how bad it is, with the scene ending abruptly
  • The presenter notes that the developer “gave up halfway through” and “went on autopilot” for the remainder
  • A successful, 5 stars out of 5 review, followed by a cut to a modern-day news broadcast about how the creator of the game was arrested for murder, and the game is being re-built by Colin Ritman’s daughter
  • A 2.5 star rating noting the “grisly backstory”
  • The first “team-based” game from Tuckersoft feels like it was designed by committee.

Then there’s an ending where the game company (Tuckersoft) collapses, with 3 variations:

  • Stefan’s father is dead
  • Stefan’s father and Colin Ritman are dead
  • Stefan’s father and Mohan Thakur are dead

Other endings:

  • Stefan dies without warning, and it turns out most of the story was just a vivid last-moments-before-death dream
  • It turns out Stefan is just an actor on a film set

My other favorite little detail: In all story branches you end up with a documentary about the book’s author. When the documentary starts, there’s a TV ad that plays right before – which ad it is depends on the cereal you choose at the start.

There might still be more endings and variations, but I feel like I’ve explored this one quite enough to be satisfied. If you dive into it, let me know what you think!

#2019 SMART goals

This post is more than a year old. The information, claims or views in this post may be out of date.

As I head into 2019 I want to keep better track of my medium-term goals. There’s a few things I want to get done over the coming year, and right now I’m working out a big-picture broad-strokes plan for 2019.

In my 2018 retrospective I listed the following 4 goals:

  1. Build and launch a SaaS
  2. Blog more
  3. Read more
  4. Develop routines

But of course, I know better than to just have vague, open-ended “goals” – they end up being wishlists that go unfulfilled. So instead, I’m going to reformat them as SMART goals, and then actually measure my progress towards them as 2019 goes on.

(Totally stole this idea from Cory Zue’s 2018 review! Then expanded on it a bunch.)

Goal 1: Build and launch a SaaS

I’ve given this a lot of thought (had to narrow down 16 ideas) but eventually picked one I think is the most relevant: A cloud-based reporting solution for measuring digital marketing effectiveness, aimed at small-to-medium businesses (and possibly white-labeled to agencies).

Yes. There’s a defined set of capabilities the tool needs to have, it’ll go up on a website, and it’ll either operate or not. The specific requirements will evolve as I go, but there’s a clear core function.

Yes. I’ll know whether or not I’ve actually launched the first version, and every element of its success will be measurable.

Yes. Data integration, reporting, APIs, charts and dashboards, KPIs and metrics, and making all of that noise business-relevant is something I have existing knowledge of. I’m not diving into this blind.

Yes. Building this sort of stuff is in line with the bigger picture I have for my future, and it’s pretty much the reason I quit my job in 2018 for, so I’d say it’s quite relevant.

Yes. Looking at my current and anticipated workload, I’m aiming to have the first version of this out by end-February 2019. Chances are I’ll have to work a few nights and weekends to make that happen, but a prototype in that length of time is doable. I’ve built similar solutions before, and usually it takes about 200 hours to get to something good.

Goal 2: Blog more

I’m kinda doing this already, but I need to (and will) keep going.

Yes. There’s a clearly-defined and repeatable action (write a post), and I’ve set a target of at least 3 posts per week for 2019. I’m hoping to exceed that though.

Yes. I can measure whether or not I’ve uploaded enough posts for a given week, and can plan out time to do more of them if necessary.

Yes. I’m not half-bad at writing, and when I’m warmed up I usually have at least one topic to write about, so I should be able to do this.

Yes. I need to write for two reasons: One, to practice writing. Building up the habit will be vital if I one day want to produce lots of training and educational content, and maybe even a novel or two. This is a skill I really need. The other reason is that constant writing over time is a good way to build up an audience, which is another thing I’ll need if I want my SaaS businesses to go anywhere.

Yes. I’ve set a goal per week (3 posts every 7 days), so there are repeatable deadlines to hit.

Goal 3: Read more

If you want to write, you should read. That’s some solid advice that’s followed me around, but my 2018 reading stats are abysmal.

Yes. There’s a well-defined action here, and no shortage of books that cover my range of interests (business, startups, innovation, finance, sci-fi, fantasy).

Yes. I can track my reading habits either via Kindle, or via something like GoodReads. I’m not going to track actual time spent reading (that’s psychotic) but so long as there’s some daily activity on this, I’m happy.

Yes. Not only can I read, I like reading.

Yes. The books will mostly be relevant to my interests, and I need to keep learning if I want to succeed in my 2019 adventure.

Yes. I won’t set a limit for the number of books to read, but I should at least spend some time reading every day. At least 30 minutes, which is not difficult to make time for – I really just have to cut out a bit of Netflix.

Goal 4: Develop routines

This one is admittedly open-ended. I’ve tried consciously developing routines and habits before, but they tend to fail when I get distracted with work, or take on more than I can handle (which has happened a lot these last 6 months, with good reason).

No, but I’m going to revise this until it is. I think the above 3 goals (work on a SaaS, write, read) will need time every day/week anyway, and so carving out that time and being able to rely on it will become the routine in and of itself.

Yes. There’s about a billion habit-forming apps out there, but I already have a very solid, health-driven habit (morning blood sugar and weight readings), so I can just use the same systems to record whether or not I’ve done my 3 things for the day.

Yes. There’s nothing in here that I don’t already do, it’s just about being able to do them predictably and repeatedly.

Yes. Developing good processes is vital if I want this all to go well for me next year, and developing the ability to develop processes is itself a valuable thing to do.

Yes. Every routine needs to be completed at least once per day, so that’ll be pretty easy to measure.

So those are my 2019 goals. At the end of 2019, I plan to refer back to this page and track how well I did against all of them. With any luck, this will help me stay focused through the year.