David Perell discusses how the shift from information scarcity to information abundance is reshaping commerce, education, and politics. Long but worthwhile.
Via @patio11
David Perell discusses how the shift from information scarcity to information abundance is reshaping commerce, education, and politics. Long but worthwhile.
Via @patio11
There’s not much that’s reasonable to say about the horrific news from Christchurch today. The actions of the gunman, a self-proclaimed fascist, being amplified and repeated by so many others online…
I just can’t…
I’ve been stuck most of the day. Stuck in thoughts that don’t go anywhere, at least not anywhere good.
The last few years, the worst side of humanity has been winning in a big way, and while there’s nothing new about white supremacy, fascism, violence, or hate, we’re seeing how those old human reflexes have adapted to the tools that we’ve built in and for our online world.
What are we going to do about this?
On Exponent, the weekly podcast I host with James Allworth, we discuss Where Warren’s Wrong.
Listen to it here.
Like many other cities, Vancouver is fighting the war against short-term vacation rentals that take housing away from long-term locals. Their info here.
The city was the first to put in rules last April. Yesterday, they released results on the numbers of licences and investigations.
But critics of Airbnb say the city is always going to be fighting a losing battle, because the agreement it has with Airbnb requires city enforcement to do all the work of checking on made-up business-licence numbers, units deceptively advertised as being not in Vancouver, and many other loopholes.
My story on all that here (and pasted below)
Nearly half of the short-term rentals listed in Vancouver haven’t obtained licences under new rules that took effect last year, prompting the city to issue warning letters, levy fines and conduct inspections of hundreds of properties.
But city officials say they see the enforcement activities as a sign the housing phenomenon that has become a battleground in many cities is being brought under control.
“The early results of enforcement in the first six months of our new short-term rentals program are encouraging,” Mayor Kennedy Stewart said in a news release. One operator with 35 listings was fined $20,000.
The city imposed new restrictions on services such as Airbnb last year to address concerns they were affecting the region’s tight rental market. As of last April, short-term rental operators must have a business licence and can only rent out their primary residences.
City statistics say there were 4,720 short-term rental listings in March of this year, up slightly from the nearly 4,600 in December. Of those, only 2,628 have licences. So far this year, 17 licences have been suspended, 89 listings were referred to prosecution and 274 violation tickets were sent out.
Critics say Vancouver is never going to get real control of the Airbnb-style of listing private homes as travel accommodations because its agreement with Airbnb is too weak.
“I don’t see any evidence that Vancouver’s regulations are having a serious impact. Vancouver seems to be trying to deal with this, but there are too many loopholes,” said McGill University Professor David Wachsmuth, who has been studying the evolution of Airbnb in many cities.
He said the memorandum of understanding that city officials negotiated with Airbnb puts the onus on the city to track down offenders, who seem to find new ways to get around the law every day.
Airbnb will still put up a listing even if there is a false business-licence number or even none at all.
It’s something cities around the world are dealing with, Professor Wachsmuth said.
“Actually, there are very few cities that have managed to make a serious dent in problematic short-term rentals. San Francisco was held up as an early example of effective regulations, but our research has found that the full-time commercial operators were barely affected at all,” he said. “All these cities struggle with getting the information they need to apply their laws effectively.”
The only cities that are potentially making headway are New York, Santa Monica, and Boston, he said, whose efforts to control short-term rentals are so energetic that Airbnb is suing them over their policies.
Advocates who monitor local vacation rentals say there appear to be endless loopholes that operators can use to get around Vancouver’s rules.
“What pops to mind is Whac-A-Mole,” said Ulrike Rodrigues, an East Vancouver condo owner who has been fighting the Airbnb effect in her building for years.
“We’re putting together a report with other citizens on the observed gaps and loopholes. I’ve counted 30 already.”
She has noticed that an operator will use the same business-licence number for multiple properties or they will claim on their listing that the rental site is in a suburb outside Vancouver, when it isn’t.
Another anti-short-term rental activist, Rohana Rezel, said he has developed a tool that last month allowed him to uncover more than 800 properties without licences, and he’s baffled that the city is taking so long to get their listings removed.
He believes that at a minimum, the city needs to have an automated system that checks on business licences so that fake and duplicated numbers would be flagged.
I previously wrote about a (hackish) way to use a single Dropbox folder on a dual-boot Windows and Linux machine. I’ve since gained some sense gone full Linux with Ubuntu 18.04 LTS, but the Dropbox set up seems to have stopped being an option in any case. Fortunately, I’ve since found a much better (far less hackish) way to remote-sync files across different file systems. Reflecting my current set up, I’m talking about iOS (iPad and iPhone) and my Linux machine.
The new sync system is based on Git, very customizable, and conveniently extensible. Beyond text files, you can sync anything that Git can (which is almost everything - if you want to edit your .gitignored files on the go I’m not sure I can help). If you’re already familiar with Git, getting set up will be a walk in the park. If Git is new to you, I think these tools help make the concepts of Git cloning, pulling, and pushing straightforward to understand.
I was inspired by this article as well as this one.
Here are the steps to setting up that I’ll walk you through in this article.
This system is straightforward to set up whether you’re a command line whiz or just getting into Git. Let’s do it!
GitHub now offers free private repositories for up to three collaborators. Choose “Private” on GitHub’s repository creation page:

Create the repository. If you’d like to, you can follow GitHub’s instructions to push some files to it from your computer, or you can add files later from your iPad.
Download Working Copy from the App Store. It’s one of the more expensive apps I’ve purchased, but I think it’s well worth it. Developer Anders Borum has a steady track record of frequent updates and incorporating the latest features for iOS apps, like drag and drop on iPad. I think he’s fairly priced his product in light of the work he puts into maintaining and enhancing it.
In Working Copy, find the gear icon in the top left corner and touch to open Settings.

Tap on SSH Keys, and you’ll see this screen:

SSH keys, or Secure Shell keys, are access credentials used in the SSH protocol. Your key is a password that your device will use to securely connect with your remote repository host - GitHub, in our example. Since anyone with your SSH keys can potentially pretend to be you and gain access to your files, it’s important not to share them accidentally, like in a screenshot on a blog post.
Tap on the second line that looks like “WorkingCopy@iPad-xxxxxxxx” to get this screen:

Working Copy supports easy connection to both BitBucket and GitHub. Tap “Connect With GitHub” or BitBucket to bring up some familiar sign-in screens that will authorize Working Copy to access your account(s).
Once connected, tap the “+” symbol in the top right of the side bar to add a new repository. Choose “Clone repository” to bring up this screen:

