Shared posts

02 Oct 00:54

Short term rental

by Stephen Rees

Screen Shot 2018-09-29 at 11.58.19 AM

This blog post is cobbled together from facebook postings prompted by recent events: I had been seeking assistance there but it turned out with a bit of luck and my very own Miss Marple we were able to track things down.

Context

Short term rentals have exploded everywhere. There have always been short terms lets for tourists – holiday cottages, flats and bed and breakfasts all offering furnished accomodation as a cheaper alternative to hotels and with more or less service. We have all (I suspect) used them. The internet changed how we booked them. We no longer buy a copy of a magazine like The Lady (which used to have lots of holiday lets in its small ads over the winter) we go to a website like Craigslist, or one of the growing number of specialists sites and apps of which airbnb maybe the best known but there are lots of others. In Vancouver, many advocates for increasing the supply of rental housing have been pointing to the explosion of these services as one of the reasons that rents are high and vacancy rates near zero. The revenue from these short term rentals is a lot higher than a long term tenancy.

The City of Vancouver “enacted a new bylaw that permits Vancouver residents to operate short-term rentals in their principal residence for stays of less than 30 days” starting April 19 this year. “Secondary suites can be operated as a short-term rental by an owner if it is their principal residence” but they need a business license.

A Series of Events

There are over 80 suites in our building and there has been a fairly high rate of turnover. We also see plenty of care aids coming to visit their clients.  We try to get to know our neighbours. We also have a common laundry.  There are of course rules about how these facilities are shared. There is a system of reservation of laundry times – and one of the things that has changed recently is the number of times people have been in the laundry having the machines explained to them. Whenever we ask who these people are they usually are said to be relatives of the owner. One or two owners seem to have a lot of visitors.

One day we met a very pleasant young man in the elevator going down to the laundry. We asked him when he had moved into the building and he explained that he was in a short term rental. He said he was only here for three days prior to going on a cruise to Alaska. Miss Marple observed him going into a newly renovated unit – one we had been into on an “open house” event. At that time it had its own, newly installed washer and dryer.

Every strata has bylaws. Bylaw 14 in ours is pretty straightforward

No strata lots may be rented or leased

It goes on to set out a few exceptions but none cover short term rentals or operating a bed and breakfast out of your suite.

 

We did a quick scan of the airbnb web page looking for something in our vicinity, but found nothing. Then a couple of days later, there was some undelivered mail on the shelf by our mailboxes. Two envelopes – both addressed to the suite in question and from Booking.com in Amsterdam. There was no name of the addressee but a company “Royal Crown” on one “Royal Crown & Suite” on the other. Miss Marple did a Google search and there it is – not on Booking.com but airbnb. I have taken screen shots, so let me know if that link doesn’t work in the comments, and I will add them here.

I looked at the information and saw what appeared to be a business licence number. The City has the data on business licenses available as spreadsheets you can search. I established that the number quoted referred to two people I do not know and an address of a suite on Howe Street.

So I used the VanConnect app to report what we had learned to the City. Apparently many people are disappointed with the lack of action by the City on this issue and there is also now a Twitter account that is increasing the pressure (hat tip to Sean Orr for that link). You can also go to this report an issue page on the City’s site.

I also joined up for airbnb and tried to send the owner of the unit a message. That wasn’t possible since there was not a single date I could book the unit. This seemed a bit odd to me, so I reported that to Airbnb Support.

Screen Shot 2018-09-28 at 8.22.16 PM

The response time “may vary” is a flat lie. They just don’t want to communicate any more with me. There is, of course, no other way to communicate with them. I have never used airbnb – and now I don’t think I ever will.

Action

I don’t expect the Strata Council or the Building Manager to act as though this were an emergency. I do think that it may offer us a way of increasing the strata revenue since the by law also identifies a fine

(b) if the rental continues beyond the provisions of the Residential Tenancy Act, levy a fine of $500 every 7 days of prolonged occupancy, such fine to be added to the monthly assessment of the owner;

Now I also think that we probably need to add some wording at this point to cover the short term issue. The fines are now much greater than $500 for seven days for non-compliant short term rentals. Just by looking at the 8 reviews for September alone on this one suite – and taking them at face value – there is some revenue due. The Property Manager seems a bit hung up on the Residential Tenancy bit so we may need a General Meeting to resolve that.

The City could fine the owner $1,000 a day for as long he stays in business: the bogus business license should act as a trigger. Hopefully we will hear a bit more in due course and if we do I will update this post.

There is also the really useful Condominium Home Owners’ Association of BC. They have a number of bulletins on short term rentals – these are pdf documents to download listed here: look in the index under “rentals” for “short term rentals”.

By the way, since I joined airbnb I have now submitted a complaint using their online form, and got this response

Screen Shot 2018-10-03 at 4.22.02 PM

The City has now responded to my complaint using the VanConnect app: the status is “In Progress”. The City has also responded to my partner – just acknowledging receipt of the complaint. The building manager says that he has spoken to the owner. However, the listing is still on airbnb complete with the bogus business license number. (Last checked October 11, 2018)

 

 

 

02 Oct 00:53

F*ck

by /u/Scaulbylausis
02 Oct 00:52

HomePod as speakerphone

by Volker Weber

ZZ51D4BE7B

The HomePods have had a hard time finding a place in my built-out Sonos home. There are speakers in every room and most of them are better (and more expensive) than a HomePod, or even a pair of HomePods. But eventually they have turned out to be the best solution for an unlikely use case:

HomePod is a great conference speaker. And it has only gotten better with the iOS 12 release.

You can tell Siri to call somebody and it will ask for details, if it finds multiple phone numbers. During the call, the other person seems to be right in the room. Unlike the speaker on an iPhone, voices come across fully. The other party seems to be in the room. HomePod is also great for picking up voices in its own room and transferring them across. It's better than any Polycom I have used before. Maybe they have gotten better and I am dissing their more recent products, but that's my experience. You don't have to make the call through Siri. You can also transfer the call to a HomePod by tapping on the audio button during a call to transfer it. This allows you to first introduce the other party to the idea that you will be putting them on speaker.

We have seen Apple TV making their way into conference rooms so that presentation can be run over Airplay to a projector or a screen attached to a wall. We may also see HomePods showing up there. Since there is no other way to secure them, you may need to glue them to the table.

There is one important caveat: if you want Siri to place a call, you need to open up personal requests on your iPhone. Which allows anybody to walk up to a HomePod and ask for your schedule, hear your messages or dial your phone. If you don't want that, you will have to go through your iPhone, or Siri on your iPhone, to make place calls.

02 Oct 00:51

Strange Loop 2: Simon Peyton Jones on Teaching CS in the Schools

by Eugene Wallingford

Simon Peyton discusses one of the myths of getting CS into the primary and secondary classroom: it's all about the curriculum

The opening keynote this year was by Simon Peyton Jones of Microsoft Research, well known in the programming languages for Haskell and many other things. But his talk was about something considerably less academic: "Shaping Our Children's Education in Computing", a ten-year project to reform the teaching of computing in the UK primary and secondary schools. It was a wonderful talk, full of history, practical advice, lessons learned, and philosophy of computing. Rather than try to summarize everything Peyton Jones said, I will let you watch the video when it is posted (which will be as early as next week, I think).

I would, though, like to highlight one particular part of the talk, the way he describes computer science to a non-CS audience. This is an essential skill for anyone who wants to introduce CS to folks in education, government, and the wider community who often see CS as either hopelessly arcane or as nothing more than a technology or a set of tools.

Peyton Jones characterized computing as being about information, computation, and communication. For each, he shared one or two ways to discuss the idea with an educated but non-technical audience. For example:

  • Information.   Show two images, say the Mona Lisa and a line drawing of a five-pointed star. Ask which contains more information. How can we tell? How can we compare the amounts? How might we write that information down?

  • Computation.   Use a problem that everyone can relate to, such as planning a trip to visit all the US state capitals in the fewest miles or sorting a set of numbers. For the latter, he used one of the activities from CS Unplugged on sorting networks as an example.

  • Communication.   Here, Peyton Jones used the elegant and simple idea underlying the Diffie Hellman algorithm for sharing secret as his primary example. It is simple and elegant, yet it's not at all obvious to most people who don't already know it that the problem can be solved at all!

In all three cases, it helps greatly to use examples from many disciplines and to ask questions that encourage the audience to ask their own questions, form their own hypotheses, and create their own experiments. The best examples and questions actually enable people to engage with computing through their own curiosity and inquisitiveness. We are fascinated by computing; other people can be, too.

There is a huge push in the US these days for everyone to learn how to program. This creates a tension among many of us computer scientists, who know that programming isn't everything that we do and that its details can obscure CS as much as they illuminate it. I thought that Peyton Jones used a very nice analogy to express the relationship between programming and CS more broadly: Programming is to computer science as lab work is to physics. Yes, you could probably take lab work out of physics and still have physics, but doing so would eviscerate the discipline. It would also take away a lot of what draws people to the discipline. So it is with programming and computer science. But we have to walk a thin line, because programming is seductive and can ultimately distract us from the ideas that make programming so valuable in the first place.

Finally, I liked Peyton Jones's simple summary of the reasons that everyone should learn a little computer science:

  • Everyone should be able to create digital media, not just consume it.
  • Everyone should be able to understand their tools, not just use them.
  • People should know that technology is not magic.
That last item grows increasingly important in a world where the seeming magic of computers redefines every sector of our lives.

Oh, and yes, a few people will get jobs that use programming skills and computing knowledge. People in government and business love to hear that part.

Regular readers of this blog know that I am a sucker for aphorisms. Peyton Jones dropped a few on us, most earnestly when encouraging his audience to participate in the arduous task of introducing and reforming the teaching CS in the schools:

  • "If you wait for policy to change, you'll just grow old. Get on with it."
  • "There is no 'them'. There is only us."
