Mastodon Social Network Logo

Keen-eyed observers will note that this blog has been fairly inactive for a very long time. It’s been my little corner of the web for many years. I bought the domain in 2004, though I didn’t start posting here until 2007. The archives go back to about 2000, with many posts imported from earlier online spaces of mine (Blogger, anyone?).

For years though, this website has languished, with tiny spurts of activity and long bouts of silence.

So what is it that’s gotten me inspired to start writing here again? With two posts this past week on Mastodon, obviously that’s been a bit of an inspiration, but what is it about Mastodon that has me wanting to revive this little old blog of mine?

In short, it’s something I touched on in a previous post – the way Mastodon reminds me of the early days of the internet.

Back before private equity and corporations took over and started building walled gardens to keep us trapped us inside.

Before advertisers started throwing mountains of money at anyone who could deliver eyeballs and mountains of personal data in return.

Before the great algorithm that rules all, and tells us what we want to see, as it peels back our eyelids and force-feeds us the content that will maximize “engagement”.

Before rage farming and viral tweets and celebrity meltdowns and election misinformation and covid disinformation and the endless battle against spam and bots and nazis.

The internet in its early days was a place made by the users of the internet, for each other. People had their own spaces, loosely connected over technologies like RSS and Atom.

The very foundation of the internet is openness. The free exchange of ideas and information. With open standards and protocols to tie it all together.

The modern social web is the antithesis of the open web. It is all walled gardens with anemic APIs and private apps. It does not want you to move around and explore the open web, it wants you to stay seated and receive the content that will keep you engaged while it siphons off your personal data to sell to advertisers.

Mastodon and the Fediverse feel like a return to that earlier internet. Without advertising, it feels unblemished by corporate greed. Without the algorithm constantly elevating the latest trends and viral messages above even the people you choose to follow, Mastodon feels more conversational. Engagement takes on a new/renewed meaning.

When you find a Mastodon community aligned with your interests, your local timeline is a treasure trove of new connections and conversations. Your home timeline is your own, made up of who and what you follow, with the newest stuff up top.

There are no tracking cookies, no link proxies, no advertisements, and no data harvesting. Mastodon doesn’t know where you’ve been and it doesn’t try to follow you around the internet.

And Mastodon is built on an open protocol, ActivityPub. More broadly, the Fediverse is made up of many different services that implement ActivityPub, and all of these disparate services are connected to each other.

The Fediverse is distributed and decentralized, but not in a bullshit web3 marketing kinda way. It is small pieces loosely joined.

But I digress.

So what does all that have to do with this blog? I mean, aside from inspiring a few posts? Well it’s gotten me thinking about my presence on the web and data ownership.

This is my home on the internet. Over the years, I’ve struggled with how it fits into the broader ecosystem of the modern internet and social media.

It languished while I built up my presence in other spaces, sharing my thoughts and stories elsewhere.

But Mastodon has reminded me of what was, and can be again. We don’t have to give over the entire public square to private ownership by a few.

We can build our own communities, and we can own our data and self-publish, and still find human connection on the internet.

And we don’t have to sell ourselves to do it.

So, is this just another spurt of activity, soon to be followed by a long silence? I don’t know.

But as I dig further into Mastodon and the Fediverse, I find myself inspired to write about it, and this is where I will do that.

Mastodon Social Network Logo

The average person’s experience of signing up for a social network thus far has been pretty straight-forward. When you join Twitter, you go to and sign up, that’s it. You’re on Twitter. Or perhaps you download the app and sign up there. But beyond picking your username, there’s not much else in terms of decisions to be made.

One of the first stumbling blocks for new users coming to Mastodon is the concept of servers. It can be a source of confusion initially, particularly for non-tech folks as the terminology can be unfamiliar.

A common suggestion offered to people joining Mastodon, is that choice of server is important. Finding a like-minded community that has values and guidelines that align with your expectations will greatly improve your experience, particularly with local feeds.

As such, many people face a touch of analysis paralysis when scrolling through that big list of servers, reading descriptions, server rules, and codes of conduct, not quite understanding the full significance of this choice, but having the sense that it’s somewhat important.

This introductory experience can be a bit confusing to some, and downright fear and stress-inducing to others. But it doesn’t have to be.

I’m a PHP developer but also more generally an open source software enthusiast. Should I join, or I of course have interests besides technology as well. I am Canadian, should I join There are literally thousands of servers out there all dedicated to different interests with different rules and community guidelines.