Here, you can either manually input the remote URL, or simply choose from the list of repositories that Working Copy fetches from your connected account. When you make your choice, the app clones the repository to your iPad and it will show up in the sidebar. You’re connected!
One of the (many) reasons I adore iA Writer is its ability to select your freshly cloned remote repository as a Library Location. To do this in the iA Writer app:
Your remote repository now appears as a Location in the sidebar. Tap on it to work within this directory.
While inside this location, new files you create (by tapping the pencil-and-paper icon in the top right corner) will be saved to this folder locally. As you work, iA Writer automatically saves your progress. Next, we’ll look at pushing those files and changes back to your remote.
Once you’ve made changes to your files, open Working Copy again. You should see a yellow dot on your changed repository.

Tap on your repository name, then on “Repository Status and Configuration” at the top of the sidebar. Your changed files will be indicated by yellow dots or green “+” symbols. These mean that you’ve modified or added files, respectively.
Working Copy is a sweet iOS Git client, and you can tap on your files to see additional information including a comparison of changes (“diff”) as well as status and Git history. You can even edit files right within the app, with syntax highlighting for its many supported languages. For now, we’ll look at how to push your changed work to your remote repository.

On the “Repository Status and Configuration” page, you’ll see right at the top that there are changes to be committed. If you’re new to Git, this is like “saving your changes” to your Git history, something typically done with the terminal command git commit. You can think of this as saving the files that we’ll want to send to the GitHub repository. Tap “Commit changes.”

Enter your commit message, and select the files you want to add. Turn on the “Push” switch to send everything to your remote repository when you commit the files. Then tap “Commit.”
You’ll see a progress bar as your files are uploaded, and then a confirmation message on the status screen.

Congratulations! Your changes are now present in your remote repository on GitHub. You’ve successfully synced your files remotely!
To bring your updated files full circle to your computer, you pull them from the GitHub repository. I prefer to use the terminal for this as it’s quick and easy, but GitHub also offers a graphical client if terminal commands seem a little alien for now.
If you started with the GitHub repository, you can clone it to a folder on your computer by following these instructions.
When you update your work on your computer, you’ll use Git to push your changes to the remote repository. To do this, you can use GitHub’s graphical client, or follow these instructions.
On your iOS device, Working Copy makes pulling and pushing as simple as a single tap. On the Repository Status and Configuration page, tap on the remote name under “Remotes”.

Then tap “Synchronize”. Working Copy will take care of the details of pushing your committed changes and/or pulling any new changes it finds from the remote repository.
For a Git-based developer and work-anywhere-aholic like me, this set up couldn’t be more convenient. Working Copy really makes staying in sync with my remote repositories seamless, nevermind the ability to work with any of my GitHub repos on the go.
For editing on the go, here’s a useful tip. Use .gitignore in your sync repository if you don’t need to move large files, like images, around with you. This will stop the ignored files from being pushed to GitHub and pulled to your iOS device - they’ll only remain on your computer’s larger hard drive. The .gitignore file of one of my sync repositories looks like this:
*.png
*.jpeg
*.jpg
*.mp4
*.gif
This means all the media files stay on my computer, and I can pull just the text file content to my iPad from GitHub to work on while I’m out and about.
I most recently used this set up to get some writing done while hanging out in the atrium of Washington DC’s National Portrait Gallery, which is pleasantly photogenic.

I’d love to hear how this set up works for you and how you use it. In the meantime, happy working!
Over the quarter century we’ve lived in Charlottetown, I’ve never particularly thought of The Bookmark, our local independent bookstore, as a place to order books. For some inexplicable reason I thought it was more trouble than it was worth for them, and so I simply fell into the habit of ordering books online.
Recently, though, I noticed a big search box at the top of the store’s website labelled Search for anything, and that seemed like clear evidence that they wanted me to order books from them and, indeed, that they could get anything on order.

And so I’ve started to order my books from The Bookmark instead of from Amazon. The store’s prices are often a dollar or two more than Amazon’s, and it can take a little longer for books to arrive (but not much longer), but you don’t pay shipping if you pick up at the store, and you don’t have to pay until the book arrives.
What’s more, I help to ensure the longevity of my local independent bookstore by buying locally. So as part of the deal, I get a local place to browse for books that’s open seven days a week, has a thoughtful and broad approach to stocking its shelves, and that sells fountain pens and ink to boot. Here’s what The Bookmark itself says:
We believe in a local economy – we believe that spending money is a political act, every dollar we spend casts a ballot for the kind of world we want to live in. There is no right or wrong answer, but if you don’t shop locally, if you don’t support the local economy, in the real world, there won’t be one left when you step outside. At Bookmark, we are strong supporters of the local literary community. We also take seriously spending our dollars locally for marketing services, accounting, legal and other business services.
By way of encouraging others (and myself) to look to The Bookmark when our Amazon muscle memory runs so strong, using Jon Udell’s excellent LibraryLookup as a starting point, I’ve created a handy “look this up at The Bookmark” bookmarklet (ha! was there ever a bookmarklet better named!).
The idea is this: you’re readying a blog post, say, and it has a link to a book at Amazon.com. You visit the Amazon book page, click the bookmarklet and, blamo, you see the same book on The Bookmark’s site.
To install the bookmark, just drag the link above to your browser’s bookmarks toolbar.
Here’s the bookmarklet in action.
From the Amazon.ca page for If Cats Disappeared from The World:

I click the bookmarklet on my browser’s toolbar and a new browser window pops up with the ISBN for the book fed to The Bookmark’s search tool:

