Late-stage internet

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

Here’s a cheerful thought for you as we head into 2019:

How much of the internet is fake? Studies generally suggest that, year after year, less than 60 percent of web traffic is human; some years, according to some researchers, a healthy majority of it is bot.

Max Read, Intelligencer

That’s from this beautiful rundown on Intelligencer – essentially a laundry list of all the ways in which the Internet has disrupted human connection.

It doesn’t even mention the pre-social media scourge of email spam, which at one point accounted for over 90% of emails sent worldwide. Every platform has its spammers, all eventually learning roughly the same thing: That gaming the system is profitable. But like any single-minded attempt at extracting wealth, it leaves the entire ecosystem in disarray.

Simply put, the web is no longer human. It’s been co-opted by machines, optimized for our most basic impulses, reinforced by the massive accumulation of the resulting wealth. The tech boom has left a wake — empathy, humanity and truth, receding into history.

I wrote that a year ago (here, on Medium) almost hoping that 2018 would signal some sort of reversal of the trend. It was published in the middle of peak blockchain hype, during which I had a great deal of optimism for the way public chains might address the scourge of fake news.

(It hasn’t happened, and now seems less likely than ever)

I first got online in primary school, and the internet has been a massive fixture in my life. It’s where I learned the skills that landed me my first job, it’s where I’ve built a career and relationships that now span decades. I’ve always thought of the internet as a net benefit – that connecting lots of people from all over the world was a fundamentally good thing.

On the longer scale of history though, it was really doomed from the start.

Within the first few weeks of starting my first job, somebody pointed out something that I have since come to accept as a fact: That without porn and advertising, the internet would be a handful of boring websites and productivity tools.

Porn has a unique effect on technology: in that it drives the development and adoption of new things faster than any other drive, which I guess makes sense given that we’re human. If you want to know more about who we are as people (and I kid you not) PornHub’s Insights blog is recommended reading.

It’s the advertising that did us in, though.

For as long as there’s been audiences, there’s been ad sales. For as long as those ads were “external” to us (they existed in a context that let us clearly differentiate reality and advertising), they were mostly harmless.

The TV ads of the 1950’s embodied this, with the content and tone mostly being conversational – not unlike how a salesman would pitch you in person. has a fantastic collection of these. It might amuse you to know that even back in 1954, TVs were sold on size. This RCA Master 21″ TV commercial illustrates it beautifully:


Advertising has changed over the last 50 years, though. Modern ads present a supernatural version of reality: The models are photoshopped, the food is fake, products are sold on emotion and status rather than practical considerations. Here’s an ad from 2017 – see if you can spot the differences.

Which again, is largely fine if you understand that you’re being advertised to – between segments of a TV show, breaks in the news, before a movie, before a YouTube video. Being able to put the information in the proper context is what’s important here – and it’s that exact thing that’s been under attack most recently.

Influencer marketing is my second-least-favorite form of insidious advertising. It’s simple: Gain a loyal following and then subtly promote products without actually promoting them. Just make them part of your “lifestyle” on whatever social platform you’re on, and make sure the purchase links are readily accessible.

It works, too – far more than any other form of marketing.

Influencer marketing definitely has it’s social downsides (among them, collapsing the distinction between identity and brand preferences), but I can’t be too upset at this. This sort of marketing reaches the same demographics as tabloids and daytime TV talk shows – people who are easily influenced and apparently see no downside to that.

My least-least-favorite form of insidious advertising has to be Native Advertising – news and editorial functions incorporating paid content under the guise of being news.

That was in 2014, and the practice hasn’t slowed down at all. It’s at the point now where people cannot distinguish between news, and content designed to provoke a response and rake in ad dollars.

In the final three months of the US presidential campaign, the top-performing fake election news stories on Facebook generated more engagement than the top stories from major news outlets such as the New York TimesWashington PostHuffington Post, NBC News, and others

Craig Silverman, BuzzFeed News (link)

That was in 2016, the year we reached some truly ironic situations: Like a for-profit content site publishing sober analyses on news media consumption patterns. At the same time, public interest in the concept of fake news reached sky-high levels, as it helped put the former host of the Apprentice in the White House (the moment reality finally broke).

You want to know the best part though?

People are basically losing interest in the concept altogether. Fake news is now just another part of daily life – another thing to watch out for, like 419 scammers and encryption ransomware.

This is 2018 now. The internet is awash with fake news, churned out by dodgy operations that capitalize on the weaknesses in anti-fraud algorithms on display markets (like Google AdSense). Any place where content can earn money, people are gaming the algorithms (to terrifying extremes). Social networks, desperate for engagement, are slow to act on containing any of this.

All of it ultimately driven by advertising. Businesses want to reach people, people are spending time online, and so the ad dollars flow.

It might have been better if the internet was just email and porn. At least we wouldn’t be questioning whether or not we share the same reality – an actual problem that surfaced during the Kavanaugh debacle.

There is a state of the world where Kavanaugh assaulted Ford in 1982, and there is a state of the world where he did not. Pick one. Now. And once you’ve picked, you no longer co-exist in the same political reality as someone who picked differently. You are truly – and I mean this in a very literal sense – in different worlds.

Ben Hunt on Epsilon Theory (link)

This is why I think we’ve reached late-stage internet. For the longest time, the internet was an escape – a world that existed beyond the physical world, where the same rules didn’t apply, and people were free to explore and experiment.

Then it crept into the mainstream, with the confluence of incentives from hardware manufacturers, ISPs, news organizations, tech startups and advertisers drove the internet into everyone’s home, then everyone’s pocket.

Personally, I have it down to Obama’s election as the moment the internet went mainstream (he used Twitter to great effect). As soon as anything can be used to wage political war and influence the outcome of a public event, its impact makes it mainstream by definition. Tobias Stone calls it “The Great Cyber War“, and it’s hard to disagree.