(The second of these already had a home in my brain. My wife has surely tired of hearing me say something like it over the years.)

It's easy to admire great researchers who have invested so much time and energy into solving real-world problems, especially in our schools. As long as this post is, it covers only a few minutes from the middle of the talk. My selection and bare-bones outline don't do justice to Peyton Jones's presentation or his message. Go watch the talk when the video goes up. It was a great way to start Strange Loop.

02 Oct 00:48

Leaving Flickr

by peter@rukavina.net (Peter Rukavina)

I first signed up for a Flickr account in May 2004, three months after it launched, and in the intervening 14 years I uploaded 19,932 photos there.

I’ve used Flickr as a combination of photo backup and as a way to share photos with others, both through Flickr itself (especially in the early days, when I had an active community of friends and followers there) and here on my blog; for many years my standard method for embedding a photo in a blog post was to copy the Flickr embed code into the HTML, like this (from here):

St Bride Foundation Wayzgoose

When my yearly Flickr “Pro” invoice for $US49.99 arrived in my email this week I decided that it was time to move on: as Flickr usage has decreased generally, it’s no longer a place to go for community built around photos; and I’ve got all the storage and management functionality I need here on the blog to bring things in-house.

The only thing standing in my way was about a thousand blog posts that, like the one above, had Flickr photos embedded in them. I needed a way of bringing those photos home and updating the HTML to reflect his; so that, for example, instead of the HTML above I’d reference a locally-hosted photo, like this:

St Bride Foundation Wayzgoose

This turned out to be an interesting task:

  • Over the years there have been various URL schemes at Flickr for referencing photos: what started out as static.flickr,com later became staticflickr.com, for example (although Flickr, to its credit, never broke URLs).
  • As digital cameras have evolved, and as the width of my blog template has expanded, I’ve taken and embedded ever-larger photos; Flickr has different URLs for different photo sizes, and I generally wanted to find the largest one available and use that, even when I’d previously embedded a smaller version.

To achieve all of the permutations and combinations I needed to handle, I hacked together a Drupal module to look at every post on the blog, see if it had embedded Flickr photos, download the largest version available of any embedded photos from Flickr, modify the HTML for the image to point to the new local image locations, and update the blog post.

I’ve run this on the 8,600 posts here and updated 1,044 images. There a few stragglers to handle manually–embedded Flickr videos, links to photos rather than embeds–and I’ll mop those up before the October 19 drop-dead date.

In the meantime, here are the numbers for fourteen years of Flickr photo storage:

  • Individual photos were viewed 1,422,328 times.
  • My “Photostream”–my Flickr “home page,” if you will–was viewed 138,865 times.

My most popular Flickr photos, by number of views, were these:

My most popular Flickr photos over 14 years

While I quit Twitter and its brethren for reasons of geopolitics and addiction, I’m leaving Flickr as a happy, satisfied customer: the site seems in good hands now that it has left Yahoo! and joined SmugMug, so all the geopolitical fears of Yahoo! dominating the world via my baby photographs have long since passed. I simply want to be in more control of my digital data, and to have everything that’s part of a blog post fall into terrain that’s under my dominion.

02 Oct 00:48

“What is now called resisting is often Americans simply helping others: a concept so alien to the Trump administration that it is labelled as subversive.”

by Andrea

The Globe and Mail Opinion, by Sarah Kendzior: The resistance to Donald Trump is not what you think. “There is no unified, hierarchical group on the periphery trying to overthrow the U.S. government. There are only regular people, in every city, hoping for better, and trying to rescue the America they once knew”.
Sarah Kendzior is the author of The View From Flyover Country and the co-host of the podcast Gaslit Nation.

“There is no question that most Americans disapprove of Mr. Trump and the GOP. The question for November is whether dissent matters in the face of an increasingly autocratic regime, one whose disregard for rule of law is unparalleled in U.S. history, and one that may have engaged in voter suppression and one whose associates are being investigated for whether they collaborated with operatives of hostile states to win the previous election. The midterms have become an existential matter: Will we salvage our damaged democracy, or lose what rights remain? For non-white Americans, immigrants, women, LGBTQ Americans and other groups targeted by the administration, there is nothing abstract about this inquiry.

I spent most of the year on the road in America, and I don’t think we, as a people, are as cruel or mercenary as those who represent us. Political activists and Democrats are not as disorganized as pundits claim. Everything sounds confusing when you listen for a coherent message, and what you hear instead is an anguished cry. But at least that cry is honest. That cry means people still care. The worst sound, these days, is silence.”

Link via MetaFilter.

02 Oct 00:48

Harassment, Redress & Roman Law

by Caterina Fake

It seems as if, on the internet, harm can be done to others immediately, continuously, thoughtlessly, and unceasingly, and worse, without consequence to the perpetrator, who enjoys only satisfaction, righteousness, and immunity. It seems that a willingness to participate in conversations online is an implicit agreement to be subjected to harassment and abuse. Countless people–let me just say, most people I know with active online lives–have suffered this. People have committed suicide because of this abuse, old and young, but especially the young; countless people have withdrawn from both the online and offline world after having been subjected to online bullying; the victims, most often coming from the most vulnerable, protected groups, continue to suffer and retreat further from the full embrace of the world and its possibilities.

Those who suffer from racism, sexism, harassment and a daily parade of micro-aggressions have no recourse under any company’s Terms of Service, not to mention the law, unless an actual assault has taken place–and as is well documented, few of those cases are prosecuted, and of those, a vanishingly small number result in conviction. The punishments mostly accrue to the victim reporting the crime.

Online, in the various communities I’ve participated in, built and managed, I’ve written a half dozen Community Guidelines, and spent countless hours thinking through this problem. I’ve kicked countless perps off a dozen web sites, banned, muted and used secret troll-thwarting ninja techniques to perma-ban awful people using robust, well designed admin interfaces. I’ve even reported bad actors to the FBI.  I couldn’t think of how, under the law, the people who suffer from these agonies could be protected from, or receive redress from the thugs whose wrongs they had endured.  But today I happened upon an article about sexual harassment and Roman law, which presented a vision of the law that I hadn’t thought possible: Here’s what it said.

From its earliest codification in the Twelve Tables of 450BC, Roman law gave people a right to recover damages for personal injury.

The law expanded over the centuries to protect an increasingly wide range of personal rights by means of an action known as the actio injuriarum (or action for injuries). By the time of the publication of the Digest of Justinian in 533AD, the action protected three groups of rights:corpus (bodily integrity), fama (reputation), and dignitas (dignity).

This is where the major difference lies between our English-based law of torts and Roman law: although the law of torts allows a plaintiff to sue for bodily injury and defamation, it offers no protection for dignity and therefore no right to sue for verbal insult, no matter how offensive.

The actio injuriarum lives on in modern legal systems. A good example is South Africa, whose legal system is based on Roman law. There, the action has been used to recover damages for sexist verbal insults, unwelcome propositioning for sexual intercourse, and unwelcome exposure to pornography. The action also protects privacy, so it has been used to recover damages in cases involving peeping Toms, stalking, and the publication of intimate facts about people’s private lives.

 

02 Oct 00:47

Oliver's Last Supper as a Child

by peter@rukavina.net (Peter Rukavina)

Eighteen years ago tonight Catherine and I were having supper at the Town & County the night before Oliver was born. Tonight we celebrated his impending adulthood at Papa Joe’s. With him.

02 Oct 00:47

Briefing: Foreign criticism of iPhone XS’ “beauty filter” stumps Chinese media

by Bailey Hu
For Chinese users, an automatic filter in the new iPhone seems commonplace.
02 Oct 00:47

After being constantly bothered by your automated help

by tychay

Let’s just say when my phone buzzes at 10:30pm and again at 12am. I turn into Statler or Waldorf

Dear DoorDash support,

I did not do this support request. I’ve never used your service. (I believe many at a previous company I worked at would use you when catered lunch wasn’t ordered that day, but I’m among those that subscribed to the theory of “Learned Laziness.”) In fact, initially I thought this was phishing or spam because we have no previous business relationship or customer interaction.

If the person who whined to you to create this support ticket provided a phone number or other contact information —which I’m sure they did if there was a real order attached — please contact them through that order and tell them to not mistype their email in the future. I can understand how not receiving their hot pockets or whatnot on time can be stressful (in my younger years I’d have probably blown up for less if ordering-shit-from-my-iPhone-because-I’m-too-lazy-to-walk-downstairs were a thing), but that’s no excuse for not double-checking what one is typing in the contact field(s).

If I keep receiving these e-mails , I’ll simply train my mail filters to ignore and and all future e-mails coming from you.

I wish you all the best! Thank you.

terry

P.S. There is an apostrophe in “youve.” I normally wouldn’t mention it, but it’s in e-mail template you have probably sent out more than 10 million times and I’d have think it’d be a little embarrassing that the $970 million in venture capital you took in didn’t pay for a spell-checker.

Begin forwarded message:

From: “support@doordash.com” \<support@doordash.com>
Subject: Thanks for contacting DoorDash Support!
Date: September 17, 2018 at 10:30:31 PM PDT

Hello,

Thanks for contacting DoorDash!

This email is to confirm that we have received your request. Our team will be following up with you shortly.

If you do not receive a response within the next 48 hours, please make sure to check your spam or junk folder to ensure our messages can reach you.

In the meantime, check out our Dasher Help Center! We have curated answers for your most asked questions.

Your reference number is xxxx.

Sincerely,
DoorDash Support
DoorDash Help

Begin forwarded message:

From: “support@doordash.com” \<support@doordash.com>
Subject: DoorDash Inquiry
Date: September 18, 2018 at 12:11:54 AM PDT