One of the things to know about Mastodon is that unlike just about every social website in history, your data and profile are largely portable, meaning you can change servers and take your data with you.

The process is a bit clunky, and there are limitations, but knowing it’s possible should make your initial choice of server a little less stressful, as you can always move, and take your followers, follows, and other data with you.

I’ll get to how that works, but first let’s talk a bit about why Mastodon is like this.

Why must I choose?

Mastodon is a decentralized network, meaning there is no central server behind the service, there is no single owner. The network is made up of a bunch of independent servers, some run by organizations, some run by individuals.

Some servers are quite large like the general-interest with 178k active users, where some shared-interest servers like the one I’m on, is a bit smaller with 18k active users.

Some servers might be invite-only or require prospective users to fill out an application as the owner is looking to build a more curated community, and some people even setup their own single-user servers just for themselves.

All of these servers share content by federation over the ActivityPub protocol- basically, they all speak the same language and can easily pass data back and forth, which is what enables somebody on one server to follow and receive content from anybody on any other server in the network.

This all sounds very complicated, but it’s not really. A very common analogy that everyone should be familiar with is Email. We all have email addresses. You might have a Gmail address, or a Yahoo, or Hotmail. Maybe your email is provided by your Internet Service Provider, or maybe you somehow still have an account. Many of us have email addresses specific to our place of work.

All of these email addresses are hosted on different servers and all of these servers can speak with each other and exchange data because they speak a common language or protocol.

This is why Mastodon user ids are a bit more complex-looking. When you’re looking for a person on Mastodon, you will generally need their username and their server. For example, I’m Like with email, the part after the second @ is the server where my profile lives, and helps your server find my profile on my server.

There is a bunch of nuance and exceptions here, like when you’re addressing someone on your own server, you don’t need the back half of the address. And if your server for some reason blocks my server, then we won’t be able to follow each other as our servers can’t communicate.

But that’s it in a nutshell- there is no one central authority or server called Mastodon. There are a bunch of independently run communities running Mastodon software that can communicate across their boundaries using a shared protocol.

How to move your profile to a new server

Note: not quite everything is completely portable - any content and media you shared on the server can be exported, but cannot be imported to another server. This is due to technical limitations.

When changing servers, you can export your followed accounts, muted accounts, blocked accounts, and blocked servers to a .csv file, which you can then import to your new profile.

To do this, on your old profile, go to Preferences->Import and export->Export, then select the things you want to take with you and export them to files.

Then on your new profile, go to Preferences->Import and export->Import and upload your files there. Easy peasy!

This works great for your follows, lists, blocks, and so on. But what about your followers? There is no .csv export available for them. You need some way of letting them all know where you’ve moved to, so they can update your address in their follow list.

Thankfully, Mastodon has made this process really easy. At the bottom of your Profile page, you’ll see a section with features to redirect your old profile and automatically update your followers with your new address.

This process is completed in two steps. First, you have to setup your new account. On the Profile of your new account, click the link under “Moving from a different account.”

Here you will enter the address of your old account and click “Create alias.”

Next, you will forward your old account to the new one by visiting the link under “Move to a different account” on the Profile of your old account.

On this screen, enter the address of your new account, and your password for your old one, and click Move Followers.

Boom! All of your followers will automatically be instructed to unfollow your old account, and to follow your new account.

This could take a bit of time as the request needs to be federated through the network to wherever your followers are. It also may not work for all of your followers as some servers may not support the move activity.

But again, just knowing this is possible should take a bit of the stress off of choosing “the right server” from the get-go.

I still need to choose a server, how do I decide?

All that said, there are a few simple things to keep in mind when choosing a server to get started on.

I highly recommend starting with the list at Any servers listed there must adhere to the Mastodon Server Covenant, a baseline set of requirements that the server operator will commit to:

  • Active moderation against racism, sexism, homophobia and transphobia
  • Daily backups
  • At least one other person with emergency access to the server infrastructure
  • Commitment to give users at least 3 months of advance warning in case of shutting down

If you find a server that seems to fit your interests, great! Sign up and get exploring! If you’re not sure, pick a general-interest server, or a regional server, or just sign up to, the server run by the creators of Mastodon.

Over time you’ll get a sense of the community on your server, you’ll learn about other communities, and if you find a place you think would be a better fit, you can just pick up and move.

And remember, what server you’re on does not determine who you can follow- you can follow anyone anywhere in the Fediverse (as long as your servers don’t block each other, a topic for another time).