And so now we’re here: The internet, a daily reality for most people in the connected world, is a primary mode of engagement. The badly-designed incentives and tradeoffs that put ads everywhere, and encourage malicious actors to skirt the rules for cash, consistently weakens our ability to trust what we read. And then there’s the politics, in which it’s essential that one side hates and fears the other, with well-resourced propaganda machines moving their operations into the most effective theater of operations the world has ever seen.

With any luck, we’ll end up in a future where Twitter bots troll the algorithmic influencers and leave the rest of us alone to get on with the business of being human.

2018 retrospective

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

Image credit: NordWood Themes on Unsplash

It’s been a hell of a year – pretty much like most of the last few years!

Every year, usually between the Christmas and New Year periods (where time stands still) I’ll put some effort into an annual retrospective. Someday, I tell myself, I’ll come back and read some of these, hopefully laughing at the problems that looked so daunting in the past.

The real headline: 2018 was the year I quit full-time employment. It took a 10-year stint (at which I learned much!) and there’s still the ever-so-small chance that all of this falls apart and I have to go back to a full-time job, but for now I’m enjoying the freedoms that come with it.

(And still adjusting to it, 8 months later, really.)

Among other things, I’m trying to blog more. Yes, everyone says that, but I’ve got good reason to: In 2019 I’m starting down the road of product development (the indie hacker dream) and a big part of that is getting comfortable with being public and visible online – something I’ve generally been pretty shy about.

So with that, I need to get a bit more personal on this blog. I’ve written about that before, but the only thing that will actually cure me of this stage-fright is if I start doing it – and this seemed like the ideal opportunity to get some practice in.

January – March

If there was ever a call-to-action, January was it. I’ve been thinking about going out on my own for years, and have occasionally talked about it with friends and family, but it was always with an indefinite time horizon. Somewhere in the future, someday, I’ll take the risk.

By January, things were already heading in that direction at work. I was fortunate to have a long career at a company that I joined in the startup phase, lived with it through the maturity and eventual sale, and I still feel privileged to have done and seen all that I did as a result.

But by end-2017 things were changing in a way that diverged further and further from what I wanted to do with my life, and the likelihood of creating those opportunities were diminishing as the rest of the organization changed. It was inevitable, really – all good things eventually come to an end.

That was all in the back of my mind when my grandmother had an incident, which landed her in hospital for a week. I visited almost every day, and that time spent really put things into context for me. She recovered and was discharged the following week, but it left me to think about a lot – among them, the fact that I was still in a good place to take risks, and the sooner I took charge of things, the better.

In February that culminated in a resignation letter with a two-month notice period (developers are hard to find in South Africa and I still wanted time to figure out what I was going to do). By March, all the financial affairs were in order and I was just running out the clock – writing documentation, doing handovers and last-minute project work.


My last month of full-time employment, and the first month I started figuring out exactly what I was going to do. I had been saving for a few years, and had about 3 months of cash in reserve, but I needed to come up with an actual plan.

I’d be lying if I said I was confident about any of this turning out well. For years, people have told me, asked me, (and at one point actually swore at me) in confusion as to why I hadn’t already struck out on my own. I always told them it wasn’t that easy, I wasn’t ready, and when I was ready I’d do it – but then I never felt ready.

I felt even less ready in February, when I submitted my resignation. If there was anything I was ready for though, it was a drastic change – even if it meant tearing down everything I had built up until that point.

May – August

May was a hard month.

I’ve since learned that there’s a speed to business – it runs in 3-year, 1-year, 3-month and 1-month cycles. Very little happens day-to-day if you’re not actively working, and I’m already a fairly impatient person as it is.

I tried taking the month off, telling myself I needed a break and that I could start working on my business in June. I didn’t listen, though. Every single morning was stressful, and every day I ended up trying to do something – anything – that felt like progress. In truth I was just spinning my wheels.

I did do a lot of reading, though. It turns out there’s an absolute wealth of information on this exact problem (Double your Freelancing, the Indie Hackers forums, etc), and I was soaking up as much of it as I could, just waiting for a chance to use it.

I eventually figured that, worst case scenario, I could go via an existing freelance market and try finding gigs that way. If it meant working really long months for a while, that would still be fine. And if I really couldn’t make it work, I could always just go back to full-time employment – like I said, finding good developers in South Africa is hard.

It was in June that things started to happen. One of my biggest assets, it turns out, was my network and reputation. 10 years of working at company through which many people passed (and got to know me) actually translated into business opportunities.

Mostly it was just a matter of me being available whenever the opportunities came up, and to capitalize on them as quickly (and as well) as I could. By the end of June, two months into this new adventure, I had managed to invoice about 60% of my target monthly revenue.

By July, it was over 100% of target, and by August, with all my NET 30 invoices coming in, I was able to pay my salary entirely from my own revenue for the first time.

That was the actual life-changing moment for me this year – the realization that, all on my own, I was capable of providing a good enough service to paying customers, and earn a living off that.

I still had no idea where I wanted to go with things though, and spent the rest of the year simply taking up as many work opportunities as I could find.

September – November

An entrepreneur is someone who works 80 hours a week for himself so he doesn’t need to work 40 hours a week for someone else.

Unknown Author

These three months were the hardest I’ve worked in years, but also the most fulfilling. For the first time in ages, I was able to bring all of my skills to bear on solving problems – and it felt great doing it.

It was pretty hard work though. The total time spent was well in excess of regular 40-hour workweeks, and that’s before considering all the admin that goes into making the “back office” stuff work. A trial by fire for sure, but right now it’s paying off.