Hi ,

Thank you so much for reaching out to us regarding your inquiry. We’re happy to look into this for you; however, we need more information regarding the issue/concern you’ve encountered.

In line with this, can you please provide us details of your inquiry, the name/email on the account so that we can have it checked and verified from our end!

Hoping to hear from you soon,! Thank you for your patience and understanding in dealing with this matter.

Take care and be safe!

Your reference number for this request is xxxx.

Best,
Allan
DoorDash Support
DoorDash Help

ref:_00D1aKEiH._5001ajJUcj:ref

02 Oct 00:47

Playing Quake Champions On Your Mac with NVIDIA Geforce NOW

by Rui Carmo

A few days ago, amidst some home automation hacking, I got an e-mail that gave me pause: it was the confirmation I’d been accepted into the NVIDIA GeForce NOW beta, which I’d applied for a few months ago but promptly forgot about. That e-mail almost single-handedly prevented me from finishing last week’s post, but provided so much fun that I just had to write something about their service from the perspective of a (nearly) retired FPS gamer.

There have been many attempts at launching game streaming services in the past–some by labels, some by third-parties, and even some by carriers1. What got me interested in GeForce NOW in the first place is that it promised hassle-free access to a few select games I cannot play on my Mac at all, like Quake Champions, which I only managed to install (but hardly play) in a Parallels VM a year back.

NVIDIA’s service is in beta, and relies on two things: data center deployments in several US and EU locations, and a finely tuned streaming protocol (with clients for PC, Mac and their own hardware). Obviously, latency is a major topic here, and has a profound influence on both parts of the equation (there are also a lot of other challenges like bandwidth, capacity, etc., but I’ll get into those later).

Myself, The Armchair Quaker

I dont play a lot of games. In fact, statistically, these days I don’t play at all, but a I spent a lot of time playing QuakeWorld through modem and ISDN dial-up connections, and enough Quake III Arena over cable and DSL to literally play some levels by ear (you can anticipate other players’ moves by listening for item respawns and pickups). In fact, I still have ioquake3 installed on my home machines (I even have an SD card with a preconfigured image for the Raspberry Pi), and given enough free time (which is quite seldom these days) I will play a couple of hours every few months as a sort of extremely invigorating stress relief.

I also ran a games site back in the early 2000s (complete with online game servers, custom mods, etc.), and racked up a fair share of top slots whenever I played for keeps. So I’m not a pro, but I am proficient enough to enjoy the game–and I prefer Quake III Arena-style games because the physics make it tremendously enjoyable, and there is zero committment: you hop in, play for (a usually very intense) 20 minutes or so, and you’re out.

Streamed, Steamed Quake

Which pretty much explains that besides a couple curios (I try Fortnite now and then, but don’t really like it) the only games I bothered trying on Steam were Counter-Strike and Quake Champions:

There are plenty more games, but I only tried these for a few minutes each.

As you’ve probably figured out by now, NVIDIA’s service ties in to Steam (which, amazingly enough, I had never signed up for before), and once you launch the game from the streaming client, it connects you to a GPU-accelerated virtual machine that runs your games (in my case, through the Steam client). And it looks really nice:

Screenshot from my 5K iMac, playing at 1920x1080 and downsampled for posting.

The image quality is much better than what my site can do justice to (I re-compress everything on the fly as progressive JPEGs), but the game design actually helps a lot:

The decor is still dreary, but the rundown look actually helps with the encoding.

Looks, however, aren’t the most important thing here. Besides the learning curve (new levels, somewhat different game physics and even different weapon characteristics2), I had to learn how to cope with three different kinds of latency: input lag, streaming lag, and server lag (since the game servers you end up on are not necessarily co-located with NVIDIA’s front-ends).

How Fast Can You Twitch?

True to my own self and my ISP background, I soon started digging into the networking specifics. The closest data center to me seems to be in France (as confirmed by LittleSnitch and some judicious poking around with traceroute):

Little Snitch is wonderful to keep tabs on this sort of thing. But OH WOW, TEN GIGABYTES OF TRAFFIC!?

Network latency for me seems to be around 30-35ms away as the packets fly (I am currently on a Vodafone fiber connection that transits through Cable & Wireless to get to Abovenet and then to France, which is a little circuituous but workable):

$ traceroute np-par-01.cloudmatchbeta.nvidiagrid.net
traceroute to np-par-01.cloudmatchbeta.nvidiagrid.net (77.111.250.103), 64 hops max, 52 byte packets
 1  vodafonegw (192.168.1.1)  5.868 ms  0.492 ms  0.401 ms
 2  2.96.54.77.rev.vodafone.pt (77.54.96.2)  2.882 ms  2.841 ms  2.892 ms
 3  107.41.30.213.rev.vodafone.pt (213.30.41.107)  2.601 ms  2.956 ms  2.950 ms
 4  ae5-100-ucr1.lis.cw.net (195.10.57.9)  2.920 ms  3.120 ms  2.941 ms
 5  ae5-xcr1.mal.cw.net (195.2.30.230)  12.594 ms  13.334 ms  13.288 ms
 6  ae39-xcr1.ptl.cw.net (195.2.8.109)  33.071 ms  33.420 ms  34.516 ms
 7  abovenet-gw.ptl.cw.net (195.2.22.166)  33.222 ms  33.207 ms  33.262 ms
 8  79.141.46.90.available.above.net (79.141.46.90)  33.641 ms  33.762 ms  33.620 ms
 9  * * *

Now, 30ms isn’t half bad–in fact, it is effectively half the latency I would experience in the old days, and perfectly manageable. But after noticing that traffic was well into the gigabyte range, I decided to start optimizing things and took a little trip to the NVIDIA client configuration dialog:

The default "Competitive" settings.

However, this made for rather muddy graphics (well, perfectly good on a smaller display, but I have a 27” 5K iMac, and I do like to snipe without zooming), so I eventually compromised and punched up the graphics back to full HD but switched off V-Sync.

I also dug out a wired USB mouse (Apple’s Magic Mouse is surprisingly good for playing, but Bluetooth didn’t help with the input lag) and filtered out some servers inside Quake Champions itself:

It pays to filter out some servers, even if matchmaking takes a bit longer.

So, in summary, I:

  • Minimized input lag (and, from a cursory read of the beta forums, likely sidestepped other issues) by using a USB mouse
  • Tweaked the video settings to a compromise of my own choosing, which helped with rendering times
  • Filtered out high-ping servers inside the game, making sure NVIDIA’s front-end only connected to EU servers (which meant NVIDIA and my provider became the sole bottlenecks)

After a few more sessions, things started looking up, and I started racking up medals at a fair clip:

I still have this particular knack, and my railgun scores improved too!

Of course, this is also because railguns and rockets are cannier weapons–you anticipate your opponent’s moves rather than twitch to hit them, and as such they are more effective in higher latency scenarios.

On the other hand, I am still hopeless at reacting in close quarters engagements, since I still can’t turn and aim accurately at speed (hopefully that will improve as I re-tune my muscle memory).

Rolling Your Own

By this time, the engineer in me was more than a little curious as to how much trouble (and cost) it would take me to put together something on my own. After all, two years ago it was entirely feasible to run Overwatch on an Azure GPU instance, so… What was the state of the art right now?

Well, in the past couple of years a bunch of other people came up with similar ideas, and it took me no time at all to find ecalder6/azure-gaming, which has a pre-built Azure Resource Manager template that fires up an NV6 instance running Windows (and the required graphics), installs Steam and ZeroTier, and enables you to play through SteamLink as if the GPU machine was on your LAN–which, let’s face it, is a very cool trick.

And it works, too, even if I only tried it at 1280x720 (excuse the muddy graphics):

Note the latency chart and diagnostics at the bottom.

It was fast enough to be playable without any tweaking, but usability is a pain. Going to the trouble of firing up ZeroTier and starting the remote VM manually and then trying to connect via Steam (which you also have to download and install on your Mac) takes a lot of the shine off it, and I wasn’t inclined to do more than a cursory attempt to match NVIDIA’s streaming experience (which I suspect I wouldn’t be able to, since the Steam Link protocol is optimized for LANs and this is an entirely different ball game…).

Running an NV6 on my personal Azure subscription soon became (literally) the top billing item, weighing in at over €16 after initial setup and a few rounds of playing–I can dial this back a little using a slightly different VM class and deploying as a preemptible instance, but it will always cost me roughly €1.4 an hour for the CPU/GPU alone, plus a couple more Euro for hard disk usage and long-term storage (usage was pretty high during setup, which accounts at least for half the amount) and a few cents of outbound bandwidth.

And compared with hosting a few websites and running some PaaS services, it is noticeably more expensive:

This is completely unoptimized (and anonymized) but that bump is telling.

Of course, this is likely to be substantially less going forward since keeping the VM disk around only costs a few cents and what matters is the runtime usage. There’s a more detailed price breakdown of various options in the ecalder6/azure-gaming README (the values are outdated and vary depending on region, but the proportions should hold up).

Regardless, this brings us to the question of what will happen when the NVIDIA beta ends and how much it will cost (which I couldn’t find any hard data on).

So What Next?

I’d really like NVIDIA to be successful with GeForce NOW, partly because the experience is way better than anything I’ve used before (especially because they have EU datacenters, unlike the other services I tried) and because I think there is a lot of opportunity for casual gamers and Mac users like myself.

I don’t see the service appealing to regular players (who will have their own gaming rigs) and even less to pros (who, like me, will be very sensitive to latency), but anyone who only has a Mac (or a lower-specced PC) and wants to play AAA titles is going to be interested, since playing 40-odd hours to finish a story-driven title is always going to be much cheaper than investing in a GPU (or, in my case, in an entirely standalone PC, or at least an external GPU).