A final consideration, you could just have accounts on multiple servers! Nothing stopping you from participating in multiple communities. Just be respectful of the customs and culture of each.

Welcome to the Fediverse!

Mastodon Social Network Logo

The great un-twittering is well underway. However you feel about Elon Musk’s takeover of Twitter, many people are choosing to leave the platform under his leadership, or at least starting to explore alternatives.

Enter Mastodon. Or, to use the more accurate nomenclature, the Fediverse.

The Fediverse describes a broader network of services that are connected to each other over the open protocol that powers it all, ActivityPub.

But nevermind all that for the moment. Mastodon is the Twitter-like microblogging replacement that Twitterati are flocking to in search of the next thing, in case the last thing is not long for this world.

I first tried Mastodon a few years ago, and found it lacking – buggy, slow, and nobody there. I signed up again about a year ago, and have popped in from time to time to see how things were progressing with this nascent social network.

With the recent influx of Twitter refugees, the network is being put to the test. User registrations have exploded, some of the bigger servers have been struggling with the load, and there’s a lot of patient Mastodon old-timers sharing explainers on the technology, terminology, practices, and traditions of Mastodon to the new arrivals.

I have found myself fascinated by it all. It brings to mind the early days of Twitter, and even the early days of the internet itself.

There’s a real sense of community and DIY-ism. Users are figuring out the conventions and best practices for how to build healthy communities together.

Mastodon is a federated network, meaning that rather than the network being owned and controlled by a single entity (or individual), the network is made up of many different instances or servers that share content over the ActivityPub protocol.

Servers are generally oriented around shared interests, so Local timelines populated with posts from people on your server, can be super interesting and useful, and a good way to find people with similar interests to follow.

Choosing a server to sign up on feels a little daunting at first, but it doesn’t have to be. Ideally, you will join a server that aligns with your interests, but there are plenty of general-interest servers, and no matter where you end up, you can follow anyone anywhere in the Fediverse, and your account data is portable.

In a social media world largely driven by algorithms meant to drive engagement, and walled gardens meant to capture your attention and keep it, Mastodon is refreshing. Your Home timeline is populated with posts from people you follow, in reverse-chronological order.

Content moderation is not a controversial subject. Indeed people who run servers are encouraged to actively moderate against bad behaviour, or risk being cordoned off from broader network.

There is no advertising on Mastodon, so the network isn’t trying to aggregate and harness your data in creepy ways to sell your attention to advertisers. Instances are often self-funded through crowd-funding initiatives and donations from the community.

And it’s all built on open protocols and open source software. This is truly the realization of the dream of the early internet. This is the antidote to the current corporatist algorithm and advertising-driven internet of a few massive websites fighting to extract ever more data from you to sell to the highest bidder.

The Fediverse is made up of many interest-focused Mastodon servers, but also any service that implements the ActivityPub protocol. There are Instagram-like services (Pixelfed), Facebook-like services (Friendica), YouTube-like services (PeerTube), Meetup-like services (Mobilizon), Reddit-like services (Lemmy), and many more.

All of these services are connected over the ActivityPub protocol, and you can follow anyone on any service right from Mastodon (or wherever you are in the Fediverse).

Many quesitons remain. Is Mastodon ready for prime time? Can it really replace Twitter? Will it reach critical mass? Can it scale? Are my friends there? Is it too complicated for normal people? What are Toots and Boosts?

This blog post is long enough, so I’ll just close by saying that based on my experience the past few days, I’m very optimistic about Mastodon and the Fediverse. It is demonstrating that the open web is still alive and well, and I’ll have a lot more to say about it in the future in this space.

In the meantime, connect with me in the Fediverse:

You can also follow this very blog in the fediverse:

25 years ago in June 1995, my best friend and I went on a life-changing journey across Canada (well, the western half at least). It was my first trip anywhere without my family, I think it was his as well. 

We bought a 30-day Greyhound pass, packed our backpacks, and set off.  We spent 150+ hours on the bus over three weeks, and hit every major city (and a lot of little road-side truck stops) from Ottawa to Vancouver and back.

We went to prom with a friend in Winnipeg, we spent Canada Day on Prince‚Äôs Island in Calgary, we mall-ratted in Edmonton, hiked a mountain in Jasper, were awestruck by the city of glass, and we took a rest in Banff before the long trek home. 