Which brings us to this month, which I had originally anticipated would be quiet, but instead turned into one of the busiest months of the year. I’m still not complaining, though. This year was a big one in terms of personal growth, and that’s the big thing I’ll continue pushing for in 2019, learning an all-new set of skills in sales and marketing.

All of that was just my working life, though. 2018 was also the year I did a few other things:

Sought Therapy

I’ve become a firm believer in therapy. My psychologist had a good take on it: People will spend thousands to maintain their cars and homes, but will refuse to spend hundreds to maintain their hearts and minds.

In my case, there was a lot of anxiety to work through (obviously: I was making a major life choice), but that also cascaded down into a ton of lifestyle and social issues I had to deal with too.

Started a YouTube channel

I quit Twitter because it wasn’t a great place to have longer-form conversations, but that was after the first few episodes of what we’ve called the “Noscript Show”. The irony is not lost on me: We set out to create a tech podcast, but by the second episode it was more interesting to talk about current affairs and social issues, of which only a few are technical.

It’s been a big deal for a bunch of reasons – one of them being my continuing paranoia about putting too much personal stuff out there. It’s been fun to do, though, as a regularly-scheduled event. And there’s always stuff to talk about, which is great.

Co-ran the Helderberg Developer Meetups

If I’m being honest it’s Charl that does most of the organizing (I need to do better in 2019, sorry!). I do have a legitimate excuse in that I quit my job this year and have had to scramble to make ends meet, so I’m hoping that 2019 goes much better.

We meet once per month at a nice spot in Somerset West, and we supply some great snacks!

If you’re interested, the Meetup page is here. Right now I’m planning on delivering a VueJS talk in January – progressive site enhancement in Laravel, with a live demo.

Digital Nomad dry-runs

There’s something appealing about the Digital Nomad lifestyle: The idea of being able to work from anywhere, taking your laptop and business with you to exotic locations. I’ve always thought I might try that out for a year – even on a South African passport, there’s lots of places you can enter for at least a few weeks at a time, and see more of the world while you work.

As it turned out, my living situation was perfect for this. Since I live in Somerset West and have to meet customers in Cape Town every couple of weeks, I started treating them like mini-nomad trips. I’d pack as if I was travelling, and plan to work wherever I Airbnb’d.

It was an informative exercise for sure. One thing I learned: It’s difficult for me to get into a really productive flow state without a comfortable environment. Doing emails, calls, quick bug-fixes and coordination while on the move is fine, but if I wanted to develop actual software I’d need a quiet place to do it.

On the flip side though: Just being out travelling was much better for my overall well-being. Even if I only get an average of 2-3 productive hours/day, doing that while being parked in new places, seeing new things, and meeting new people makes it all worthwhile.

By end-2019 I will need to decide what my next year looks like, and I’m hoping to be in a position where I’ve got that flexibility. Before renting a new place, I’ll first try spending a few months travelling about a bit. If all goes well!

Quit social media

Facebook’s just about run out of goodwill with me, and I’ve ended up completely cleaning out my profile. I’ll still keep it (I need access to the developer tools), and I may use it for pure marketing purposes down the road, but as a social network, I’m done.

I quit Twitter too, and right now I’m still on the fence about it. I know I need to build an audience and social media is a good way to do that, but I really prefer the idea of subscriptions and newsletters over the noise that is social media. At best, the integration to WordPress and Medium will stay up, tweeting stuff out to my ~900 (as of today) followers.


So this is the part where I decide on my new year’s resolutions – since on new year’s day itself I’m likely to already be busy trying to make them happen!

1.Build and launch a SaaS

Any size, any MRR, any feature-set, any market: I just need the experience of building, launching, getting customers, and everything involved in making a good SaaS business work. I’ve done a lot of reading up on this subject, and I have a lot of opinions, but they don’t mean anything until I execute.

2. Blog more

For personal as well as professional reasons, I’ll be trying to push a lot more stuff through this blog (mostly personal, insight etc articles) and Medium (mostly technical articles), with some cross-posting to other sites.

The only tangible goal I’m setting at the moment is 3 posts per week, which should be easily attainable given my typical workload.

3. Read more

If you want to write, read. I’ve got a collection of books that I’ve accumulated over 2018 (a mix of business, technical and fiction), which I really need to start reading at some point.

In the absence of the Twitter-storm of constant content, I’ve found myself turning to local news in an attempt to plug the gap, and most of that is noise anyway. So from today onwards, my Kindle stays charged and loaded, and will accompany me wherever I go.

4. Develop routines

Easily my biggest challenge in 2019 will be routines and discipline. If I want any sort of business to work, I need to take a process-driven, methodical approach to things. I have a bad habit of simply diving head-first into things that are interesting in the moment, when the real long-term gains may come from the stuff that is difficult and boring in the moment.

I’ve already addressed this somewhat, with a new approach to capacity planning. Making it work is a whole other story though!

Every now and then I’ll look back and think about what might have been (a bad habit sometimes, but necessary to develop an appreciation for opportunity cost), and I think 2018 panned out in the best possible way, given the options.

I still don’t know exactly where I’m going, but I have a fair idea of how I might get there, and at least enough of a roadmap to get me started. If this year has taught me anything though, the key is to always be prepared. Wishing for a future won’t get you what you want, and life has a tendency to laugh at the most well-laid plans.

Onwards to 2019!

I’m in favor of Article 13

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

There’s a very neat trick when it comes to obscuring discourse: conflating unrelated-yet-confusingly-similar issues to make them seem bigger than they really are, and to steal support from otherwise-legitimate causes.

This is an ongoing example (link):

Hillary Clinton is facing backlash for arguing that European leaders should try to assuage the concerns of a growing right-wing populism across the continent by refusing to offer “refuge and support” to migrants.

… politicians expressed shock and concern with Clinton’s comments, which some said appeared to contradict her 2016 campaign position on welcoming immigrants and refugees.