I just don’t know if it is a big enough market, but then again maybe that doesn’t really matter at this point, and it’s really about upending the game distribution model… Which would make a lot of sense, if you ask me, since I see little point in gaming consoles such as they are these days.

But there is a point worth making: since I’m only interested in quick “in and out” matches every now and then (and only in Quake Champions right now), I don’t see myself paying for a fixed-value subscription–even considering that it completely removes the hassle of buying and maintaining a gaming PC, I just don’t play enough to justify paying a fixed monthly fee for it.

However, if they go for a PAYG or prepaid approach (say, €2 an hour payable whenever I feel like letting off some steam3), then I’m certainly going to stick around.

The Longest Yard, which feels entirely too much like returning home after a long absence.

  1. I was involved in the first attempts at building a macOS client for MEO Jogos, which was a similar, but much less sophisticated solution–getting usable frames out of an “encrypted” video stream was a fun puzzle, but one I was not able to fully solve on my own. ↩︎

  2. One of my sore points with Quake Champions is that single-shot rocket or railgun kills are much harder (especially since splash damage doesn’t work the same way), and that whomever has the lightning gun and low ping will completely own a level, since they can aim and turn much faster and accurately. Weapons were re-balanced, sure, but not evenly. ↩︎

  3. I know it’s a weak pun, but I just had to run with it. ↩︎

02 Oct 00:47

First Impressions of macOS Mojave

by Rui Carmo

After catching up on Mojave and detecting a gaping void as far as upgrade disaster stories are concerned, I decided to install macOS Mojave on my laptop last Thursday, and quickly formed a few key impressions.

Dark Mode

I’m not a fan of Dark Mode, but I do miss the dark title bar. To my surprise, Apple removed that option, and even though there are hacks to force Aqua system appearance in Dark Mode (thereby keeping the title bar and the Dock dark while forcing apps to look “normal”), I am not very keen on using them1.

Another thing that is mysteriously absent is the ability to change modes on sun down. I soon found a neat little utility called Night Owl that does exactly that, but I ended up preferring to do manual toggles. My kids soon figured out how to toggle Dark Mode via Automator, so I just added that to my scripts folder (it’s great when you start farming out this sort of thing to your offspring).

On a side note, I also found a nice CLI utility to build dynamic wallpaper HEIC files that I intend to investigate, since it incorporates a lot of detail regarding how carefully thought out the feature actually is. For years now I’ve been using a set of 20-odd triangle patterned wallpapers that rotate every 30 minutes at random (on both the Mac and Windows) and am quite fond of them, but I’d like to experiment with daytime-aware versions.

Mail Plugins

And, again, mail plugins have changed. Surprise, huh? Fortunately, some things (like one of the introspection commands to obtain compatibility UUIDs) seem to be still valid:

# Version 12.0 (3445.100.39) is what ships with macOS 10.14 (18A391):
$ defaults read /Applications/Mail.app/Contents/Info.plist PluginCompatibilityUUID
A4343FAF-AE18-40D0-8A16-DFAE481AF9C1

#...but this fails:
$ defaults read /System/Library/Frameworks/Message.framework/Resources/Info PluginCompatibilityUUID
The domain/default pair of (/System/Library/Frameworks/Message.framework/Resources/Info, PluginCompatibilityUUID) does not exist

I still can’t really figure out how to update my infamous HJKL plugin just yet (and it is still very much not a priority, I’m afraid), but I will be looking for more info soon since I do have something else in mind to build.

Having said that, the big news for me is the presence of an actual option to manage plugins in Mail:

The new plugin preferences option in Mail

As you might have surmised from the picture above, I decided to take this opportunity to move from Mail Act-On to MsgFiler, because:

It also didn’t hurt that MsgFiler was cheaper, does one thing extremely well and is almost exactly what I was considering developing myself.

Spotlight

Much to my continued amazement, Spotlight actually works as an app launcher now. At least for the first few days.

Instead of invoking it and having it choke after the first couple of letters, it now actually considers applications to be useful to users, and is smart enough to suggest launching “Microsoft Word” when I type mw. To whomever at Apple finally remembered that QuickSilver did this perfectly, my sincere thanks.

Mind you, it still chokes on some completions, but one in ten is much better than several times in each attempt.

Screenshots

I like the new take on screenshots and quick annotation. I also especially like it that the old hotkeys, which are part of the macOS oral tradition and have been passed on from parent to son since time immemorial, still work.

Somehow, I am deeply afraid that was an oversight on someone’s part and that a subsequent update will remove them.

Nothing Broke (for Now)

This, I think, was the most important thing. brew kept working. All my apps (so far) seem to have no issues whatsoever. Little Snitch and other key bits of my day-to-day experience that are so closely coupled with operating system facilities they might as well be transplants are still working just fine. Even PyObjC still seems to be working, although at this point that is exclusively Ronald Oussoren‘s merit.

All the novelty stuff (Safari favicons, Stacks, Home, Stocks and the infuriatingly US-only News app that I cannot use at all) are fine (except the News app, which, again, I cannot use at all). I don’t resent the new App Store look (much) or that Ask Siri doesn’t appear to work on my machines, but I do appreciate that it can finally talk to HomeKit devices2.

I’m also not surprised that Siri still doesn’t speak continental Portuguese, given that Apple still hasn’t figured out after over 20 years that Brazil is an outlier in keyboard layouts, grammar, vocabulary and pronunciation.

But hey, they finally figured Portugal is an iPhone launch market, so I’m not going to bang that drum–I’ll just leave it for certification boards, accessibility groups and broader entities to start excluding Apple machines from purchasing processes.

So yeah, it’s a fine upgrade. It’s also a fine desert in a few senses.


  1. If you really want to experiment, the relevant key appears to be defaults write -g NSRequiresAquaSystemAppearance -bool Yes. Remember, if you break your macOS, you get to keep all the pieces. ↩︎

  2. Incidentally, I’ve been using English (Australian) for my Siri voice across my devices. It sounds less clueless and more perky, and the way things are going, Australia is quite likely to become the greatest English-speaking nation on the planet… ↩︎

02 Oct 00:46

Happy Birthday, Oliver

by peter@rukavina.net (Peter Rukavina)

We have had so many adventures over these 18 years. You have taught me so much about about so much. You have grown into an interesting, curious, compassionate, funny young man. I’m looking forward to seeing how your life unfolds next. I love you.

02 Oct 00:46

Two Portraits

by peter@rukavina.net (Peter Rukavina)

The fifth episode of The First, titled Two Portraits, is as good an episode of television as you’re ever likely to see. Love, sex, death, illness, drugs, anger, redemption, Mars. Sean Penn and Anna Jacoby-Heron are brilliant.

02 Oct 00:46

How to Write your First Minetest Mod

by Thejesh GN

I am a big fan of Minecraft. I remember buying it in 2011 from Mojang for 15 euros. It’s one of the few games I bought. It’s also one of those games I visit once in a while. My recent experiments with it has been using Minecraft pi and Minecraft API mostly around the concept of teaching programming using games. It’s free (as in beer)1 and comes with API to play. On a non-Pi installations you need setup plugins to get access. Also since the license is unclear, I am not sure if I can use it liberally like I would use a Free and Open Source Software. Hence the exploration began and I found Minetest.

Minetest

Minetest is an open source voxel game engine. Play one of our many games, mod a game to your liking, make your own game, or play on a multiplayer server. Available for Windows, macOS, GNU/Linux, FreeBSD, OpenBSD, and Android.

Minetest - An open source voxel game engine.

Minetest – An open source voxel game engine.

Its FOSS, meant for moding and runs on all platforms. Everything I wanted. So quickly I started playing Minetest. It’s not bad. You will face an issue here and there 2 but on my Ubuntu it felt great. Next thing was to test how easy it is to mod 3 and introduce a new feature. I started by coding a new type of block. Here are the notes from that exercise.

Installation and Running

On Ubuntu installation is straight forward. It’s not difficult for other platforms too.

#install
sudo apt-get install minetest

#run by just calling
minetest

Minetest can host a server where you and your friends can share games and save work. But here we are going to play a local game in creative mode with no damages. You can create a world if there are no worlds. By clicking on New.

Create a world and start a local game.

Create a world and start a local game.

Once you start. You can play like usual. At any point you can exit by pressing ESC key. You can restart by selecting the same world.

Mod structure

On Ubuntu, Minetest configurations are stored under users home folder – ~/.minetest. The mods are stored inside the mod folder i.e ~/.minetest/mods/ each mod will have its own folder under mods. Usually installing mod means copying the mod code to this folder. With expanded mods folder with two mods mod_1 and mod_2 this is how your ~/.minetest folder will look

├── worlds
│    mods/
│    ├── mod_1/
│    │   ├── depends.txt
│    │   ├── init.lua
│    │   ├── mod.conf
│    │   ├── functions.lua
│    │   ├── README.txt
│    │   ├── textures/
│    │   │   ├── top.png
│    │   │   └── ...
│    │   ├── sounds/
│    │   │   ├── sound files
│    │   │   └── ... 
│    │   └── models/
│    │       ├── mod.x
│    │       └── ...
│    └── mod_2
│    │   ├── depends.txt
│    │   ├── init.lua
│    │   ├── mod.conf
│    │   ├── functions.lua
│    │   ├── README.txt
│    │   ├── textures/
│    │   │   ├── top.png
│    │   │   └── ...
│    │   ├── sounds/
│    │   │   ├── sound files
│    │   │   └── ... 
│    │   └── models/
│    │       ├── mod.x
│    │       └── ...
│
├── client
│
├── minetest.conf
│
│