From there it’s an easy matter to order the book from The Bookmarklet (and it’s worthwhile to note that Amazon.ca’s shipping was $5.73 while The Bookmark didn’t charge any shipping at all, so, in fact, it was less expensive to order locally).
Needless to say, this bookmarklet has no affiliation with Amazon nor with The Bookmark; it’s simply a technical intervention, created by me, to encourage people to shop at my local bookstore.
As children of the mother-democracy in the United Kingdom, we here in the Commonwealth can sometimes forget that our own practice of day to day parliamentary practice has evolved since we forged out on our own. Nowhere is this more evident than when one watches the televised proceedings of the House of Commons in London, a habit I’ve fallen into of late as the debate toward (or away from) Brexit has proved compelling.
One of the more noticeable differences between the London parliament and the Charlottetown one is that in London they have division lobbies, separated physical areas, on either side of the chamber, to which members retire to vote yes or no on a given motion or amendment.
Here’s how the process is laid out in the 2013 Divisions in the House of Commons: House of Commons Background Paper:
When a motion is put to the vote, the Speaker ‘puts the question’, by saying:
The Question is, that … [for example, the Bill be read a second time]. As many as are of that opinion say Aye”, (there then follows a chorus of shouted Ayes), “of the contrary No” (a similar shout of No)…..
At this point, if there is no dissent, the motion will be carried, and the Speaker will say “I think the Ayes have it”. There is then no need for a formal division to take place.
However, if Members do not agree, the Speaker calls a division. S/he announces “Clear the Lobbies”. The division bells ring throughout the House of Commons estate, the Annunciators display “Division”, and the police direct all non-members to leave the vicinity of the Members’ Lobby; they also walk through the public rooms of the House shouting “Division”. … The Speaker has the discretion to ask each side to stand in their places in the Chamber, if s/he believes that a division is unnecessary.
Before each vote takes place, those voting both ‘aye’ and ‘no’ must appoint two Members to act as tellers. Their job is to report the result of the vote to the House. They themselves will be counted as having voted either ‘aye’ or ‘no’: reports on some websites will, for instance, report “189 + 2 tell” as having voted in a certain way.
That part about “the division bells ring throughout the House of Commons estate” caught my eye. Members have 8 minutes after the division bells start to ring to get to the appropriate lobby; 8 minutes, if you’re walking at a fast clip, will get you a fair distance, and it’s for this reason that the division bells ring not only in the House of Commons itself, but also in nearby pubs and restaurants.
For example, according to OpenStreetMap, the walk from The Cinnamon Club to the House of Commons takes exactly 8 minutes. And as there are so-called “external division bells” in The Cinnamon Club, this means that a member could be lunching there and make it to the division lobby in time to cast a vote.
The BBC News website has a 2017 story that provides a good introduction to the practice.
While we don’t have division lobbies here in the Legislative Assembly of PEI–members vote in the chamber–we do have division bells, something pointed out by MLA Wilbur MacDonald in 2004 when he rose, on a point of order, to mention a new electronic set:
7:00 P.M. Rising on a Point of Order, Wilbur MacDonald (Belfast-Pownal Bay) requested a demonstration of the Legislative Assembly’s new electronic division bell and requested that it be rung for five minutes prior to the House sitting on a sessional sitting day.
Here’s how the process of “putting a question to the house” works here in Prince Edward Island, according to the rules:
18. Putting a question to the House
Is the House ready for a question?
The question is as follows: …..
All those in favour of the motion will please say yea.
All opposed will please say nay.
In my opinion, the motion is carried (or lost).If any member requests a recorded division, sometimes called a standing vote, the Speaker says:
Sergeant-at-Arms, ring the bells.
After no more than 5 minutes, when the members are in, the Speaker says:
All those opposed to the motion please rise.
(and after the names have been recorded by the Clerk)
All those in favour of the motion please rise.
I declare the motion carried (or lost).
We don’t have external division bells here in Charlottetown, so members must be within earshot of the chamber to hear the bells ringing. Five minutes in downtown Charlottetown will get you pretty far, though: according to OpenRouteService’s isochrones, the distance you can travel in 5 minutes from the Coles Building on foot is reflected in red on this map:

So, in theory, a member could be at Cedar’s when a vote is called and, assuming quick reflexes and a brisk pace, be in their seat for the vote.
TL;DR: We overcomplicated our new product. So, we paused, cut some things out, and found focus. (You can do the same.) Let me tell you how a new product slips out of control. We started Emetti because of Cypress Mountain. On one trip up there, I found myself pushing stuck cars back on the road. […]
The post Let’s Play “Un-Fuck This Startup” appeared first on Eric Karjaluoto.
Worth a re-read is Zeynep Tufecki’s article for the MIT Technology Review last August: How social media took us from Tahir Square to Donald Trump.
The conclusion:
If digital connectivity provided the spark, it ignited because the kindling was already everywhere. The way forward is not to cultivate nostalgia for the old-world information gatekeepers or for the idealism of the Arab Spring. It’s to figure out how our institutions, our checks and balances, and our societal safeguards should function in the 21st century—not just for digital technologies but for politics and the economy in general. This responsibility isn’t on Russia, or solely on Facebook or Google or Twitter. It’s on us.
So, what are we going to do about it?
The past month has gone by in a blur, but until I am able to fully catch up I decided to put some useful tidbits out there, since macOS is still my preferred platform and I have a lot of personal backlog to go through–so best to space it out and get started right away:
EXIF information from HEIC filesOne of the things I have been putting off is rebuilding my photo processing and archiving pipeline to deal with HEIC files. I’ve long been using jhead to extract EXIF metadata and rename files accordingly as a first step, but jhead (and plenty of other similar CLI tools) are showing their age, so I decided to see what I could do with native macOS.
Another thing I’ve been putting off is writing more JavaScript (which I still despise as a language but cannot ignore), so I looked at JavaScript for Automation as a way to get going quickly.
As usual, the best resources for this kind of niche are third-parties rather than terse and unfriendly Apple docs, and there’s a great cookbook that walks you through the basics–it only took me half an hour (and some cursing) to build a little CLI tool to dump metadata from anything that supports EXIF in macOS:
#!/usr/bin/env osascript -l JavaScript
ObjC.import("Cocoa");
function run(argv) {
if(argv[0]) {
var url = $.NSURL.fileURLWithPath(argv[0]),
source = $.CGImageSourceCreateWithURL(url, null),
metadataRef = $.CGImageSourceCopyPropertiesAtIndex(source, 0, null),
err = $.NSError;
if(metadataRef) {
var dic = $.NSDictionary.dictionaryWithDictionary(metadataRef);
/* Alternatively, you can have some fun with this:
var allKeys = ObjC.unwrap(dic.allKeys);
var keys = allKeys.map((x => ObjC.unwrap(x)));
var values = keys.map((x => ObjC.unwrap(dic.objectForKey(x))));
console.log([keys, values]);
*/
var json = $.NSJSONSerialization.dataWithJSONObjectOptionsError(
dic.objectForKey('{Exif}'), // yeah, magic.
$.NSJSONReadingMutableContainers, err),
buffer = $.NSString.alloc.initWithDataEncoding(json,
$.NSUTF8StringEncoding);
console.log(ObjC.unwrap(buffer));
}
}
}
There is a little bit of magic involved here–you need to know how the Objective-C bridge name mangling works, but I’ve had plenty of experience with the Python bridge, so it all boils down to a bit of experience and educated trial and error.
But it works fine for HEIC, DNG and CRW (Canon RAW), and I’ll be rewriting my Automator workflows to incorporate it as time permits.
It’s now been well over six months since I changed my personal e-mail workflow to MsgFiler, and it’s been working great for me: I can zip through most of my e-mail and re-file it with a few keystrokes, and I sorely miss this kind of thing when I’m on Windows. Overall, it’s probably the only third-party Mac app I have running 100% of the time.
When I have time to use it, that is. I am woefully behind on personal mail, so much so that I only caught up with Cloudflare‘s DNS registrar e-mails recently, and began the long and arduous process of clicking through Network Solutions’ hilariously bad back-office to migrate my domains to Cloudflare.
The experience is fraught with glitches, largely because Network Solutions appears to have re-locked this domain after sending me the transfer code, even though it shows up as unlocked on their back-office.
So I’m currently dead-locked between Cloudflare support and Network Solutions, which makes me dread the inevitable moment when I try to call them to get this fixed…
Assuming all of it eventually works on NetSol’s side, the only real drawback so far seems to be that Cloudflare only allows for yearly renewals, which is just plain weird, really. I really don’t want to deal with renewals annually and would gladly pay a little extra to renew domains for 3-5 years.
Every now and then I benchmark other blog engines, and this week I had the occasion to set up Ghost on Azure App Service using this nice ARM template to help a customer put together a test web site.
It’s pretty nice as far as the authoring experience goes (it feels a lot like Medium, but without a good iOS app1) and it might be useful if I need to quickly set up an event blog, but the lack of search, proper tables, and (shockingly) an easy way to insert relative links to other posts turns it from a pretty nice to an ultimately pointless experience for me.
I’m also planning to tweak my infrastructure a bit, since I suspect uwsgi has been breaking the site now and then due to a memory corruption bug and really want to move to aiohttp and traefik to match the rest of the stuff I build.
Serendipitously, I’ve also been editing Pixels Camp posts on Medium, and expect to spend three days at the event having some fun (for a change)…
Big players like @Basecamp moving back from centralized services such as @Medium to publishing on their own #commons #blogs again @dhh https://t.co/rViyN8CdbN - Revival of the blog networks, @mathemagenic @ton_zylstra? https://t.co/7sgyqlcZGK #openinternet
— Aldo de Moor (@ademoor) March 11, 2019
@ademoor Yes, definitely there’s a sort of revival of distributed conversations going on. Been back into it for about 18 months now. See: reinventing distributed conversations https://www.zylstra.org/blog/2018/04/reinventing-distributed-conversations/ Sadly it’s a return to the open web, not a joining of it. https://www.zylstra.org/blog/2019/02/return-to-the-open-web-vs-join-the-open-web/
I learned Go writing go-ucd which is nothing more than an embedded lookup table to convert Unicode characters to their English-language Unicode name. For example:
$> ./bin/ucd 🍦 SOFT ICE CREAM
Or:
$> ./bin/ucd 䍕 NET; WEB; NETWORK, NET FOR CATCHING RABBIT
Eventually, I wrote go-ucd-username
on top of go-ucd to allow for meaningful "pretty"
URL-safe aliases for users with full Unicode usernames. For example:
./bin/ucd-username mr. 😁 mrgrinningfacewithsmilingeyes
For example, a user with the name Admiral
🍦 would have the pretty URL
/admiralsofticecream rather than something like
/users/GSf653874tgsjBB7ZZqp0. I still get a lot of blank stares when I tell people about
go-ucd-username. You have to believe that the
semantics in URLs
are important and if you don't then I agree the whole thing is
a bit silly.
While it's true that an Internalized Resource Identifier (IRI) would allow you
to create an equivalent /Admiral%20🍦 URL it's still early days for IRIs meaning
browser support is uneven and there are a number of security concerns that
haven't been fully sorted yet.
The alternative is to strip out all the non-URL safe
characters from URLs which means if you have one user with the
name Bob and another with the name Bob
🍦 and another still with the name
🍦 Bob only one of them can have the pretty
URL /bob.
go-ucd-username side-steps all those issues and
allows for a better-than-nothing alternative. I make a point of using go-ucd-username on any
website I run with user accounts. I don't expect many people
either know about it or benefit much from what it does but I like
the idea of accounting for tiny (but important) details like this.
There is nothing specific to the Go programming language
about go-ucd-username. Go is very fast, has excellent Unicode support and allows you to create pre-compiled
binaries for a number of operating systems so you can write
tools that don't first require installing a bunch of other things
in order to start using them. Beyond that go-ucd-username
could be written in any modern programming language.
In the time since it was first written we've seen the
introduction of WebAssembly which the Mozilla
Developer Network describes as ...a way to run code written in
multiple languages on the web at near native speed, with client
apps running on the web
. One of those languages
is Go and the other day I wondered whether
go-ucd-username would be a good way to kick the
tires and see how it all works.
Is it possible to call the ucd-username
functionality written in Go from JavaScript? Yes. Is it worth
downloading and executing a 6.3MB binary to do what could probably be
done in ~100 lines of native JavaScript? Probably
not. There are better
things to use WebAssembly for if only because the setup and
scaffolding required to do anything with it is a bit of a twisty
maze.
For example I spent the better part of 45 minutes trying to embed the exact same code that works just fine over here on this website but with no success:
https://aaronland.github.io/go-ucd-username/
I have no idea why it doesn't work because there's very little in the way of debugging and it fails with a different set of error conditions in Firefox than it does in Safari. But only on this website...
So, it's clearly all still wet paint
but it's good to
get a feel for what's possible.
When casino games became a hit within digital platforms, software developers were quick to add more options and update and improve the pioneers. Going from poker to slot machines, roulettes, craps and, of course, blackjack was added. Although all this happened in the decade of the twentieth century, nowadays it is possible to continue appreciating […]
The post Frequently asked questions about online blackjack appeared first on The Power of Pull.
Not everyone likes untitled blog posts. Dan Steinberg argues:
As a reader, I remember a post I liked from an author I admire and I look back through their posts and I see a sea of posts without a title. It makes it hard for me to find the one that resonated with me.
Titles are a straightforward affordance for scanning through posts in an archive page. And, it’s not just a human reader that might appreciate the hierarchy a title gives. Search engines really lean on them as well, both for indexing and for displaying search results.
Going title-optional in a meaningful way means thinking about both of these issues.
I just finished reading The Seventh Function of Language by Laurent Binet; it’s impossibly erudite and also hilarious. If you remember the Eighties and if you have some idea why Foucault, Giscard, Nastase, and Eco were interesting, you might really enjoy it, especially if you’re also entertained by sex, violence, and conspiracy theory.
I was in the library looking at travel guides for an upcoming vacation, and as I was coming down the escalator the book’s garish cover grabbed my attention sufficiently that I had to go look at it, and then took it home. There’s a story in here about signs and signals and that sort of stuff.
It’s a whodunnit basically, although the author chats away in his own voice, the protagonist keeps wondering if he’s in a novel, the story shamelessly mixes real things that happened to real people with things that definitely didn’t happen and others might be true but nobody will ever know.
Things that did happen in 1980-81.
Roland Barthes was hit by a laundry van after having lunch with Mitterrand; the papers he was carrying were stolen, and he died a month later of his injuries.
Louis Althusser strangled his wife in what the courts consider an episode of insanity.
Right-wing terrorists bombed Bologna’s central train station, killing 85 people.
Mitterrand won the first of several elections as President of France.
Things that didn’t:
Jacques Derrida was not killed by attack dogs unleashed on Cornell University campus by John Searle.
Philippe Sollers was not castrated as a consequence of losing a semioticians’ fight-club debate with Umberto Eco.
Things we’ll never know:
How did Mitterrand hang on to office for so long?
What happened to Barthes’ papers?
Seriously, I kept laughing out loud. While there’s deep thinking here about language and meaning, there are fabulous chase scenes, appalling violence, sexual fireworks on a dissecting table, mysterious Japanese ninjas, and a whole lot of sex & drugs & rock-n-roll. And tennis.
And name-dropping; the whole book is one big name-drop, and a lot of the names are portrayed having inappropriate sex and taking inappropriate drugs. But he does it so well that you can’t help but be amused. Well, except for some of those portrayed are still very alive and might not be; can you sue someone for the way they portray you in a work of fiction? For example, I wonder if a certain prominent female American gender theorist will object to having been portrayed as sodomizing a burly French policeman in a threesome including a prominent female French poststructuralist?
Anyhow, by now you probably know whether you’re a candidate to enjoy this one.
It’s been almost 3 years since Reclaim Hosting’s first t-shirt featuring Bryan Mathers original vinyl logo.