Eliza Relman, Business Insider US

Immigrants and refugees.

There’s a world of difference between the two. Personally, I’m in favor of more open borders and a greater flow of immigrants: people who explicitly and voluntarily decide how and where they want to live, and are prepared to put in the work to contribute positively and assimilate into the culture are all right in my book.

Refugees are very different. They’re not moving by choice, but by necessity. Being coerced out of the land they chose to live in means they’ll hang on to their culture and traditions (as they should, by their own volition).

When this issue is reported though, immigrants and refugees are routinely conflated, to the point where they’re treated as synonyms for eachother – when they clearly are not. So now, even though I completely support as much voluntary, legal immigration as countries can bear, I’m also expected to support the unmitigated flow of refugees to systems that cannot integrate them at all.

I feel the exact same thing happening with this Article 13 issue.

At its core, the EU leans in favor of human rights. The regulations handed down are more often for the protection of citizens than not – GDPR being a stellar recent example.

Article 13 protects rightsholders by preventing unauthorized use of their work. The initial draft of the bill proposed some truly terrible mitigations (requiring automated content filtering on all uploads to catch violations), but the final bill has watered that down quite a lot.

When Article 13 is reported on though, it’s usually with a message like this:

the EU’s new copyright directive have stoked fears that memes will effectively be banned

platforms will have to pay a fee to share a link to a news article and have to start filtering and removing memes.

they will arbitrarily remove content based on their terms and conditions. As a result, many creators will see their content get blocked

Only platforms with deep pockets will be able to comply with the Article 13 requirements

It’s all horseshit, reasoned from a faulty premise that legitimizes theft under the banner of “user-generated content”. The internet that anti-Article 13 activists are fighting to protect was largely built on wide-scale infringement, with the inability to enforce existing laws taken as tacit permission to break them all.

But every wild west is eventually tamed, and the internet is long overdue for this. The truth (especially in Facebook and YouTube’s case) is that copyright-infringed content has been the biggest driver of their success. While they’ll fight Article 13 and sell it as the platforms “standing up for the creators” (and we’ll come back to “creators”), in reality they desperately need the freely-generated content to keep flowing – that’s all that keeps eyeballs on the site, and ad dollars flowing.

As platforms, between DMCA, Fair Use and Safe Harbor, they effectively have a license to print money (or in this case, monetizable attention). They can provide platforms that permit millions of people to violate copyright, then simply take their time to remove infringing content, while never having to compensate the victim.

While they claim to be acting in the best interests of “creators”, they’ve managed to come up with a very narrow, self-serving definition of “creator”: anyone who uploads anything. Truly independent creators are suffering the most under the current regime, illustrated beautifully by Kurzgesagt:

It’s that “immigrants and refugees” trickery all over again: conflating the independent artists who put their backs into creating original content, with the vampires who cut and re-share it without attribution (or fair compensation) to build their own profiles. To the platforms, these are both considered “creators”, which is why this statement from YouTube’s CEO should come as no surprise:

Article 13 as written threatens to shut down the ability of millions of people — from creators like you to everyday users — to upload content to platforms like YouTube. And it threatens to block users in the EU from viewing content that is already live on the channels of creators everywhere. This includes YouTube’s incredible video library of educational content, such as language classes, physics tutorials and other how-to’s.

Susan Wojcicki

(I wonder if Susan’s “educational content” includes these horror shows aimed at young children.)

There’s a whole lot of very subtle trickery in that paragraph. For one, and this is probably the most important point in the whole debacle:

People are rightsholders too.

Most of the criticism about Article 13 sets up this dystopian scenario where a few large companies (Disney, FOX, etc) will end up being the only ones who can publish anything, since Article 13 protects copyright and copyright is evil.

Except, it’s not. In most common-law countries, copyright is actually very simple: You make it, you own it. And if you own it, you should have some say in how it gets used – including permitting people to use your stuff for free, which is what Creative Commons is all about.

Copyright is only evil in a world where you can’t create new things, and the reality here is that a lot of this outrage is coming from people who have built businesses, careers and social standing off the work of others. They’re the ones with the most to lose if laws like Article 13 pass, which is why “copyright” is routinely cast as this benefit that only applies to large companies with expensive lawyers. 

Copyright is a thing we’ve had since 1886, ratified at the Berne Convention and adopted by pretty much every country on Earth. 

You could go (right now) and outline a story about a high school for wizards. Apply some creativity, take on a new angle, mix in your own experiences, draw from a large array of influences and produce something unique – and by default, you’ll have the copyright on it.

That’s creation. That’s what authorship is supposed to look like. Taking a three-second clip from a movie and dubbing a different voice over it is, at best, imitation.

But it’s that imitation that’s now being heralded as “creation”, defended by companies that desperately need large volumes of content to monetize but cannot (or will not) invest in producing it themselves.

Of course, there are more arguments against Article 13, for instance:

Only large companies will be able to afford compliance! Only big platforms like Facebook and YouTube could possibly do this!

Garbage. Setting up your own website comes with a cost of $free, and you have full control over what goes up on there. The only reason these large companies are the “only ones who can afford compliance” is that their business model depends on large-scale, unmonitored, unchecked user-generated content that can be monetized – with bonus points for presenting all of that as a defense of free speech.

This will kill creativity! Nobody will be able to make anything new! Copyrights prevent people from experimenting!

More garbage. The thing about copyright (other than it being a basic human right, globally enforced and freely available) is that the rightsholder can do whatever they want with the rights, including making it available for adaptation.

It’s as if everyone’s taken crazy pills and forgotten that CC-BY-SA exists.