As you see mod_1 has couple of folders and files.

  1. init.lua – This is the only REQUIRED file. This will run as soon as the game loads.
  2. mod.conf – Not a must but it’s good to have. It will contain the configuration
  3. depends.txt – To be compatible with 0.4.x you need to mention other mods your mod depends on. It’s just a listing. For modern version he dependency is part of mod.conf
  4. functions.lua – Functions
  5. textures folder with images – If you want images as part of your game
  6. models folder with models
  7. sounds folder with sound – if you want sound files

Your first mode

Before you start writing your first mod, please do know all the mods are written in Lua Scripting language. It’s easy to learn and code. You can try this 15 mins tutorial if you are short on time. With that let’s start our first mod which is just an introduction of a new block type into the game.

We will create a new mod called ‘thej’, so start with creating a folder called ‘thej’ under mods folder, i.e ~/.minetest/mods/thej and then create a mod.conf file to define our mod. mod.conf is a simple key value configuration file. Add name, description and depends. Our module is dependent only on ‘default’ mod. The contents of mod.conf will look like this

name = thej
descriptions = Thej own mod add a new brink called squares 
depends = default

Next we need define our block. For this we will create init.lua and define our block there.

print("Welcome Thej - from the mod")
minetest.register_node("thej:squares", {
    description = "Thej sqaures brick",
    tiles = {
        "minetest_block.png",
        "minetest_block.png",
        "minetest_block.png",
        "minetest_block.png",
        "minetest_block.png",
        "minetest_block.png"
    },
})

Here as you can see we are defining an item 4 for the mod thej and name of it is squares. Then we are defining images for the tiles. That’s it, the block is ready to be used.

minetest_block png image used as part of tiles.

Block

But wait we have used minetest_block.png in our tiles set. A block has six sides and hence one has to define six images in the tiles. The order is shown below. To keep it simple, I have used the same image on all sides. I created the image using an online tool called piskelapp. I created a 16×16 pixel art and then exported into 100px X 100px png image. Then added it under the folder called textures. At this point my folder structure looks like this
$:~/.minetest/mods/thej$ tree
.
├── init.lua
├── mod.conf
└── textures
    └── minetest_block.png
-- order of tiles while defining node in case you want the block to look different each side.
"up.png",   
"down.png", 
"right.png",
"left.png", 
"back.png", 
"front.png"

At this point our mod is ready to be used. Of course you can do a lot more. But this is an intro how-to.

Include and use your mod

Since your mod is already under ~/.minetest/mods you don’t have to do anything else to be loaded. So start the minteset and then enable the mode for specific world you are going to play.

Select the world and click configure.

Select the world and click configure.

Enable our mod - thej

Enable our mod – thej


START THE GAME NOW

Go to inventory search for our block and add it

Go to inventory search for our block and add it

Start using your block and build something awesome

Start using your block and build something awesome

Hi from Minetest

Hi from Minetest

  1. Not free as in freedom
  2. Which software is bug free?
  3. A mod is short for modification done by fans of a video games
  4. There are three types of items, node, tool and craftitem. Read more
02 Oct 00:46

Strange Loop 3: David Schmüdde and the Art of Misuse

by Eugene Wallingford

the splash screen to open David Schmudde's talk, 'Misuse'

This talk, the first of the afternoon on Day 1, opened with a familiar image: René Magritte's "this is not a pipe" painting, next to a picture of an actual pipe from some e-commerce site. Throughout the talk, speaker David Schmüdde returned to the distinction between thing and referent as he looked at the phenomenon of software users who used -- misused -- software to do something other than intended by the designer. The things they did were, or became, art.

First, a disclaimer: David is a former student of mine, now a friend, and one of my favorite people in the world. I still have in my music carousel a CD labeled "Schmudde Music!!" that he made for me just before he graduated and headed off to a master's program in music at Northwestern.

I often say in my conference reports that I can't do a talk justice in a blog entry, but it's even more true of a talk such as this one. Schmüdde demonstrated multiple works of art, both static and dynamic, which created a vibe that loses most of its zing when linearized in text. So I'll limit myself here to a few stray observations and impressions from the talk, hoping that you'll be intrigued enough to watch the video when it's posted.

Art is a technological endeavor. Rembrandt and hip hop don't exist without advances in art-making technology.

Misuse can be a form of creative experimentation. Check out Jodi, a website created in 1995 and still available. In the browser, it seems to be a work of ASCII art, but show the page source... (That's a lot harder these days than it was in 1995.) Now that is ASCII art.

Schmüdde talked about another work of from the same era, entitled Rain. It used slowness -- of the network, of the browser -- as a feature. Old HTML (or was it a bug in an old version of Netscape Navigator?) allowed one HEAD tag in a file with multiple BODY tags. The artist created such a document that, when loaded in sequence, gave the appearance of rain falling in the browser. Misusing the tools under the conditions of the day enabled the artist to create an animation before animated GIFs, Flash, and other forms of animation existed.

The talk followed with examples and demos of other forms of software misuse, which could:

  • find bugs in a system
  • lead to new system features
  • illuminate a system in ways not anticipated by the software's creator
Schmüdde wondered, when we fix bugs in this way, do we make the resulting system, or the resulting interaction, less human?

Accidental misuse is life. We expect it. Intentional misuse is, or can be, art. It can surprise us.

What does art preservation look like for these works? The original hardware and software systems often are obsolete or, more likely, gone. To me, this is one of the great things about computers: we can simulate just about anything. Digital art preservation becomes a matter of simulating the systems or interactions that existed at the time the art was created. We are back to Magritte's pipe... This is not a work of art; it is a pointer to a work of art.

It is, of course, harder to recreate the experience of the art from the time it was created, but isn't this true of all art? Each of us experiences a work of art anew each time we encounter it. Our experience is never the same as the experience of those who were present when the work was first unveiled. It's often not even the same experience we ourselves had yesterday.

Schmüdde closed with a gentle plea to the technologists in the room to allow more art into their process. This is a new talk, and he was a little concerned about his ending. He may find a less abrupt way to end in the future, but to be honest, I though what he did this time worked well enough for the day.

Even taking my friendship with the speaker into account, this was the talk of the conference for me. It blended software, users, technology, ideas, programming, art, the making of things, and exploring software at its margins. These ideas may appear at the margin, but they often lie at the core of the work. And even when they don't, they surprise us or delight us or make us think.

This talk was a solid example of what makes Strange Loop a great conference every year. There were a couple of other talks this year that gave me a similar vibe, for example, Hannah Davis's "Generating Music..." talk on Day 1 and Ashley Williams's "A Tale of Two asyncs" talk on Day 2. The conference delivers top-notch technical content but also invites speakers who use technology, and explore its development, in ways that go beyond what you find in most CS classrooms.

For me, Day One of the conference ended better than most: over a beer with David at Flannery's with good conversation, both about ideas from his talk and about old times, families, and the future. A good day.

02 Oct 00:46

Denouement

by Jonathan Libov

Here are the two most important things that I think are often missing from pitch decks:

  1. Identifying the friction that people in your company's market are experiencing
  2. Making the recipients of your pitch deck feel that friction

The more they feel and empathize with that friction, the greater the payoff when you articulate your product/solution. This is very much like dramatic structure in fiction: The more you empathize with whatever it is the characters are struggling with, the greater the payoff when it's resolved. Similarly, the greater the payoff when you articulate your product/solution, the more likely you are to achieve the objective for your pitch deck.

Freytag's Pyramid Freytag's Pyramid for Dramatic Structure

That friction experienced by your users is not necessarily and probably not often something that the investor experiences personally. That’s not inherently a bad thing. The less the investor is already familiar with that friction, the more excited they'll get because not only are (good) investors are naturally curious people who love learning new things about the world, but also because obscure friction means that fewer investors are looking for something like this company, hence they can get a better price.

AirBnB a good example of a product that reduces friction for an enormous market. Look at how well the first AirBnB deck creates that friction from the get-go and helps you to empathize with the friction experience by people in their target market:


Airbnb's Tension Slide 2: Tension


Airbnb's Problem Slide 3: Resolution


The very first slide (beyond the title slide) creates tension — "concern" about price, "disconnection" suffered in hotels — and the next conveys resolution — "save money", "make money", "share culture". The actual product is almost entirely opaque until the sixth slide.

Also note how the friction cited by Airbnb is not the mere absence of their product (i.e., people are suffering from not being able to rent out other people’s homes). Citing the absence of your product would be tautological and does nothing to create the tension you aim to relieve as you describe why this is a problem worth investing in, and why your team and product comprises a compelling attempt to solve that problem. There are perhaps hundreds of other solutions to the concern about price when traveling and disconnection suffered in hotels, of which the actual Airbnb product is just one.

If you’re struggling to identify the higher level friction that your problem addresses, consider framing it in terms of scarcity and abundance: What is scarce in the world that your product makes abundant? The Job to Be Done framework is also very helpful to this end.

The denouement resulting from the tension-resolution pair is the most important thing that's often absent from decks that I haven't seen covered in other blog posts. Every other piece of advice I have has been covered, but for what it's worth, here's the very simple outline I tend to recommend:

  • Title (hints at the space you're company is in)
  • Problem (creates tension)
  • Vision (resolves tension)
  • Solution (fleshes out the vision)
  • Supporting Data/Team (backs up the solution)
  • Raise (what you’re looking to accomplish with the money)

The denouement of your pitch begins somewhere in those third or fourth slides and continues through the remainder of the deck, as you reinforce why this feeling of resolution should be trusted enough to invest money and time in. While "denouement" feels a bit, well, dramatic of a term for a pitch deck, I think it's perhaps the most important thing that's oft-overlooked.

02 Oct 00:46

Keeping functional code organized

by Eric Normand

People ask me how to keep functional code organized. It’s a good question but my answer is so simple, it feels kind of silly saying it: I keep everything in one file, and split it up as it grows.

Transcript

Eric Normand: How do you keep functional code organized? Hi, my name is Eric Normand, and these are my thoughts on functional programming. I’ve heard this question before quite a number of times. It’s how do you organize your functional code?

It’s a valid question. As you start getting more code, you want it to stay clean and organized. You want to have a place for everything and know where to find it. The question is a good one. What I struggle with is why it seems to be such a problem in general that you would think to ask the question.

Here’s what I mean. This is what I do. I usually keep my code in one module until it gets too big. I split it into two, or sometimes three, or more. Usually it’s just, split it in half. What’s the stuff that’s most related that coheres the best? Put that in one place. Stuff that coheres with other stuff, put that in another place.

Just make sure that there’s no circular dependencies. Usually, the dependencies and the coherence go together. Meaning, if function A depends on B and B depends on C and C depends on D, those look like they’re related.

If you have something that doesn’t depend on that, that chain of dependencies, it’s probably something to go somewhere else. Look at the dependencies, also look at the semantics of it. These functions all have to do with users, and these functions all have to do with HTTP requests, whatever domain you’re dealing with.

Usually, I don’t even start organizing until it gets big. I think one thing that makes people ask this question is that, in object-oriented programming, there is a default file that something goes in, which is usually about one class per file.

Some languages require that, but it’s a convention that a class gets its own file. You know where a method goes. It goes in the file for that class. Of course, what that means is you have a big mess of classes. You move the mess from the function level, like methods, to the class level.

What you should be doing is thinking of your organizational unit. Now, your organizational unit is the class. In something like Clojure or Haskell, it’s the modules.

In Clojure, we call them namespaces, or libes if you like to be precise. A libe is just a file that has a namespace declaration at the top. No one calls them that but that’s technically what they’re called.

In Haskell, we’ve modules. Other languages have similar units. You just start breaking stuff up. It doesn’t have to be more complex than that. Maybe because the answer seems so simple and straightforward, people think there must be something more to it.

To me, it’s like drawers. It’s like junk drawers. This drawer I put my utensils, and this drawer I put my towels, and this drawer…this is my sock drawer. I have something like a miscellaneous tools drawer. Usually happens in a project, you have a utilities library. I don’t have some magic formula except things that go together should stay together.

I hope that helps. It’s a common enough question that I wanted to address it, even though I don’t feel like I have a super amazing answer to it.

Just don’t sweat it until you need to start organizing. Usually around 100, maybe 200 lines, I start to think, “This thing, I can’t find anything or I can’t figure out what this namespace is all about.” Maybe it’s about a couple things. Maybe it’s about five things. That’s when I start breaking it up.

That’s it. If you follow that…if it never becomes enough of a problem that you have to do real hard thinking, that’s the goal. In theory, if you’re publishing this library, and it’s going to be used by a lot of people, you want to save them time, make it easy to find things, you’re going to put in a lot of hard work thinking, “What is the purpose of this namespace?”

Just like if you’re designing a supermarket, you want to put stuff that goes together, together. You put the pasta sauce next to the pasta. You put all the meats together and you put all the fruits and veggies together. It’s just so that someone who walks in for the first time can figure out where to go.

That’s what we do, except think about it more like for a personal project or a project that your company where the general cases…that’s it’s not new people coming to your software, to your code. It’s people who can invest time and learning about the thing.

It’s not so important that it is immediately obvious where things are. It’s not. Just like when you’re at home, you don’t organize stuff by category as much as you organize it by…With your food, if we’re going to stick with that metaphor, you put the cold stuff in the fridge, and you put the non-perishable stuff in a cabinet.

It’s a different way of organizing. You don’t mind so much if the milk is next to the mayonnaise, even though they’re not…you wouldn’t find the milk next to the mayonnaise in the supermarket.

OK, let me know your thoughts. Am I over simplifying this thing? Is there anything I’m missing? Is this question something that you think about as a functional programmer? What do you do? I’d love to hear all these things.

You can reach me on Twitter. I’m @ericnormand. You can also email me eric@lispcast.com. Recently, I’ve been much better at email than Twitter. [laughs] I’m getting lots of tweets recently. If I don’t respond to you on Twitter, try my email. All right, see you later. Bye.

The post Keeping functional code organized appeared first on LispCast.

02 Oct 00:46

What Do Community Members Find Indispensable? (the big strategic question)

by Richard Millington

In The Indispensable Community, I explain the only communities which thrive in the long term are those which are truly indispensable to their brands and their members.

It’s incredibly hard to build a community that offers members something they find absolutely necessary and would struggle to get elsewhere (and you need both). Yet it’s the only way your community can thrive today.

If you’re wondering why your community doesn’t seem ‘sticky’ (why so few people stick around), this is it.

 

What’s Absolutely Necessary To Our Members?

The reason you have a community and not just a help (or information) portal is a community offers unique benefits that your members can’t get from just browsing and reading.

A community offers four unique psychological benefits; a sense of belonging, greater influence, a chance to explore things we find interesting, and mutual support.

If you’re building a community today, you have to push hard towards at least one of these benefits.

Each avenue takes you down a completely different path, and each has its pros and cons.

1) Sense of belonging.

You focus on creating a powerful sense of community.

You build a warm, welcoming, friendly, environment. You introduce rituals and traditions. You create a shared, written, history. You make it private and exclusive. You bring people together for shared events and activities as much as possible.

CampJeep is an incredible example of this.

Warning – this only works if people feel your brand is already a strong part of their identity. This usually means it’s something we spend a lot of time doing, invest resources in, or represents our identity in some way.

VERY few brands fall under this category (yet most think they do).

2) Greater influence.