And given we have moved into the VHS era of Reclaim last year, we figured it was high time to push out a new t-shirts featuring our new logo, which if you look closely still has the old logo in tact (pretty sneaky, sis).

So Friday, thanks to the lightning fast microsite development that Lauren Brumfield is quickly becoming famous for at Reclaim, we introduced out latest shirt designs:

and

We had a third color we were hoping to push out, but that is currently on hold given what we saw was not exactly what we got—so we’re re-thinking that design. You can find either of these shirts over at the Reclaim Hosting store, and if you are attending OER19 in Galway we would be happy to hand deliver any merch given the cost for international shipping can get steep.
We also added some of our OG merch such as the Reclaim Video shirts, the original logo Reclaim Hosting shirts, and Domains17 shirts. What’s more, we also have added some stickers into the mix. So as our newest tagline “Be Kind, Reclaim”

Or the Reclaim Hosting VHS tape:

Or the Reclaim Video TV:

It’s pretty fun to see a storefront that provides a peek into the archaeology of how we have imagined the aesthetic around Reclaim. I say it again and again on this blog, but exploring creative ways to frame Reclaim has been some of the funnest and most rewarding work I’ve been a part of, and unfortunately it is shamefully undervalued by most groups and organizations in edtech. I believe the role of framing your mission and the principles you represent should be as much visual as rhetorical, and more and more I find the former even more compelling than the latter. Anyway, Reclaim is #4life, and if you find anything that catches your fancy head on over to the store and and reclaim some merch 

Born to a family of weavers in Switzerland, Emma Kunz was a mystic, who would sometimes work on a drawing for 48 hours without interruption. She divined the future using pendulums and though she created a large body of work, and published three books, her artwork was not shown until after her death.

World Receivers: Georgiana Houghton – Hilma af Klint – Emma Kunz, an examination of the work of three visionary women artists. In the middle of the nineteenth century, in England, Sweden, and Switzerland, respectively, Georgiana Houghton, Hilma af Klint, and Emma Kunz each developed their own abstract pictorial language. Though working completely independently from one another, these three artists shared a desire to make visible the laws of nature, the intellect, and the supernatural.
Though there is an exhibit of her work coming soon to the Serpentine Gallery in London, but I can’t recommend it, since a large part of their funding comes from the felons in the Sackler family, who are responsible for the opiate crisis in the United States, and its plague of death, especially among the poor.
I ran across an old interview with Douglas Crockford recently. When asked what traits were common to the weak programmers he'd seen over his career, Crockford said:
That's an easy one: lack of curiosity. They were so satisfied with the work that they were doing was good enough (without an understanding of what 'good' was) that they didn't push themselves.
I notice a lack of curiosity in many CS students, too. It's even easier for beginners than professional programmers to be satisfied with meeting the minimal requirements of a project -- "I got the right answers!" or, much worse, "It compiles!" -- and not realize that good code can be more. Part of our goal as teachers is to help students develop higher standards and more refined taste while they are in school.
There's another sense, though, in which holding students' lack of curiosity against them is a dangerous trap for professors. In moments of weakness, I occasionally look at my students and think, "Why doesn't this excite them more? Why don't they want to write code for fun?" I've come to realize over the years that our school system doesn't always do much to help students cultivate their curiosity. But with a little patience and a little conversation, I often find that my students are curious -- just not always about the things that intrigue me.
This shouldn't be a surprise. Even at the beginning of my career as a prof, I was a different sort of person than most of my students. Now that I'm a few years older, it's almost certain that I will not be in close connection with my students and what interests them most. Why would they necessarily care about the things I care about?
Bridging this gap takes time and energy. I have to work to build relationships both with individuals and with the group of students taking my course each semester. This work requires patience, which I've learned to appreciate more and more as I've taught. We don't always have the time we need in one semester, but that's okay. One of the advantages of teaching at a smaller school is time: I can get to know students over several semesters and multiple courses. We have a chance to build relationships that enrich the students' learning experience -- and my experience as a teacher.
Trying to connect with the curiosity of many different students creates logistical challenges when designing courses, examples, and assignments, of course. I'm often drawn back to Alan Kay's paradigm, Frank Oppenheimer's Exploratorium, which Kay discussed in his Turing Award lecture. The internet is, in many ways, a programmer's exploratorium, but it's so big, so disorganized, and of such varying levels of quality... Can we create collections of demos and problems that will contain something to connect with just about every student? Many of my posts on this blog, especially in the early years, grappled with this idea. (Here are two that specifically mention the Exploratorium: Problems Are The Thing and Mathematics, Problems, and Teaching.)
Sometimes I think the real question isn't: "Why aren't students more curious?" It is: "Are we instructors curious enough about our students?"
We don’t take him seriously because he’s crazy.
But crazy people do take him seriously.
Ten years ago this week I got on a plane with Oliver and flew to the far eastern edge of Europe. Here’s what we looked like just before our departure, loaded up with our backpacks and ready for adventure:

What you see on our backs is the sum total of the luggage we took; it was the apotheosis of my packing-light phase: I was traveling without a laptop (a feat never repeated, before or after) and with only a few clothes in my pack. Oliver was more well-resourced, especially if measured by luggage-to-body-weight ratio; but even he was traveling extremely light.
How I thought it was possible (and allowed) to head into a strange and remote place, across the ocean and far away, without Catherine to steady us is beyond me. Oliver had several “I am Oliver, and I’m traveling with me, and here’s his phone number” sheets stuck in his pack and his pockets, but that was the extent of our disaster-preparedness plan. Perhaps my derring do was inherited from my father who, at exactly the same age as I was in 2009, set off with me on a bus trip across America.
Because I didn’t have a laptop with me, my only connection to the Internet was on an early-model iPod Touch, so my blogging about the trip was light; one can only tap out so much on the tiny glass keyboard before one has to go to bed. As such events that in memory loom large and formative received only scant mention in the blog. This entry from March 17, 2009, for example, references Oliver locking himself in the hotel bathroom with only a sentence or two:
The highlight of the day came at the very end when Oliver somehow locked himself in the bathroom of our apartment. After 20 minutes of trying to talk him through unlocking the door and another 20 of the helpful front desk clerk trying various things, the Košice Fire Brigade was summoned in the person of a very kind man who eventually pried open the door enough to allow Oliver to pass the key out. Oliver emerged none the worse for it (well, he may never pee again).
Here, for posterity, is the full story.
Our destination of Košice, Slovakia was selected entirely on the basis of it being cheap to fly to from London, which is where we landed on the other side of the Atlantic. I was looking for big bang for small buck, and, thanks to the now-defunct airline SkyEurope, we were able to fly London to Košice for just 128 EUR. For both of us.
It was a grueling itinerary. We flew overnight on Air Canada from Halifax to London Heathrow, took the bus to Luton, and then, after a layover, flew Luton to Košice, arriving in the evening. SkyEurope was leasing planes from Bulgarian Airlines, and the tired condition of the 737 that we flew didn’t inspire confidence. But it got us there.



On arrival in Košice my grand plans to take the bus to our hotel fizzled in a puddle of jetlagged confusion and so we hopped in a cab and arrived at City Residence in short order (in fact I know exactly what time we arrived–8:00 p.m.–because I created a Plazes place for the hotel on arrival).
Both Oliver and I were zonked and so acting on the fringes of rationality. I was worried about having been out of touch with the home office for so long, so busied myself trying to get my iPod Touch hooked up to the hotel wifi so I could check my email for the first time in 24 hours.
In the midst of this maelstrom, Oliver asked me if it was okay to go to the washroom.
It’s important to understand at this point in the story that Oliver was, at this point in his life, only just becoming used to the idea of using public washrooms, and, along with the staff at Prince Street School, we’d been working hard to get him used to the idea of locking the bathroom stall at school.
And so it wasn’t unusual when Oliver asked me, before heading into the toilet, if he should lock the door.
“Of course you should,” I said, not particularly paying attention to any possible ramifications of what saying so might mean.
I eventually got myself online (the world had not ended, I was happy to find), and was making my way through my email backlog when I realized that I hadn’t heard from Oliver in quite a while.
“Oliver, are you there?” I shouted.
“Yes,” he replied. “I’m stuck.”
What had happened is this: the City Residence hotel was located in an old, well-renovated building with heavy wooden doors, inside and out, that locked with skeleton-like keys. Upon entering the toilet, Oliver had dutifully, per my instructions, turned the key in the lock to lock the door, gone about his ablutions, and then, when he went to leave the toilet, realized that he couldn’t unlock the door. The trick was that to unlock the door required slightly more mechanical “fiddle the lock to align the key” finesse than Oliver was capable of.

My first step in trying to rectify this was to talk him through the process of said-fiddling. To no avail (Oliver is not an oral learner, especially when locked in an Eastern European washroom).
My next step was to imagine that the front desk would likely have a spare key.
But our room didn’t have a phone, and we were on the top floor, so my only option was to leave Oliver in the locked washroom by himself and run down three flights of stairs to find the night manager.
My reaction to the enormity of that requirement was, upon further reflection, somewhat irrational: I called up Catherine on my mobile phone, apprised her of the situation, and put the phone beside the door so she could keep Oliver company during my absence. While on paper this made perfect sense, I failed to consider the trans-Atlantic panic-transference that I would cause (“Hi KD, everything’s okay, but Oliver’s locked in the bathroom and I need to leave, so could you keep him company for a while?”).
Fortunately, Catherine has a steady head, and, panic-transference or not, her disembodied presence proved helpful.
Meanwhile, I vaulted down to the lobby, found the night manager, and she quickly came back upstairs with me, carrying a medieval ring of every single key in the hotel’s collection.
None of which worked in the bathroom door in our room.
She opened up the other rooms on the floor (we were the only ones staying in the hotel, it seemed), and tried their bathroom door keys.
None of which worked in the bathroom door in our room.
We were running out of options. And Oliver, while maintaining Herculean-like cool in the face of this adversity, was starting to flag: he was flushing the toilet every minute or so to calm himself.
The night manager also was impressively cool, and she went off to call the fire brigade with hopes they could send someone over to… well, I’m not sure. Break down the door?
About 15 minutes, and a lot of toilet-flushing-calming, later, a friendly member of the Košice Fire Department arrived, tool box in hand, ready to see what he could do.
When it became apparent that breaking down the door was not an option, andthat explaining to Oliver, in Slovak, how to use the key was not an option, he motioned for me to help him haul on the bottom of the door to get it to the point where there was just enough of a gap opened up that Oliver could pass the key back through to us.
And it worked.
We unlocked the door, Oliver walked out, mostly unscathed.
We were all very, very happy. I took a picture of Oliver and his savior:

While I have no earthly concept of how long this took, the timestamp on that photo is 9:15 p.m., so I have to imagine it was at least an hour. We called Catherine back to assure her that everything was okay.
We bid the firefighter goodbye, with heartfelt thanks, thanked the night manager for working so diligently. And then we went out for pizza. It was late, but we were exhausted and very hungry.
We ended up at a Moroccan joint on the high street called Emir and wolfed down a pizza.

The rest of our visit to Košice, by comparison, was uneventful: we went to the ballet to see The Marriage of Figaro, visited the zoo, ate vegetarian goulash, saw the movie Marley and Me, and wandered around the city.
And then we headed west for Bratislava, Vienna, Nuremberg, Paris and London where we had many more adventures.
That trip a decade ago was a first of many that we took together over the following years, during the March school break: in 2010 it was Germany; 2011 and 2012 it was Florida to visit my parents; in 2013 we went to Japan; in 2014 we went to Toronto to fetch Ethan the Dog; in 2015 we took the year off; in 2016, 2017 and 2018 we spent the week in Halifax.
Along the way the young boy who looked like this:

has turned into the young adult that looks like this:

I don’t know what possessed my father, in 1980, to think that heading off into yonder with his 14 year old son for a bus-vacation was a good idea, but that trip remains one of the highlights of my childhood, and of my relationship with my father. I am happy to have had that as a template for my own parenting, as the times that Oliver and I have spent in our own yonder have similarly been some of my happiest memories of being a parent.
As is our tradition, Oliver and I head off together tomorrow for a March school break trip, our last one, as Oliver finishes public school in June.
Our final destination is Portland, Oregon, where we’ll visit my old friend, and Oliver’s namesake, Oliver Baker.
We are, however, taking a circuitous route to get there.
Tomorrow evening we fly Charlottetown-Montreal-Vancouver.
We’ll spend Monday night in Vancouver, Tuesday in the city with my old friend Theresa, and then catch the Amtrak Cascades from Vancouver to Seattle on Tuesday night.
After an overnight and Wednesday in Seattle, we’ll hop on the Amtrak again to finish the trip down to Portland, where we’ll be until midday Sunday.
Sunday afternoon we reverse the process: train to Seattle, overnight, train to Vancouver, overnight, fly home via Vancouver.
The circuitousness comes as a result of several factors involving airline ticket pricing, airport security mitigation, border security hassle minimization, service dog peeing opportunity maximization, and a love of trains.
We’re looking forward to it.
Went to the 68th Equinox Party with Seth last night; I used to go more often years ago but haven’t been in quite some time. The theme for the evening was 1968 and I enjoyed the puzzles – of varying difficulty and complexity, some done in teams and some where everyone participated. As always the group is super friendly, nice, and smart; very inclusive.
The cryptic crossword was probably my favorite but I also liked the word guessing game where two people would go “on stage” and guess from clues a partner would yell to them. The clue-givers could see a list of 9 words on a screen overhead (so everyone else could see them too). Each word had letters matching one of two patterns (for example, starting with H, has a G somewhere in the middle, ends in a Y; or has the letters RDA somewhere inside) So as a guesser, you had to take your turn keeping the patterns in mind. Another big group game – group 20 questions, where we all wrote a word down as our (private) guess, with the secret holder on stage (having chosen a word). The audience took turns asking a yes or no question. Everyone whose word matches that question scores a point. If your word is eliminated you don’t get a point and you choose another word with the previous answers in mind. I was SO CLOSE guessing “Earth” when the answer was “Moon”… Anyway, it’s very interesting to study how they structure a game to be interesting to a broad variety of people and keeping all their attention.
On the way there I stopped by 24th and Mission to enjoy Orquestra La 24, as always, lovely & people were dancing & the music was great.

Ich war heute auf der Samsung Roadshow im Darmstadtium, von der Heinern auch etwas knötternd "Schepp Schachtel" (Schiefer Karton) genannt. Dort habe ich gleich meinen nächsten Fernseher entdeckt. So groß muss er schon sein, auch wenn es bisher praktisch kein Material dafür gibt.

Die Schepp Schachtel ist eine großartige Location für solche Veranstaltungen. Ich bin froh, dass Darmstadt dieses Kongresszentrum hat. Alle Bilder habe ich übrigens mit dem Galaxy S10 gemacht. When in Rome, do as the Romans do.


Was mir am S10 besonders gefällt, ist die Weitwinkelkamera. Solche Räume kann man sonst nur sehr schlecht fotografieren. Ja, das verzerrt am Rand etwas, aber das stört mich nicht.

Ansonsten ist der Vorsprung gegenüber dem S9 (links) nicht so groß, dass man den doppelten Preis dafür zahlen sollte. Mit ein bisschen Geduld, sagen wir mal drei Monate, wird auch das S10 erschwinglicher sein. Vor dem Fingerabdrucksensor im Display muss man keine Angst haben, der funktioniert ganz ordentlich, wenn auch nicht so schnell wie der des S10e am Rand des Gehäuses.

Kleine Kuriosität am Rande: Ich wusste gar nicht, dass Samsung einen Staubsaugerbot hat. Allerdings war die Vorführung nicht überzeugend. Binnen Sekunden hat sich der Bot an der Fußleiste rückwärts (!) festgefahren. Der würde von der Scheffin hier keine Betriebserlaubnis bekommen.