Even in a world where that experimentation/remixing/adaptation is universally good for business, rightsholders (everyone from Disney to neighbour Dorothy) should have some say over how their work is used. If they decide to prevent remixes, that’s their business. Everyone that takes a more relaxed approach will benefit, and the free market will sort itself out.

Ultimately, that’s why I’m in favor of legislation that tries to protect rightsholders from unauthorized use of their work, while still giving them the option of making their work available for adaptation and re-use: Because people are rightsholders too.

Definitely not missing the bird

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

Next week Tuesday (27 November) will mark the 1-month point since I decided to completely ditch Twitter from my daily routine. On Tuesday itself I’m likely to be very busy, but I wanted to take a moment to write some feedback on this experiment.

I can confidently say I don’t miss it one bit. The trade-off just wasn’t worth it: For every connection that was worthwhile, there were at least 20x more knee-jerk reactions and vapid hot takes, and 100x the volume of neurotic, click-bait psychic garbage swirling around a monetized trash compactor explicitly designed to make people feel angry. It felt like mental chemotherapy except it was also giving me cancer.

Twitter had basically become an abusive relationship. For the slim chance that something nice might happen, I was hanging on through torrents of garbage that made me jealous, depressed, despondent (specially the South African political feeds!), and ultimately self-destructive.

Granted, there are much better ways to use Twitter, and there are definite upsides to staying informed. Keeping abreast of major news stories is the easiest form of social currency there is, and it’s a great way to stay updated on interesting projects and useful tools. I was using it badly – as an actual social network.

Even the rage engagement is not real rage. It’s a faux rage. No one writes a snarky reply to @realdonaldtrump because they’re really engaging with The Donald. No, they’re posting to their mirror engagement crew, who they know is also in a rage engagement with @realdonaldtrump. It’s not even virtue signaling. It’s pure entertainment. It’s a simulation where they can “engage” with the President of the United States in the company of their supportive mirror engagement crew. Plus dopamine!

Ben Hunt, A Game Of You

Many months ago an old friend of mine asked me about my daily Twitter habit. He also has a Twitter account, but does maybe one post a month related to projects he works on. I explained that Twitter was becoming the national conversation platform – it was the place that journalists, newsmakers, political parties and influencers converged, and being part of that was probably a smarter move.

It turns out I was wrong, for the reasons so neatly encapsulated in A Game Of You. While there was real engagement (and real connections formed), so much more of the engagement on social media is effectively a simulation: Yes, you’re technically “engaging” with the accounts of notable people and organizations, but in reality your voice isn’t actually heard – and every post is just increasing the risk of damage.

It’s also increasingly performative. The US dealt with this years ago, and South Africa is just catching up to it now. Smart, unethical people have realized that the more outrageous shit you post, the further it circulates, the more it boosts your profile, and the greater opportunities it opens up for you. Yes, it comes at the cost of poisoning the well for everyone, but that’s a small price to pay for quasi-celebrity status.

Then there’s the short-term thinking effect, which has probably been the biggest learning for me over the last month. Twitter (or any fast-paced information environment) doesn’t so much inform you as constantly trick you into thinking you’re learning – but really its just reinforcing the stuff you already believe.

Since quitting I haven’t technically had more time to think, but I’ve been able to think through ideas that take a lot longer. Among them, I’ve been developing a sort of mini-philosophy for how I see the world (more a statement of principles and arguments at this point), and it was only after reasoning through lots of examples I came up with better explanations for things. Hot-take shitposting in humanity’s garbage compactor would have been of little help there.

(Core to that is measuring rules and behavior on a voluntary-coercive axis and balancing it for the maximum liberty of the individual, but that’s better suited for another post.)


Then there’s The Noscript Show! Every week, I co-host an hour-long livestream on which we just decompress and unpack the stuff going on in the world. On every successive episode we’ve improved on our production quality, while sticking to the principle that we script absolutely nothing on the show – and it’s a lot of fun to do.

God punishes people like you

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

Do what you’ve always done, get what you’ve always gotten.

That maxim has been part of my thinking for as long as I can remember. So has the simple, one-word slogan “Evolve” – applied to as many aspects of my life as I could manage.

It’s a mode of thought that’s brought me quite far. Every so often, I re-evaluate everything I’m doing, to see if there’s anything I could be doing differently. It made me a very engaged employee (for as long as there were new opportunities), it pushed me over the edge into quitting my first (and longest!) job, and it keeps nudging me into trying different things.

When I quit my job, one of my medium-term plans was to get myself set up for mobility. Partially because I fear South Africa has already sunk past the point of no return, partially because I like the idea of travelling around the world slowly, working and experiencing different ways of life.

I know – both from experience and from empirical research – that it’s precisely that sort of perspective-broadening experience-deepening travel that has a major, positive impact on your sense of self. And ultimately that’s where I’d like to end up, having graduated from an office desk/home desk/bed lifestyle, to one where I’m not afraid to dive into new experiences.

And so, through a set of happy coincidences, I landed a few customers that are based in the Cape Town CBD. Every few weeks I plan on spending a few days over there. In-person meetings really are the best kind (as much a fan as I am of telecommuting), and every trip gives me the chance to spread my wings a little more, acclimatizing to a lifestyle that may define the next few years of my life.

The most recent trip was my longest by far – 1.5 weeks, 3 different Airbnbs, and an overwhelming sense of gratitude that these sharing economy systems exist. I can’t imagine finding trustworthy, low-cost accommodation in a foreign city 10 years ago. Today it’s just another app.

This most recent trip is memorable for another reason, captured in the title. While standing outside the entrance for my final Airbnb room, waiting to hear back about how to actually get into the place, a local beggar came up to me.

I generally don’t like beggars. I’m a generous person by default, and happily share what I can with people that genuinely mean well.

It’s the entitled beggars I can’t stand, and Cape Town has among the most shameless beggars around – exemplified by the beggar that came up to me that afternoon.