You build a smaller, more dedicated, group of people around you who want to have an impact (either helping you or each other).

You set targets and drive people towards them. You celebrate wins, commiserate the losses, and provide the support people need at each stage.

Art+Feminism is a great example, as are advocacy communities (DocuSign), communities around crowdsourcing (Kickstarter), and many campaigning groups (Greenwire).

Critically you’re targeting a tiny slice of your audience who are most committed to you (look for highest NPS/satisfaction scores) and working with them to have maximum influence.

3) Exploring exciting things.

You provide a unique environment for members to share and test ideas. You might host competitions, set challenges, and highlight the newest and most exciting things.

This works well for Kaggle, Github, Lomography, ProductHunt, and many others. Each has created an entirely unique platform where people can test things, report back something new, and adapt/improve their efforts.

Warning – this only works in fields which are genuinely new and exciting. Technology figures highly here, but it’s not the only option.

4) Mutual support.

You help people with questions get answers as quickly as possible.

You ensure members feel empathetically listened to, appreciated, and respected. Many of these are about discussions you can’t search for. This means you offer information via members that isn’t easy to search for. Google can tell you warning signs of cancer, but it can’t easily prepare you (and support you) for the emotional journey you’re about to go through.

Become Absolutely Necessary To Your Members

If you want your community to be absolutely necessary over the long-term to members you have to zero in on something that offers incredible psychological value.

Something that goes beyond just providing members with information and lets them feel emotions they crave, emotions they can’t easily find anywhere else.

Pick at least one of the above and push it to the edge. If you’re doing belonging, really push that sense of belonging. If it’s exploration, then design your entire community around that principle etc…

The last thing we need is just another brand community creating yet another forum and praying members want to hang out and chat. That’s not indispensable.

Identify which of the four above you’re targeting and go all the way to the edge with it. Create something unique, different, and remarkable. Create something indispensable.

If you want to buy my book, click here.

p.s. Speaking at CMX Summit in Portland tomorrow. If you’re around, please say hi!

30 Sep 05:21

How to tell your story: A statement from Kavanaugh accuser Christine Blasey Ford

by Josh Bernoff

Regardless of what happens when Christine Blasey Ford testifies in the Senate today about Brett Kavanaugh assaulting her in high school, we now have a written opening statement from her to review. It’s straightforward and detailed. If you have a difficult story to tell, you could learn from this. I’m under no illusions about this … Continued

The post How to tell your story: A statement from Kavanaugh accuser Christine Blasey Ford appeared first on without bullshit.

30 Sep 03:50

"Give me an example of somewhere on this continent which is not in the single market and benefiting from just-in-time manufacturing." "... Switzerland?" twitter.com/davemacladd/st…

by IanDunt
mkalus shared this story from iandunt on Twitter.

"Give me an example of somewhere on this continent which is not in the single market and benefiting from just-in-time manufacturing."

"... Switzerland?" twitter.com/davemacladd/st…

"Switzerland is effectively in the single market. You know that it is Boris... you KNOW that it is..."

@Peston literally laughs in @BorisJohnson's face at all the holes in his dappy Brexit plan 👏 pic.twitter.com/AqDRzzt9eD


Posted by davemacladd on Friday, September 28th, 2018 9:28pm


4432 likes, 2362 retweets

Posted by IanDunt on Saturday, September 29th, 2018 6:00pm


199 likes, 81 retweets
30 Sep 03:50

Great Things, and “The Everglades”, by Marjory Stoneman Douglas

by Caterina Fake

MargoryStonemanDouglas

From a review by Michael N. McGregor in Tin House of The Everglades: River of Grass, a book by Marjory Stoneman Douglas, whose name is probably familiar to you now, because of the massacre of students at the school which bore her name. I was struck by this passage, which McGregor quoted, of the men who came to drain the Everglades:

Before that, in all those years of talk and excitement about drainage, the only argument was a schoolboy’s logic. The draining of the Everglades would be a Great Thing. Americans did Great Things. Therefore Americans would drain the Everglades. Beyond that–to the intricate and subtle relation of soil, of fresh water and evaporation, and of runoff and salt intrusion, and all the consequences of disturbing the fine balance nature had set up in the past four thousand years–no one knew enough to look. They saw the Everglades no longer as a vast expanse of saw grass and water, but as a dream a mirage or riches that man men would follow to their ruin.

