I’ve joined the Fediverse. Another kick at the can

It was 1995 and I was in San Jose at a General Magic Developers conference. It was a weird week for me, since I was distracted by a referendum back home on whether Quebec would leave Canada. But something else stuck out for me that week. Wherever I went, there were billboards for companies with web URLs on them.

I had been following the web, but what really struck me that week was that this was moving out of technical world and into mainstream. Billboards in Canada didn’t have URLs on them, but I could now see that was coming, and it felt like a revolution. There was a feeling that this would democratize communications and let anyone become their own publisher. It would break the bonds on the large gatekeepers to communications: the telecom companies, the newspaper chains and the TV channels.

And it did,… for a while. Community associations and clubs and bands and special interest groups and sports teams and all sorts of other groups set up their own web sites. Everything was exciting, chaotic and dynamic. How do you set up a site? How do people find it? Eventually, how do you keep it secure.

And then, over time, a few big companies offered a simpler experience. With two clicks you could create a Facebook group. And everyone was on Facebook, weren’t they? I remember fighting to keep some groups from ditching their web site and going to a Facebook group. Once they are there, they control us. And what of people who don’t want to be on Facebook?

So, now we are all owned by a few big players: Meta, Facebook, Google, Amazon, Microsoft, Tik Tok, Reddit, Twitter. And, as Cory Doctorow has noted, now that they have got both the users and the advertisers locked in, they are squeezing all of us. Facebook is full of ads, Google is suggesting thing only somewhat related to your search, Twitter is blocking people out and in meltdown.

So, it is time to take back ownership. The web is supposed to be a federation of equal players, not a set of large telecom-like gatekeepers. And that is where the Fediverse comes in. We can set up a new community of sharing and connecting and discussing without the worry that the gate-keeping organization will be bought out by someone with different interests and agendas.

So, here I am. Re-invigorating my blog by hooking it into the Fediverse. Perhaps the second time around we will be a little more jaded and careful about following the shiny baubles. I admit I may be too optimistic, but hope springs eternal.

Reuse and Egotism

I regularly commute to a client’s site past a large hospital complex. The building consists of a series of wings, the first two of which are nearly identical and obviously were built at the same time. Two newer additions to the building sits beside them, each using an entirely different look and pattern. No reuse here.

It reminds me of growing up in Toronto back when there was only one terminal at its airport. When the terminal was built, the plans called for additional terminals to be built later using the same design. But that never happened. Three more terminals have been built since the first opened in 1964 all utilizing different designs.

No reuse here either.

So what is going on, and can we see any parallels to software architecture?

The technical answer is that requirements change. New wide-bodied jets made the round architecture of the first Toronto airport terminal inefficient, for instance. Perhaps new equipment or capabilities were required or new building materials became available that precluded the hospital from re-using its existing design. Perhaps.

But something else was surely going on here as well. Something that has stymied efforts over the years to develop re-usable software and the fabled software building blocks. Something called ego.

When a new team is brought in to build a new system, it can be guaranteed that they will not look at existing systems in place and recommend configuring or modifying one of them. Much more likely will be a total redevelopment using different technologies and patterns, mostly from the resumes of the new architects. There will be justifications around “not wanting to repeat past mistakes” (as the new team goes on to develop new and innovative mistakes), but the reality is that ego is a prime factor. No architect wants to come in and say “hey, let’s do what that guy did”. It doesn’t satisfy the itch to build something new. Nor does it justify the architect’s paycheque.

So what does this tell us?

  1. For one thing, architects, designers and developers must remember that one imperfect design is better than multiple designs, no matter how perfect any of them night be. The long term cost of any software project is maintenance, and the maintainers will have no idea why two systems that seem to tackle the same problem are built in different ways.
  2. Existing systems may have warts, but so will the new system. Known warts are cheaper than new and innovative ones.
  3. On the other side of the coin, build a system for your requirements and don’t try to guess how it might be re-used. You will get it wrong anyway and create an overly complex and error-prone system. If you ever get a second client (which is less likely than you think), utilize this thing called “refactoring” to pull out generic concepts and make the system re-usable.