We slept on the bus when we could, stayed in youth hostels wherever we stopped, and we met travellers from around the world. When we couldn‚Äôt pronounce their names, we would just refer to them as their country (‚ÄúHey Germany, where we going tonight?‚ÄĚ). They would teach us about their home countries, and help us see our own through new eyes.

We made memories for a lifetime. I would go on to develop a love of travel, and would take those experiences with me everywhere I‚Äôd go. We would have many more shared experiences in life, but that trip west is what first truly cemented our relationship. 

As the years passed, that trip would be a touchstone in both our lives. 

Two and a half decades, our friendship ebbing and flowing as friendships do, we always had that trip, and we always knew that no matter how much time had passed, we would forever be connected through that experience.

Marc passed away suddenly this weekend. We had not communicated in many years, I feel awful about that. But I think of that trip today, as I have many times over the years, as I know he did as well. That trip would shape our friendship and our lives together and apart.

What a long and crazy trip it’s turned out to be.
I miss you buddy.
Rest in peace.

We just got back from a week in Cuba at the beautiful Pullman resort in Cayo Coco. I didn’t bring any film cameras with me, and I didn’t take a lot of pics, but here are a few:

The entrance and lobby of the Pullman Cayo Coco are beautiful, and of course so are the old cars that would pop by on occasion.
View from the lobby in the other direction is killer
The lobby bar and cafe is definitely one of our favourite things about this hotel.
This piano bar is a bit of a hidden gem, a tiny room behind the main lobby bar.
We took an excursion out to a privately-owned farm in Marón and the owner had this beauty.
This young calf was only 7 days old.
An old theatre in Marón

Got another new (old) camera, a Pentax ME, so I went out and shot another roll on a very cold day.  Totally forgot to make a note of what roll of film I put in, but pretty sure this is Kodak Gold 200.

Pentax ME | Kodak Gold 200 | January 2018

Pentax ME | Kodak Gold 200 | January 2018

Pentax ME | Kodak Gold 200 | January 2018

Pentax ME | Kodak Gold 200 | January 2018

Pentax ME | Kodak Gold 200 | January 2018

After the fun I had shooting with my Pentax film camera last month, I kinda went on a bit of a used camera equipment shopping spree.  My favourite purchase was a Nikon F75 Рone of the last consumer-level film cameras Nikon ever made, at a time when digital was eating up the film market.

Nikon F75 | Kodak Ultramax 400 | December 2017

This lovely camera has every feature Nikon had learned to put into cameras in 2003, in a nice compact and light package.  I picked this up off Kijiji for the incredible price of $65!  The fellow I bought it from took great care of this camera Рnot a ding or a scratch on it, and everything works perfectly.

Nikon F75 | Kodak Ultramax 400 | December 2017

The camera came with a 28-80mm kit lens, which is perfectly fine, but I had been wanting to get a basic 50mm prime lens, so I ordered one from a third-party seller on Amazon.  This lens makes the camera even more compact and ultra-portable, and takes wonderful portraits.

Nikon F75 | Kodak Ultramax 400 | December 2017

Having a fully automatic camera sure makes it easier to get shots of my favourite subject!

Nikon F75 | Kodak Ultramax 400 | December 2017

For my first roll of film in this camera, I shot Kodak Ultramax 400.¬† Comparing this new batch of photos to my last roll, I feel like the colours are not quite as rich.¬† I’m not sure I controlled for enough factors to really judge the film itself though – this is a new camera, different ISO, some of these photos use a flash, not to mention the seasonal change – in my first roll, there was still some colour in the landscape – for this one, every background is pretty drab.

Nikon F75 | Kodak Ultramax 400 | December 2017

I’m still really enjoying my new hobby.¬† On my recent shopping spree, I also picked up a 50mm lens for my Pentax I’ve yet to shoot with, and I bought some other varieties of film to try out.

Nikon F75 | Kodak Ultramax 400 | December 2017

I did try to mix up my subject matter a bit – Rio is really lovely and photogenic and all, but this is getting a bit ridiculous.

Nikon F75 | Kodak Ultramax 400 | December 2017

Unfortunately, it’s not the greatest time of year for getting out and shooting, but in February we’re heading to Hawaii for a vacation, and I definitely intend to bring a camera or two, and shoot lots of film.

One final note, I found another place to get film processed in Ottawa – Sooter’s has a location on Queen Street near Bank.¬† This location is much closer to my work, so very convenient.¬† The photos and scans turned out great, so I think I’ll probably go back there.