To do Great Things. It has a powerful, irresistible appeal, but is almost always interpreted wrongly, and used to justify waste and destruction. In its name the Everglades were sold to conquistadors who made fortunes selling the plumes of ibises to society ladies for their hats, and hides of alligators for their shoes; the wildlife died off, the fires came, and the salt intrusion of the oceans.

30 Sep 03:50

Why is it OK for online daters to block whole ethnic groups? | Technology

mkalus shared this story from The Guardian:
" Where we once met people in dingy dancehalls and sticky-floored nightclubs, now millions of us look for partners on our phones. " You know what the difference between then and now is? Back then you already had "pre-filtered" the group of people you were going to interact with. Thus other things were less prominent. What's the first thing people see in a dating app? Yep, how you present yourself and.... *gasp* they judge you by it. Go figure, who'd thought that humans are visual creatures. #FullGuardian

Sinakhone Keodara reached his breaking point last July. Loading up Grindr, the gay dating app that presents users with potential mates in close geographical proximity to them, the founder of a Los Angeles-based Asian television streaming service came across the profile of an elderly white man. He struck up a conversation, and received a three-word response: “Asian, ew gross.”

He is now considering suing Grindr for racial discrimination. For black and ethnic minority singletons, dipping a toe into the water of dating apps can involve subjecting yourself to racist abuse and crass intolerance.

“Over the years I’ve had some pretty harrowing experiences,” says Keodara. “You run across these profiles that say ‘no Asians’ or ‘I’m not attracted to Asians’. Seeing that all the time is grating; it affects your self-esteem.”

Style blogger Stephanie Yeboah faces the same struggles. “It’s really, really rubbish,” she explains. She’s faced messages that use words implying she – a black woman – is aggressive, animalistic, or hypersexualised. “There’s this assumption that black women – especially if plus sized – go along the dominatrix line.”

As a result, Yeboah went through phases of deleting then reinstalling many dating apps, and now doesn’t use them any more. “I don’t see any point,” she says.

Racism is rife in society – and increasingly dating apps such as Tinder, Grindr and Bumble are key parts of our society. Where we once met people in dingy dancehalls and sticky-floored nightclubs, now millions of us look for partners on our phones. Four in 10 adults in the UK say they have used dating apps. Globally, Tinder and Grindr – the two highest-profile apps – have tens of millions of users. Now dating apps are looking to branch out beyond finding “the one” to just finding us friends or business associates (Bumble, one of the best-known apps, launched Bumble Bizz last October, a networking service using the same mechanisms as its dating software).

Glen Jankowski, a psychology lecturer at Leeds Beckett University, says: “These apps increasingly form a big part of our lives beyond dating. Just because this occurs virtually doesn’t mean it shouldn’t be subject to the same standards of real life.”

For that reason it’s important that the apps take a stand on intolerant behaviour. Bumble’s Louise Troen acknowledges the problem, saying: “The online space is complicated, and people can say things they wouldn’t say in a bar because of the potential ramifications.”

Safiya Umoja Noble, author of Algorithms of Oppression, a book detailing how search engines reinforce racism, says that the way we communicate online doesn’t help, and that in person there are more social conventions over who we choose to talk to, and how we choose to talk to them: “In these kinds of applications, there’s no space for that kind of empathy or self-regulation.”

Jankowski agrees: “There are certain things some people would say on dating apps that they wouldn’t say in real life, like ‘black = block’ and ‘no gay Asians’.”

However, Troen is clear: “Whenever someone says something like that, they know there is an army of people at Bumble who will take immediate and terminal action to make sure that user doesn’t have access to the platform.”

Others are coming round to the same belief – albeit more slowly. Earlier this month, Grindr announced a “zero-tolerance” policy on racism and discrimination, threatening to ban users who use racist language. The app is also considering the removal of options that allow users to filter potential dates by race.

Racism has long been a problem on Grindr: a 2015 paper by researchers in Australia found 96% of users had viewed at least one profile that included some sort of racial discrimination, and more than half believed they’d been victims of racism. More than one in eight admitted they included text on their profile indicating they themselves discriminated on the basis of race.

We don’t accept “No blacks, no Irish” signs in real life any more, so why do we on platforms that are a major part of our dating lives, and are attempting to gain a foothold as a public forum?

“By encouraging this kind of behaviour, it reinforces the belief that this is normal,” says Keodara. “They’re normalising racism on their platform.” Transgender model and activist Munroe Bergdorf agrees. “The apps have the resources and should be capable of holding people accountable when they behave in a racist or discriminatory way. If they choose not to, they’re complicit in that.”

Noble is uncertain about the efficacy of drawing up a list of forbidden words. “Reducing it down in the simplest forms to a text-based curation of words that can and can’t be used, I haven’t yet seen the evidence that this will solve that problem,” she says. It’s likely that users would get around any bans by resorting to euphemisms or acronyms. “Users will always game the text,” she explains.

Of course, outlawing certain language isn’t likely to solve racism. While Bumble and Grindr deny using image recognition-based algorithms to suggest partners visually similar to ones that users have already expressed an interest in, many users suspect that some apps do. (Tinder refused requests to participate in this article, though research shows that Tinder provides potential matches based on “current location, previous swipes, and contacts”.) Barring abusive language could still allow inadvertent prejudice through the efficiency of the apps’ algorithms. “They can’t design out our worst impulses and our worst human conditions,” admits Noble.

All dating apps’ algorithms are proprietary black boxes that the companies are wary of sharing with the public or competitors. But if they include some requirement of user self-definition by race (as Grindr does), or preference for interracial relationships (as sites such as OkCupid do), then with every swipe or button press the matchmaking algorithm is learning what we like and what we don’t. Likewise, Tinder’s algorithm ranks attractiveness based on previous swipes; therefore, it promotes what is considered “traditionally” beautiful (read: white) people. Crucially, no app is likely to deliberately dumb down its algorithm to produce worse matches, even if it may help prevent racist behaviour.

Bumble hopes to change user behaviour by example. “Whether it’s subconscious or unintentional, lots of people in the world are ingrained with racist, sexist or misogynistic behaviour patterns,” says Troen, adding that “we are more than happy to ban people”. (Bumble has banned “probably a couple of thousand” users for abusive behaviour of one type or another.)

Grindr’s head of communications, Landen Zumwalt, accepts that they have been slow to take action. “We have a new suite of queer leadership who only recently joined Grindr and came in with the priority to address this,” he says. Zumwalt joined the company in June; he himself has been a Grindr user, and so has “an understanding of the level of toxicity” taking place on the app.

“I knew just how bad things had been, especially for our queer users of colour, and we have a responsibility to be a bit more aggressive in how we create a more respectful area for our users.”

Grindr’s decision has been applauded by some, but is undercut by the fact it is still possible to filter out entire ethnicities. “I’m a paying user. They need to create a level playing field,” says Keodara. “Why should I pay for my own oppression? If I’m paying $14.99 every month, why should I have to be subjected to this demeaning, degrading and undignified BS.”

Leeds Beckett University’s Jankowski agrees. “It’s facilitating and encouraging racism. There’s no reason why you’d need that.”

Zumwalt said Grindr had carefully discussed removing the ethnicity filter, but were hesitant to get rid of it. “We decided before we were ready to pull the plug on that, it was a conversation we wanted with our user base,” he says. “While I believe the ethnicity filter does promote racist behaviour in the app, other minority groups use the filter because they want to quickly find other members of their minority community.”

Bumble’s Louise Troen also refuses to rule out that its app – a women-centric dating service – would not extend its recently-introduced “badges” feature (which allows users to filter by star sign and height) to add a badge for race. “There are no plans in the works to include or add a badge to do with race, but it’s a fundamental company policy that we don’t comment on where the product will be in a year, because we just don’t know.”

There has been a backlash to Grindr’s announcement that it will be cracking down on people voicing a preference for one race over others. But to Keodara, the arguments against the decision are problematic. “A lot of people say this is preference,” he says. “But just because it’s preference, it doesn’t mean it’s right. Slavery was white people’s preference.”

This article contains affiliate links, which means we may earn a small commission if a reader clicks through and makes a purchase. All our journalism is independent and is in no way influenced by any advertiser or commercial initiative.
The links are powered by Skimlinks. By clicking on an affiliate link, you accept that Skimlinks cookies will be set. More information.

30 Sep 03:49

Very Yellow

by peter@rukavina.net (Peter Rukavina)

The Adirondack chair doesn’t quite follow physical laws, but that yellow, oh my. A recent refill of the yellow half-pan in my watercolour set from an art supply shop in Amsterdam.

30 Sep 03:49

“Je besser die Bildung, desto schlechter die Augen “

by Andrea

Deutsche Welle: Brille nötig: Kurzsichtig durchs Smartphone. “In 30 Jahren wird jeder zweite Mensch kurzsichtig sein. Schuld ist auch die übermäßige Nutzung von elektronischen Medien, vor allem bei Kindern. Dabei läßt sich Kurzsichtigkeit leicht vermeiden.”

“Der ständige Blick auf den Bildschirm kann vor allem Kinderaugen reizen, ermüden und austrocknen. Eine übermäßige Nutzung von elektronischen Medien führt nach Ansicht der Wissenschaftler aber nicht nur zu mehr Kurzsichtigkeit, es leidet auch das räumliche Vorstellungsvermögen. Verschwommenes Sehen oder Schielen können die Folge sein. “

30 Sep 03:49

FreshRSS

by peter@rukavina.net (Peter Rukavina)

Like many of you, perhaps, I’ve never completely forgiven Google for killing off Google Reader, its excellent standards-setting RSS reader.

After flirting with commercial competition, like Feedly, for a time, I finally settled on a self-hosted Tiny Tiny RSS (along with its companion mobile app) as a serviceable replacement.