My usual response over the years has been a half-hearted fakeout – usually something about not having cash on me (near-universally true). This time around though, looking at the situation for what must have been the hundredth time, I had one of those “eh, fuck it” moments.

So when I told him no, and he asked me why, I looked him dead in the eyes and told him it was because I didn’t want to.

If you ever want to see someone go from fake-pleading to outraged in less than a second, step directly on their sense of entitlement with your own intransigence. It works wonders.

He actually looked taken aback for a moment, then got angry, waved a finger in my face and went “You know what, God punishes people like you.” and walked off.

I thought about that one for a while, and concluded that since I’ve dealt with a decent amount of punishment already, there’s not that much worse I can go through – and besides, if He does show up to punish me, there are a bunch of questions I’d love to ask. 

And then I checked into a very stuffy 1-bedroom apartment for two days.

The real winner was the following night, when a young woman and child pulled up next to me at a kiosk and started begging. There, I’ve found the most effective response is “Are you really teaching this child to beg?”, at which point they usually realize the manipulation isn’t going to work, cut their losses, and run.

Those two incidents were, in their own way, perfectly timed. That night I spoke to the manager of a local restaurant, who bemoaned the fact that the drunk, loud vagrants around Cape Town routinely scare away tourists, hurting his business.

I heard the same from an old friend of mine, when I relayed to him the anxiety I felt sitting in Greenmarket Square. I didn’t recognize the city around me, and I had lived in it for years. Somewhere, somehow, some important things have broken and are not being repaired.

In my case, these things just motivate me to keep pushing for the next milestone. By this time next year, I hope to be travelling, and continuing to set myself up for a new life somewhere else.

Ideally somewhere God doesn’t punish people like me.

Change is coming

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

It’s nearly six months to the day since I announced my departure from full-time employment, and while I didn’t quite plan for this, it’s a serendipitous turn of events all the same.

I should lead with the headline: Yes, I just unfollowed everyone on Twitter. If my following you was important, I’m sorry for the disappointment but I need to do this for my mental well-being. My mentions and DMs are open and I’d be happy to chat.

Now on to the main event:

When I resigned in April, what I was really beginning was a journey of self discovery. Over the last few months there have been many, many changes for me – most of them good! In my April post I mentioned that:

In future, I might write more openly about the life I came from, the demons I’ve wrestled with over the years, and the moments of breakthrough that have set me free.

And here we are right now, in the future, and I’m holding up my end of the bargain with past-Wogan. This is going to mean a few changes for me.

The way I blog is changing. For about ten years, there was a lot of stuff I was frankly terrified to say. Some poor decisions early in my career (and a tenuous situation at work) meant I self-censored a lot of the things I would otherwise have posted. What little I did write here was filtered, sanitised, and effectively produced with a formal tone and at arms length. Most of my posts could be copied straight into a corporate email and nobody would raise an eyebrow.

I’m not upset about any of that – if anything, I’m grateful. There’s a lot of dumb shit I absolutely could have said, that would have gotten me in far more trouble. With observation came experience, and this time around I’m a lot more sure of where things stand.

Most of the trouble comes from my interest in politics. Actually it’s my interest in most things related to the construction and maintenance of civilised life – from languages, to infrastructure, to the cultural climate within which we relate to eachother. Figuring all these things out (and trying to explain them) is my absolute favourite past-time.

Since resigning, I’ve taken to Twitter a lot more than usual. I found it to be a very stimulating platform, with a massive feed of new information coming in every single day. And I’ve responded to that, tweeting and engaging on a near-24/7 basis.

Jun 2018: Your Tweets earned 47.5K impressions over this 30 day period

Oct 2018: Your Tweets earned 487.4K impressions over this 27 day period

I love doing this – the debates, the arguments (constrained as they are by the 280-character limit, threading, and like-baiting), and meeting like-minded people this way. Unfortunately I can’t keep doing it at the same pace, though – I have new responsibilities.

In April I quit my job to pursue a new set of opportunities. Over the last 6 months, it’s panned out better than I had expected. I’ve been able to accumulate something of a runway, enabling me to do what I really want to do: Carve out large blocks of time to do in-depth SaaS builds on products I think I can sell.

That requires relentless focus, though. While it was easy to spend hours a day on Twitter in the beginning, it’s becoming a distraction now that I’m fully engaged in work. I don’t want to lose any of the momentum I’ve built, so I’m trying something new.

I enjoy thinking about complex things, then discussing my ideas with people who have interesting things of their own to say. It’s hard to do that on Twitter though, thanks to the sheer firehose of data:

After spending an ~hour with @WotanZA having an actual conversation (diverse as it was), and the next hour sitting on a quiet balcony and just processing everything, I felt like I was in a much better mental state. Then I checked Twitter and it all went to shit.

I currently follow many great accounts, and I get a massive amount of new info every day from all sorts of places: left- and right-wing news media, cryptocurrencies, financial services, gaming, mergers, tech industry news, psychological studies, the list goes on.

It’s an addiction I can’t really afford to feed anymore, though. I’ve consciously observed how I use Twitter over the last month, and I’ve noted several things:

  • Opening the app to check for new content has become routine, and I’ve often found myself in the aimless-fridge loop: Opening the same door over and over again even though there’s nothing new.
  • I typically scan the entire timeline every morning, consuming every single tweet
  • I post knee-jerk reactions to a lot of stuff, and more detailed threads when I’ve had the time to think about it
  • I get into arguments quite a lot, which is hard to fit into the platform’s limitations and doesn’t give me a good place to fully express my argument. Most importantly:
  • Every time I open Twitter, even just for a 10-second check, disrupts minutes worth of productivity.