Last month, I picked up a Pentax P30N 35mm camera for $20 on Kijiji, got some Kodak Gold 200 from Walmart, and shot my first roll of film in over a decade.  Here are a few shots from that roll:

Pentax P30n | Kodak Gold 200 | November 2017

The day we went out for this shoot was a clear day in late fall, so the sun was very low in the sky, creating harsh shadows and difficult shooting conditions, but I managed to get a couple good shots.

Pentax P30n | Kodak Gold 200 | November 2017

The Pentax P30n is a manual-focus camera from the late 80’s.¬† Having not shot on anything other than an iPhone or point-and-shoot digitals for the better part of fifteen years, it took a bit of getting used to.

Pentax P30n | Kodak Gold 200 | November 2017

I shot most of this roll on aperture-priority mode, just trying to get the hang of remembering to advance the film after each shot, never mind trying to frame, focus, and get a shot before my adorable subject would take off running in another direction.

Pentax P30n | Kodak Gold 200 | November 2017

I love the colours and contrast of film.¬† I usually have to tweak digital photos to get the colour in Rio’s coat to really pop, not so here.

Pentax P30n | Kodak Gold 200 | November 2017

The camera seemed to have a film-advance issue about mid-roll (see last pic), so there were some shots ruined due to malfunction, a bunch of shots were out of focus (manual-focus newbie), some were just poorly framed by me, and then of course there were a handful where Rio would look away or move just as I snapped.

Pentax P30n | Kodak Gold 200 | November 2017

These are, of course, the joys and frustrations of shooting on film.¬† The outcomes can be incredible, but every shot can be a roll of the dice, and you won’t know for certain until the prints (and scans!) come back from the processor, likely days later.

Speaking of processing, there are not a lot of options left in Ottawa when it comes to film processing.¬† It’s not like you can just pop by the local Fotomat hut or drug store photo counter anymore, they’ve all gone the way of the dodo in these parts.¬† This roll was processed at GPC Labworks on Bank Street.

All in all, I’m happy with the shots that did turn out, and I’m excited to shoot more film soon!


I just pushed out a new version of PHP Caddy today with a bugfix that should make it a lot more stable.

I have been using PHP Caddy as my primary development environment on my PC at work for the last month or so.  At first it was wonderful Рstable, fast, easy, as advertised.  But as I got into the swing of using it, I started running into issues with the PHP FastCGI (php-cgi.exe) process crashing and causing 502 Bad Gateway errors Рoccasionally at first, but more frequently over time until it was barely usable.  I have no idea what causes it to crash, and I have exhausted my google-fu trying to find a cause or solution, until now.

When I first started building¬†PHP Caddy, I had PHP 7.0 installed, and that’s what I’ve been running since. ¬†This week, as the crash frequency was reaching unbearable levels, I decided to try upgrading to PHP 7.1. ¬†Initially, this didn’t make much difference – the crashing continued. ¬†However, in my continuing search for a solution to the problem, I found a reference somewhere that said that PHP 7.1 had added support for running multiple processes on Windows. ¬†This rang a bell, so I looked into it.

Success!  Setting the environment variable PHP_FCGI_CHILDREN=2 before starting up the PHP FastCGI process, tells php-cgi.exe to spawn multiple processes (3 total), and fixed the stability issues completely.  I have now been running PHP Caddy continuously for the past two days without crashing.

If you are using PHP Caddy and have been experiencing occasional 502 Bad Gateway errors, try upgrading to PHP 7.1 and be sure to run composer global update.

Here’s something I have been working on recently:

PHP Caddy is a tiny PHP development environment for Windows, inspired by Laravel Valet.

No hosts file, no configuration, no frills. Just run it and go write some code.

In a world where Homestead and Valet exist, this is a good question.  A couple things:

1) Due to the corporate nature of my current job, I work on a PC during the day, so Valet (MacOS only) is not available to me.  At home I get to play with Valet, and it makes daytime me very jealous.

2) While as a developer I have slightly higher privileges on my PC¬†than the average bear, I still do not have full administrator privileges and can’t install everything I want, so some of the Valet for Windows alternatives that provide all the dns niceities of Valet are not available to me.

3) Sometimes a virtualized environment like Homestead is a bit (sometimes a lot) slow on Windows.

So, I built this thing. ¬†I like it a lot. ¬†It runs very fast for me, and makes developing in PHP on Windows a bit more enjoyable. ¬†Maybe you’ll like it too.