It is really only possible to love Tiny Tiny RSS in the way that one would love a Lada: one respects its fortitude, appreciates that it gets you were you need to go, and admires that it comes with a toolkit in the trunk. But the love is necessarily capped, and one hopes that, eventually, one might trade in the Lada for something slightly jazzier.

That something, in the case of Tiny Tiny RSS, might be FreshRSS, a new self-hostable RSS reader from Framasoft. I installed it this evening, and it is, indeed, beautiful, capable and jazzy. The requirements for running it are modest: a relatively modern LAMP server. There’s no mobile app required as the design is pleasantly responsive, and works equally well on desktop and mobile.

Framasoft is “people working together with the same desire: promote digital freedoms.” In FreshRSS it appears to be doing just that.

I’ll report back after a few weeks of using FreshRSS as to how it performs as my daily RSS driver.

Fresh RSS Screen Shot

Fresh RSS in an iPhone screen shot

30 Sep 03:48

Strange Loop 1: Day One

by Eugene Wallingford

the Strange Loop splash screen from the main hall

Last Wednesday morning, I hopped in my car and headed south to Strange Loop 2018. It had been a few years since I'd listened to Zen and the Art of Motorcycle Maintenance on a conference drive, so I popped it into the tapedeck (!) once I got out of town and fell into the story. My top-level goal while listening to Zen was similar to my top-level goal for attending Strange Loop this year: to experience it at a high level; not to get bogged down in so many details that I lost sight of the bigger messages. Even so, though, a few quotes stuck in my mind from the drive down. The first is an old friend, one of my favorite lines from all of literature:

Assembly of Japanese bicycle require great peace of mind.

The other was the intellectual breakthrough that unified Phaedrus's philosophy:

Quality is not an object; it is an event.
This idea has been on my mind in recent months. It seemed a fitting theme, too, for Strange Loop.

On the first day of the conference, I saw mostly a mixture of compiler talks and art talks, including:

@mraleph's "Six Years of Dart", in which he reminisced on the evolution of the language, its ecosystem, and its JIT. I took at least one cool idea from this talk. When he compared the performance of two JITs, he gave a histogram comparing their relative performances, rather than an average improvement. A new system often does better on some programs and worse on others. An average not only loses information; it may mislead.

• Jason Dagit's "Your Secrets are Safe with Julia", about a system that explores the use of homomorphic encryption to to compile secure programs. In this context, the key element of security is privacy. As Dagit pointed out, "trust is not transitive", which is especially important when it comes to sharing a person's health data.

• I just loved Hannah Davis's talk on "Generating Music From Emotion". She taught me about data sonification and its various forms. She also demonstrated some of her attempts to tease multiple dimensions of human emotion out of large datasets and to use these dimensions to generate music that reflects the data's meaning. Very cool stuff. She also showed the short video Dragon Baby, which made me laugh out loud.

• I also really enjoyed "Hackett: A Metaprogrammable Haskell", by Alexis King. I've read about this project on the Racket mailing list for a few years and have long admired King's ability in posts there to present complex ideas clearly and logically. This talk did a great job of explaining that Haskell deserves a powerful macro system like Racket's, that Racket's macro system deserves a powerful type system like Haskell's, and that integrating the two is more challenging than simply adding a stage to the compiler pipeline.

I saw two other talks the first day:

  • the opening keynote address by Simon Peyton Jones, "Shaping Our Children's Education in Computing" [ link ]
  • David Schmüdde, "Misuser" [ link ]
My thoughts on these talks are more extensive and warrant short entries of their own, to follow.

I had almost forgotten how many different kinds of cool ideas I can encounter in a single day at Strange Loop. Thursday was a perfect reminder.

30 Sep 03:42

Recommended on Medium: MicroBlog, Jekyll, MicroPub and IndieWeb

As part of my dive back into open source, I took a look at my blog, social networks, and other tools I’m using.

Well, maybe that’s not quite true. I’ve been tinkering with my blog for 16 years, I doubt I’ll ever stop, regardless of how I’m spending my time!

Twitter all the things

I’ve stopped using Facebook, Tumblr, Medium, and Instagram and doubled down on using Twitter for my “whole self”. Which in my case means posting cooking storms, long threads on travel, as well as lots and lots of tech.

For this post I’m not going to get into why I’m off other platforms. With Twitter, I’ve always seen it as of the web, at the very least — a link for every post. And, thanks to a long ago setup, I have an automatically updated archive of all my tweets.

Twitter once again made changes to their API for third-party apps. I’ve used Tweetbot for years with aggressive filtering to make using Twitter much much better. And Tweetbot still does that, but I’m worried for when that’s no longer possible.

And then Twitter locked my account and wanted to send an SMS to my Canadian number while I was in the US.

And that was a good reminder that that I should work on being less dependent on Twitter1 as well.

Using MicroBlog

I’ve had my eye on MicroBlog for a long time. I reserved the handle @boris there right at the beginning, but didn’t do anything with it.

I have great admiration for Pat Dryburgh and saw him working on a Jekyll theme and using MicroBlog so all his content is on his own site.

MicroBlog is free to use. You sign up and then link in one or more feeds, either RSS/Atom or JSON, and it will publish these to your timeline, linking back to the original. It’s centralized in its namespace, but aggregates content.

You can pay for a few different things. If you don’t want to run your own blog, MicroBlog will run one for you. What I pay for is cross posting, which is only $2/month. This enables, on a per feed basis, linking in your Twitter, Medium, or LinkedIn accounts, and posting content to them. Facebook Pages are supported, but I haven’t been able to get that working, and that isn’t really what I want to spend time on.

Jekyll and Git

Since I use Jekyll for my blog, all of the content is text/HTML/Markdown files. I store them in Git, and have used a variety of tools to generate and serve up the static HTML site.

Currently I have the blog source in a private repo on GitHub and use a free account on Netlify to build and serve it2.

But, with a static site, I need to run a separate server if I wanted to accept short posts on mobile. Specifically, with MicroBlog’s iOS client, it talks to either a Wordpress site or to anything that can accept Micropub3 posts.

Microglue

I talked to Pat, who was already doing interesting things with podcasts and Git to get things on MicroBlog, about what a little Microglue server would look like.

I’d want it to run on Heroku, talk to the GitHub API, understand Jekyll front matter and markdown, and speak Micropub.

I wrote this up as a series of issues in a GitHub repo with feedback from Pat, intending to place a couple of bounties. Time passed, I added a large BorisCoin4 bounty via Gitcoin, and then had ozkan leave me a note about an existing implementation.

Rube Goldberg IndieWeb

And so I dove into Pelle’s webpage-micropub-to-github. He pretty much wrote it exactly how I had hoped to have such a thing built.

It’s built in Node and has a Deploy to Heroku button which can get you up and running in minutes.

Of course, minutes turned into slightly longer as I worked on getting the entire IndieWeb toolchain configured and setup on my blog and various other places.

I documented the process in a Github issue and will likely fork Pelle’s code so I can experiment, bounty some issues, and generally make it work for me. And then contribute fixes upstream of course!

Is it working?

Since I was using live accounts for all of this, various messages made it through to different systems.

This one made it to twitter:

I may quite possibly be posting this via micropublish.net, to my own micropub server on Heroku, which turns it into Jekyll compatible md file and posts it to Github, which sends it to Netlify, which creates a feed for MicroBlog.

Which got me a “Saw what?” from @jimgroom.

But my favourite was the “It’s past midnight, is it working yet?” which made it all the way to Medium and LinkedIn.

Next Up

I’m now trying out a bunch of MicroPub Clients, and also documenting that in issues.

I’ll turn a bunch of these things into issues and see how much farther I get.

I don’t have the MicroBlog iOS client working yet, and neither is the OwnYourGram site (which is really great for walking you through every step of getting your IndieWeb / MicroPub setup). Both need some upgrades to the server to work with media handling.

I also need to share the micro and full JSON feed templates that I made for Jekyll to syndicate to Microblog with. Stay tuned, and perhaps I’ll have time to actually organize a fun IndieWeb meetup in Vancouver soon.

  1. There’s a whole other story about how Twitter’s usernames are the de facto global namespace linking offline to online. I consider this a personal failure, as there was a window in time where these systems might have been at least federated rather than in one single commercial system, and I was working on bits and pieces of identity at the time. 
  2. My colophon has documented my blog travels over the years. 
  3. The IndieWeb site talks Micropub, which is in fact a W3C Recommendation. It’s been a while since I paid attention to this — great to see the spec matured and formalized.
  4. My experimental Ethereum token. 

blog.bmannconsulting.com/micro-blo…

30 Sep 03:41

Snaps Along the Camino

by Matt

I walked a week’s worth of the Portuguese path of the Camino de Santiago with a few friends, which was a nice bookend to my Rebirth and Yellow Arrows post at the beginning of last year. My feet are sore, and I have the first significant knee pain which has given me newfound empathy for the people I love who struggle with their knees. I traveled light and just brought an iPhone XS as my camera, and these are a few snaps of things I saw along the trail.

30 Sep 03:35

Vancouver Public Library’s New Public Treasure

by Ken Ohrn

It’s really a spectacular transformation — the downtown VPL’s two upper floors have become a rich and varied public space. It’s another treasure that people in Vancouver will use and enjoy for generations to come.

The results are wonderful and amazing.  It’s now one of the best public spaces in Vancouver — and located right smack-dab in the middle of downtown.

From Price Tags — a big pat on the back for all involved.

The new 8th and 9th floors comprise 42,000 square feet.  Rooftop garden, open space, reading room, meeting rooms, a 75 (or so) seat theatre with all mod tech.

We’ve covered this previously at Price Tags HERE and HERE.