In effect, I lose hours of daylight productivity (which is when my feed is the most active), and have to make up for it in the evenings. It’s led to a disrupted sleep schedule and failures to make and stick to my plans. I’m also pretty sure it’s contributing to weight gain and hypertension, but the disruptions to the first two mean I have no disciplined regime for monitoring the rest.

So for my own health, discipline and mental well-being, I’m trying something new. I’m going to unfollow every single account on Twitter.

This means that the only things I get from the app are things that people send to me directly and deliberately: @-mentions, tweet replies and DMs, which I will happily respond to. As a messenger app, Twitter would be as manageable as WhatsApp, which takes up very little of my time every day.

I’ll still use Twitter to share stuff, but they’ll either be long-form threads or links to posts like this one. I decided months ago that I need to get into the habit of producing more long-form content anyway (part of another long-term goal), and this is a good way to do it.

This does mean that I’ll be quitting a very strong addiction cold-turkey. FOMO is real, and I think I may have developed a dependency on the constant stimulation, so it’s probably not going to go well at first.

After the jitters though, I hope I can direct my writing energies into something more productive: Longer, more detailed posts made on this blog, shared for discussion on Twitter. I think this is the environment that will let me do my best work, while providing quality content to the people that follow me (which is something I take very seriously).

It should also result in more consistent, “on-brand” stuff. Using Twitter like a personal account means I end up shitposting a lot, and long-term that’s not really adding much value for me. Other than being entertaining, of course.

This blog will get a lot less formal, a lot more conversational, and will probably focus on politics and the culture wars as much as technology. I doubt I’ll ever write detailed technical articles here again, but I’ll leave the full history intact – they’re my best-performing posts right now.

I generally leave comments open on my posts, but if you want to get in touch directly and have a private conversation, my details are on the Contact page. Let’s do this!

Consume Laravel APIs from VueJS with Passport

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

This post was moved to Medium – the Gutenberg upgrade and a bunch of other editor malfunctions broke most of the code samples.

New article here: – apologies for the inconvenience!

It’s just about GDPR time!

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

(Image credit: Flickr)

I still remember back when the Internet was an escape from the real world. Today, it seems that the real world is an escape from the Internet. Over the last 30 years, a substantial amount of daily life has moved online for billions of people: News, communication, sharing, commerce, banking, and entertainment.

Wherever human activity goes, regulation inevitably follows. This year it seems like the internet is truly going mainstream, with new regulations from 2 of the 3 largest economies in the world: the US’ FOSTA, and Europe’s GDPR.

I’m actually quite a fan of GDPR – or at least, what it’s trying to do. In GDPR, there’s an attempt to extend protection of EU citizens rights across the Internet, following their personal data wherever it may end up. And the regulations make a lot of sense from a consumer perspective: If companies want your personal data, they have to prove they can handle it responsibly, and you retain basically all the rights.

GDPR goes “live” on the 25th of May (just under 3 weeks!), and I’m hoping it heralds a new era of more responsible data practices. I think everything they’re trying to do is achievable, and should be baked into organizational and system design for new businesses (“privacy-first architecture”).

For existing businesses though, it’s going to be hell of a slog. I’ve worked on data audits and compliance for some of the world’s biggest brands, and it’s impossible to overstate how tricky full compliance is going to be. When your database software vendors have gone defunct, when your processes have spiraled out into spreadsheet nightmares, when your primary method of data exchange is email attachments, you’ve got a problem.

Over the last few days I’ve put some stuff live to help with that. For one, there’s already a wave of companies that are blocking the EU from accessing their services outright. It’s a sensible short-term move if you need time to assess the impact, and update your processes to comply. The rights of Erasure and Portability could require non-trivial work if you’ve been historically lax with how you manage data internally.

For that use-case, I pulled together a repo (gdpr-blackhole) of the IP ranges (IPv4 and IPv6) of all 28 EU member states, UK included. Brexit or not, early indications are that the UK will adopt GDPR in its entirety.

Then, since I work mainly in Laravel, I wrapped that up in a simple Middleware class that makes blocking EU IPs straightforward (laravel-gdpr-blocker).

Finally, I’ve just put a short blog post live on Amberstone: “What small businesses need to know about GDPR“. Large businesses already have armies of lawyers, auditors, and officers to assess their liability. Small businesses are not exempt, and if you want to participate in the second-largest economy on the planet, you’re going to need to know a bit about what GDPR asks of you.

Overall, it’s an exciting change. The ICO has already indicated that they’d sooner work with non-compliant organizations to improve their stewardship of personal data, making the eye-watering fines a last resort. And if all goes well, this is exactly the sort of bar-raising work we’ve needed on the world stage.

And with any luck, it means less Excel spreadsheets loaded with personal data. Time will tell 🙂

Oh boy, where to begin.

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

On the 5th of May, 2008, I started my first day at work.

I doubt I’ll ever forget it: To beat the traffic, I carpooled with an intern from a nearby law firm, arriving in Cape Town at around 6am. I had to wander around the darkness of Kloof Street for a while, trying to keep busy (and warm) until someone showed up to let me in.

It was a surreal morning for me. The preceding family drama is complicated, but the summary of it was that I had absolutely no idea what I was going to do with my life at that point. I ended up on a bus from Pretoria to Cape Town the week before Christmas 2007, and lived with my father for a few (very strained) months before I got any semblance of an act together.

I was nervous as hell. At the time, I didn’t actually think I’d land the job. Luckily I had some experience building websites, and between a meager portfolio and an old friend’s insistence on listing at CareerJunction, a recruiter found me.

I failed my first interview. It still amuses me to know that the person who decided not to hire me back then still works at the company, and we’d ended up working together on a few things over the years. Sometimes I wonder if she regrets not having hired me, but I suspect I wouldn’t have lasted in her team anyway.