Mich hinterlassen die Produktbesprechungen in Zeitschriften, Webseiten und auf Youtube zunehmend ratlos. Entweder leiern sie eine lange Latte von Tech Specs herunter, zeigen Produkte in stimmungsvoller Zeitlupe, oder sie präsentieren im Vergleich eine Reihe eher durchschnittlicher Fotos.
Heute hat mich interessiert, wie sich das neue Nokia 9 schlägt, da ich selbst keine Erfahrung damit habe und auch kein Testgerät anfordern will. Alles, was ich dabei herausgefunden habe, sagt mir nur, dass Reviewer mit allen Kameras gleich schlechte Bilder schießen. Immerhin habe ich gelernt, dass das Handy zwischen zehn und 25 Sekunden braucht, um ein Bild im Hintergrund zu verarbeiten. Bei den Datenmengen, die fünf Kameras produzieren, ist das eigentlich kein Wunder.
Ich kann das auch bei mir selbst beobachten. Neben dem iPhone nutze ich gerade ein Samsung Galaxy S10. Das ist ein wenig benachteiligt, weil die SIM im iPhone steckt und auch alle wichtigen Nachrichten dort ankommen, aber was soll ich sagen? Beide Handys sind toll. Ob ich nun den Bildschirme betrachte, irgendwelche Apps nutze oder Fotos vergleiche, das macht alles keinen Unterschied. Ich kann nicht durch mein Fotoalbum gehen und sagen: Ah, das ist vom iPhone und das ist vom Galaxy. No way!
Und das ist des Pudels Kern: Kauft Euch einfach, was Euch gefällt. Bei mir ist die Wahl einfach: Ich mag das, was Apple macht, mehr als das, was Samsung macht. Und zwar nicht auf irgendwelche Specs bezogen oder irgendwelche Features. Sondern einfach alles in der Gesamtschau. Homekit funktioniert für mich, die Apple Watch sowieso, das Apple TV, Siri eher als Bixby, iOS lieber als Android etc. Ging es nur um das Handy, dann könnte ich in Minuten wechseln.
Auch bei den Laptops bin ich mittlerweile soweit. Mir ist es egal, ob ich mit einem Yoga oder einem MacBook schreibe. MacOS oder Windows 10? Das funktioniert beides. Nur das iPad Pro hat noch eine Ausnahmestellung. Das ist meiner Ansicht nach konkurrenzlos.
Wie wenig mir Specs bedeuten, merkt man an meiner praktischen Nutzung des iPhones. Ich habe das dickste, schwerste und größte iPhone aller Zeiten. Seit ich das Smart Battery Case habe, habe ich es nicht mehr raus genommen. Es gibt soviel, was dagegen spricht. Aber in der Praxis hat es für mich Eigenschaften, die ich absolut liebe: Man greift das Ding sicher, hebt es ganz einfach von jeder Oberfläche hoch. Es rutscht nicht herum, weder in der Hand, noch im Auto, noch auf dem Tisch. Der Akku ist praktisch immer voll. Ich habe es auch unter intensiver Nutzung der Kamera bisher nicht geschafft, das Ding leer zu bekommen. Eigentlich ist alles falsch: Eine billige Silikonoberfläche statt feinster Materialien, schwer und klobig, und doch ist es das beste Handy, was ich je hatte. Wenn ich schlafe, dann liegt es auf einem Charger, wenn ich wach bin, ist es auch wach.
Würde jemand anderes das auch so empfinden? Vermutlich nicht. Es gibt so viele Gründe, die dagegen sprechen. Die Scheffin hat ein iPhone SE als Diensthandy. Sie mag es nicht, weil alles so klein ist im Vergleich zum iPhone 8 Plus, das sie sonst nutzt. Es gibt jedoch auch gute Gründe für so ein kleines Gerät. Aber das kann kein Reviewer vermitteln.

Heute kam aus heiterem Himmel ein Geschenk. Und da hat jemand extrem gut aufgepasst, weil ich den Vipp 501 vor ein paar Monaten nur einmal erwähnt habe, ohne dass er auf der Amazon Wunschliste stand. Vielen lieben Dank, ganz besonders auch von der Scheffin.

Recently, Sven Slootweg (joepie91) published a blog entry entitled Why you should never, ever, ever use MongoDB. It starts out with the words "MongoDB is evil" and proceeds to give a list of negative statements about same.
I am not here to respond to each of his statements. He labels them as "facts", and some (or perhaps all) of them surely are. In fact, for now, let's assume that everything he wrote is correct. My point here is not to say that the author is wrong.
Rather, my point here is that this kind of blog entry tells me very little about MongoDB while it tells me a great deal about the emotions of the person who wrote it.
Like I said, it may be true that every WTF the author listed is correct. It is also true that some software has more WTFs than others.
I'm not a MongoDB expert, but I've been digging into it quite a bit, and I could certainly make my own list of its WTFs. And I would also admit that my own exploration of Couchbase has yielded fewer of those moments. Therefore, every single person on the planet who chooses MongoDB instead of Couchbase is making a terrible mistake, right?
Let me briefly shift to a similar situation where I personally have a lot more knowledge: Microsoft SQL Server vs PostgreSQL. For me, it is hard to study SQL Server without several WTF moments. And while PostgreSQL is not perfect, I have found that a careful study there tends to produce more admiration than WTFs.
So, after I discovered that (for example) SQL Server has no support for deferred foreign keys, why didn't I write a blog entry entitled "Why you should never, ever, ever use SQL Server"?
Because I calmed down and looked at the bigger picture.
I think I could make an entirely correct list of negative things about SQL Server that is several pages long. And I suppose if I wanted to do that, and if I were really angry while I was writing it, I would include only the facts that support my feelings, omitting anything positive. For example, my rant blog entry would have no reason to acknowledge that SQL Server is the mostly widely used relational database server in the world. These kinds of facts merely distract people from my point.
But what would happen if I stopped writing my rant and spent some time thinking about the fact I just omitted?
I just convinced myself that this piece of software is truly horrible, and yet, millions of people are using it every day. How do I explain this?
If I tried to make a complete list of theories that might fit the facts, today's blog entry would get too long. Suffice it to say this: Some of those theories might support an anti-Microsoft rant (for example, maybe Microsot's field sales team is really good at swindling people), but I'm NOT going to be able to prove that every single person who chose SQL Server has made a horrible mistake. There is no way I can credibly claim that PostgreSQL is the better choice for every single company simply because I admire it. Even though I think (for example) that SQL Server handles NULL and UNIQUE in a broken way, there is some very large group of people for whom SQL Server is a valid and smart choice.
So why would I write a blog entry that essentially claims that all SQL Server users are stupid when that simply cannot be true? I wouldn't. Unless I was really angry.
MongoDB is undisputably the top NoSQL vendor. It is used by thousands of companies who serve millions of users every day. Like all young software serving a large user base, it has bugs and flaws, some of which are WTF-worthy. But it is steadily getting better. Any discussion of its technical deficiences which does not address these things is mostly just somebody venting emotion.
For the record, it was +6°C this morning, so after this unusually long winter, I rode in with shorts.

Hoping that spring will actually spring soon.