Architects and designers are people with egos. And people with egos always overplay their own ability and underplay other’s. Take a slice of humble pie and ask yourself “Could we reuse that other system? Would it be good enough”. If you decide to build a new system, don’t design for re-use until you have a second user.

Microsofties, the Fondleslab and the Paradox of Choice

While I am always attracted to Java and Open Source, I’m also not adverse to pitching in on other projects, including those using .Net. C# is really quite a good language. There I said it. I know it is a clone of Java in many ways, but it is quite clean and well thought out, for the most part.

One of the biggest differences working on a Java and .Net project is the Microsoft lock-in on the latter. Sure, the database may be SQL Server or Oracle, but other than that, most .Net shops buy the whole Microsoft tool-chain hook, line and sinker. Microsoft Server, VisualStudio, TeamTest, TFS, WCF, etc.

And most .Net developers are quite happy with this. They don’t get the disdain that other developers may show towards them. Microsoft produces tools they like and know. And lately I also notice that they like and know their iPods, iPhones and iPads…

What? How is it that Microsofties are all in love with Apple? The once and always adversaries for the desktop. I didn’t get it at first. Was I misreading people.

And then is started to dawn on me. While Microsoft has crushed its competition though market weight, with some say a monopolistic edge to it, it has at least done so, for the most part, in a competitive way. No closed app store for Microsoft. Apple, champion of great design, has recently been criticized for its controlling approach to its ecosystem.

And that’s where some .Net developers become fanbois. In many ways, the .Net development environment has become a closed shop. If you like Microsoft tools, you are comfortable there. Similarily, if you like iOS apps, you are also comfortable. So it is not so much that .Net developers are defecting to Apple, it is that Apple is adopting the close ecosystem model that .Net developers have already become comfortable with in the Microsoft development ecosystem.

Or maybe they are just overwhelmed, like the rest of us, by the Paradox of Choice…

Hoarding

I used to hoard programs. Or more specifically, installation programs. If you’re old enough, and a geek, you probably know what I’m talking about. When the web came along in the mid-90’s every geek’s computer I knew had a “downloads” directory full of stuff like:

  • netscape-install-1.2.7.zip
  • pkunzip.something.exe (or .sh)
  • ftp-tool.or-other.zip

I don’t have that anymore. If I want an application I download the latest version or use my update manager to get or update it.

My bookmarks in the browser window used to be full of stuff too. Every time I’d see an interesting page I would bookmark it into the long list of “WORN” URLs (“Write Once Read Never”). I then moved to del.icio.us, since it had better tags and meant I could get to them from anywhere. I don’t even bother doing that anymore either. Google is my friend.

And who still doesn’t have a music folder crammed full of mp3 files, bought, ripped, downloaded or otherwise acquired?

Why did we hoard all this stuff, why don’t we any longer, and what’s up with music?

We hoarded since the cost of downloading was high and we were afraid of losing it. But we learned over time for installation programs that they were always being updated and it was only getting quicker to re-download them. Easier and safer to offload the management of them to the internet. Need to re-install Firefox? Got to http://www.getfirefox.net . Or more probably, type it into Google, and have it remind you of the URL.

Segue into bookmarks. I hardly ever looked at my bookmarks, even on del.icio.us, and so have handed the job of finding stuff to the internet. The search engines are all good enough that if I want to show my kids the “Who’s on First” routine I do a four second search.

Music remains the hoarder’s treasure. A variety of reasons make it so. There is the obvious licencing issues, but more importantly music is more like applications than links or install programs. Something that costs a lot (in time) to download but that we want to use over and over again. Faster bandwidth can reduce this download cost, but there is still the issue of ownership. Unlike videos, the value of a piece of music goes up the more you listen to it, so renting it (even through subscription services) is something unattractive to us. If copyright laws restrict us in how we can access it, we want to control the music we do have, and that means having it sit on our metal.

We hoard two things: things we use infrequently but are hard to find or expensive to get; and things we use a lot. The first go away as the network and its services improve; the second are unlikely to.

Which is why I’m skeptical of user-targeted cloud services ever taking off.