Luckily, I passed the second interview – between the recruiter and the HR director, they thought I might have some potential. In the end, I landed in the Paid Search team.

While my dress code (on the whole) has been very informal over the last 10 years, I dressed for the occasion on my first day. And it was while wandering around Kloof Street that the outsole on my right shoe became partially unstuck, making an embarrassing noise every time I walked.

Nervous, overdressed, surrounded by people I didn’t know in a city I’d never lived in, praying that my shoe didn’t completely come apart before I could get home. That was my introduction to the company that would carry me through the next ten years.

I get a weird look when I tell people my first job’s lasted this long. It doesn’t feel that way with all the roles I’ve held since 2008. I’ve done pretty much everything there is to do in digital marketing – search, email, display, analytics, consulting, architecture, compliance, project management, team leadership, training, and staying on top of the never-ending waves of technological and social progress.

Right now it feels more like I’m graduating from one of the most arduous post-secondary education experiences imaginable. I’ve had hundreds of hours of theory and thousands of hours of practice. If Gladwell’s Outliers is to be believed, I’ve sunk the requisite 10’000 hours required to achieve mastery in digital marketing. And then some.

And I’ve traveled. My god, have I traveled.

Every airport I’ve flushed a toilet in.

I’ve been as far east as Phoenix, Arizona (connecting flight on a return trip from Salt Lake City), and as far west as Melbourne (my first on-site development/consulting gig). It’s been a privilege to see so many different parts of the world, and the exhaustion of business travel has thoroughly disabused my notions of the glamorous lifestyle I once thought it was.

The world has changed. 2008 was a different time: Facebook was only 4 years old, Twitter was a toy that gained some media traction during Barack Obama’s campaign. The iPhone 1 had been released just last year.

The top story that week – food riots in Somalia. Today, there’s food riots in South Africa.

And I’ve changed. In future, I might write more openly about the life I came from, the demons I’ve wrestled with over the years, and the moments of breakthrough that have set me free. For now, it’s enough to acknowledge that 2018 Wogan is a far cry from 2008 Wogan, and I’m grateful for every bit of progress in between.

Today’s my last day. It’s a mixed feeling – strange, to think that I’m moving on after so many years; a relief, knowing I’ve reached the end of this road; anticipation of what the future might bring, and the confidence that comes with real-world experience.

At last, it’s time to move on. I don’t know for sure what the next ten years are going to look like, but I’m eager to find out!

Subscription payments in South Africa

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

So you’re a South African business that wants to take payments for a subscription-based service. You’re probably going to have a mix of local and international customers, and want to know what services are available.

Well, I’ve got some good news, and some bad news.

The good news is – there are ways of doing this. Even with South Africa’s relative backwardness in global economic participation there are still a few options.

The bad news is: the best options are currently unavailable to you, and are likely to stay unavailable in the long term. If you have the means to do so, incorporating and setting up banking in a major economy might be the better option.


Local Options – EFT

It goes without saying that local EFT is an option. If you don’t want to wait for interbank delays, there are a few vendors that offer Instant EFT solutions:

In my experience, PayFast has the easier onboarding path, but you might have a tougher time integrating it into your application. None of those solutions incorporate any sort of subscription management though – it’s on you to keep the accounts in check.

Depending on your capabilities, debit orders might be an option. If you can obtain debit order mandates from your customers (signed papers, recorded calls, etc), you can use Sage Pay’s NAEDO collection system:

Local Options – Credit Cards

This is where it gets a bit more interesting!

PayFast allows you to accept credit cards online, and is relatively easy to set up if you’re not looking for advanced integration. They will make your life easier on one front – they understand subscription management:

I’ve worked with their API before though, and you’re going to need to exercise extreme patience with it in order to get anything done. I hope their systems and documentation improve over time!

PayGate also offers a subscription product, but they make it obvious that they’re geared towards larger businesses – you have to start the process with a sales inquiry:

Global Options

There are too many global vendors to list, but when it comes to what you can feasibly use in South Africa, it narrows down to one pretty quickly: PayPal.

I implemented full-on subscription management using PayPal for Write500 – and it worked quite well. PayPal can accept credit cards, manage subscriptions (including pausing and resuming), and has a solid set of developer tools for integrating it into your application.

You’ll want to create a Billing Plan (your product), then a Billing Agreement (a paid subscription to it), so that Paypal can issue Invoices and settle them automatically. Start here:

The one limitation: You need an FNB account to receive any of that money here in SA.

Going further abroad, you do have the option of incorporating a business remotely. It’s a ton of paperwork (depending on a ton of factors), but one vendor is offering a simple solution to it: Stripe Atlas.

For a one-time fee of $500, and a decent amount of effort, you can incorporate remotely in Delaware – including all the documentation and registration you need to run a corporation within the US. That includes a account, which is basically the global, golden standard for subscription credit card billing.

There’s a couple of major downsides on the administrative side, though – repatriating that money comes with its own set of tax challenges. From what I’ve seen, this is only a really viable option if you’re expecting to do a lot of subscription billing for global customers, and the Stripe fees are a more attractive option.

Other Options

I would be remiss if I didn’t mention PeachPayments – a Cape Town-based company that attempts to make all of the above easier for local companies. If you’re not keen on the idea of getting your hands dirty with integration logic and setting up subscription billing, those will be the folks to talk to.

Then of course, there’s bitcoin. If you really feel like jumping into the murky waters of cryptocurrency for your project, give Coinbase a try. They offer a recurring billing option denominated in Bitcoin. To cash those coins out locally, the simplest option will probably be to hold a wallet, and sell those coins on the local exchange to recover your Rands.

I know that there are likely several other services out there, but if I were starting from scratch today, and wanted to be able to accept payments from a global customer base I’d probably still go with PayPal, myself.