☁️🌃🏙⚠️🌲☀️🌳 Late run this past Sunday, the sun had set by the time I reached Twin Peaks(3) and kept running south to the North Peak(2). In anticipation I had worn my headlamp, turning it on for the return run after running past the South Peak and mini third peak after that. First time seeing the city at night from the North Peak(1), a view only for those willing to run/hike trails in darkness.
Earlier that day (or perhaps Saturday) the north side of Twin Peaks Boulevard was blocked off to cars with a gate, allowing only foot traffic, and a few intrepid bicyclists who had to swerve around it into the dirt on the side(4).
Started Sunday’s run with an ascent to the top of Buena Vista Park for sunset views filtered through foliage(5,6).
☁️🏙 ~1k' in 3.5 miles. Pretty clouds over the city, during my mid-day run up to and across the Twin Peaks hills and back. As of yesterday closed to car traffic, only saw runners and a few bicylists. The air just keeps getting clearer and clearer.
🌃🏃🏻♂️ Two weeks ago to the hour I was finishing 50 miles in the rain. Indoors all day Saturday, decided it was time for a quick run in the dark on empty streets(2), remembering that #NoFear(1) day & night on the trails. Started sprinkling near the end.
🌌🌧 It was a dark and stormy morning. The start of a long day, too long for one race report post. I got up, put on my running outfit I’d set out the night before (https://tantek.com/t55_3), snacked on a dark chocolate mocha Clif bar, and ran up to the intersection where Cori was coming to pick us up. Stephanie joined minutes later. It was only sprinkling, yet the cold was already biting, despite us wearing all the layers we brought.
Cori picked us up, last two seats in her car, we huddled together for warmth and cracked jokes to lighten the mood and lift our spirits. We arrived at the Rodeo Beach parking lot just before 06:30, already brimming with activity(2 📷 Bryan). We weren’t the only #MarinUltraChallenge runners determined to run our races despite the cancellation. The rain picked up.
I’ve run in the rain before, many years @Nov_Project_SF & a few other cities, and a year ago on my double Tam run. Separately I’ve run in the dark, also at #NPSF, usually early gang, and on so many Tam sunrise runs. This was the first time I’d run in the dark, in the rain, on trails. Carpooling and starting together helped, knowing we’d all be out there facing the elements, finding our way.
After quick bathroom trips we found each other and @BryanTing under a green umbrella(3,4), assembled for a group photo(5 📷 Bryan), unbeknownst to us mere days before social distancing orders would forbid it. We composed ourselves in the now pouring rain, and started our run(6 📷 Bryan) crossing the Rodeo Beach gates(1 📷 Bryan), up the Coastal Trail.
🌸🏙☁️ A week ago today I ran my first 50-miler (https://tantek.com/t55b1), the hardest thing I’ve done. I knew I’d need 2 weeks of physical recovery. It’s also taken a week of mental recovery to start feeling like myself again.
The shelter-in-place and various cancellations have helped in some ways, provided challenges in others. I chose to sit still, breathe, do some yoga, eat deliberately, go for a walk every day, sleep as needed. Show up to commitments, keep in touch with close ones, love within my capacity to do so, toward others within their capacity to receive.
The past few days I’ve gone on easy runs too, culminating today in a run up to Twin Peaks. I stopped for a ground level view, appreciating immediate beauty(photo) before running up and over the peaks and returning back down the hill.
🌧⛰🏃🏻♂️ I did it. 50 miles of #running #MUC50 trails with 11000+ feet of climbing.
🌊🌧⛰🌄⛰⛰⛰🌧⛰🌧⛰🌊 Started on a dark & stormy Saturday morning with @Nov_Project_SF 50k runners at Rodeo Beach, finished with pal @BryanTing on a dark & stormy night, after he crewed me the whole day and ran me in the last rainy mile.
Much harder & longer than expected. Thanks to #NPSF friends that showed up and ran with for several segments, and so much #NovemberProject community support.
#Racekit prepared for #MUC50 race. Yesterday CA governor Newsom banned 250+ people gatherings which forced cancellation of the Marin Ultra Challenge. With training and support of friends, I’m running the 50 mile course anyway. The cancellation email even said: “we encourage you to get outside and run the course as a virtual race”
My #NPSF friends running the 50k course and I will start together and eventually I’ll fork off for the 50 mile course. Approximate schedule if you’d like to come run together for a bit!
06:30 Rodeo Beach start 11:30 Cardiac Hill ~20 miles 12:45 Stinson Beach ~23 miles 14:30 Cardiac Hill ~30 miles 18:00 Muir Beach / Pelican Inn ~41 miles 19:15 Tennessee Valley Parking Lot ~46 miles 20:30 Rodeo Beach finish ~50 miles
Yesterday a quick morning trip up to Twin Peaks, to see clear skies above San Francisco, with a distant fogged in East Bay(1). Just before they closed I bicycled to the DMV to renew my license, very helpful employees, no lines, nearly empty(2).
Drove to Sports Basement to pick up my #MUC50 things, and resupply some Nuun and Picky Bars. Stopped by Crissy field where I finished my last ultra(3), the #ECSCA 50k and half marathon the next day, as a reminder of what I did mere months ago.
🏙🌴 Yesterday’s birthday started in extra darkness, from a combination of Daylight Savings Time and the @Nov_Project_SF early gang start time; the Alta Plaza park steps lit mostly by my headlamp(2). Only near the end of the normal time workout did the sky start to light up, the usual dawn color gradients obscured by clouds, leaving only hints of the beautiful blue yellow orange sky(3).
Even after the workout the sun was nowhere to be seen, only indirectly present through a gradually brightening sky, and a few distant streaks of orange on the horizon(1).
I brought my own lights, a personal tradition when my birthday falls on an #NPSF workout day. Grateful for this community and the friends I’ve made here.
We had breakfast at Jane on Fillmore after, I tried their blueberry creamcheese brioche in addition to my usual egg-white breakfast sandwich with extra cheddar.
Took the day off from work as we are encouraged to do. Spent it mostly quietly, explored the new Devil’s Teeth Bakery which was open til 19:00 yet stopped making breakfast sandwiches at 15:45. Ran a few errands, picking up supplies, tools, and sushi for dinner.
Went home, called my parents, caught up and reflected on many things. Ate some soup and my sushi dinner, social distancing in preparation for my race this weekend.
should check for the presence of any rel=canonical links, and at a minimum verify
that their href attribute is a valid URL,
and provide a link to check that URL for a valid h-entry as well.
More enhancements are possible, however even this kind of minimum syntax check,
and prompting for subsequent h-entry validation would help catch common typo errors.
Separately, if a rel=canonical link is found, and no u-url is found, then see
for the suggestion to use u-url instead or at least first,
before worrying about rel=canonical.
☁️🌴✨ Took my nephew to see #KnivesOut last night at a theater down south just after sunset. We both enjoyed it quite a bit! The dark storm clouds made for colorful sunset views beforehand.
Can you tell we were in a suburban stripmall parking lot?
Framing (and cropping out) can alter perspective & meaning, with photos & words. Is it the donuthole missing from donut you’re looking for? Or an even smaller donuthole missing from a mini-donut inside a donut?
🏙🌳🏃🏻♂️ Missed last Friday hills @Nov_Project_SF, so I ran my own early that evening. Buena Vista Park, Corona Heights Park (photo), Mount Olympus, and back down and around for 5km and 673' climbed. Ominous clouds the whole time, started drizzling as I got home.
🧘🏻♂️ Taper moods are tough. Much less running this week. Some days not at all, like this past Thursday, where I still made it to early morning yoga @YogaFlowSF which helped a bit. Still, I can feel the increased impatience, anxiety, irritability, and others. Doing my best to alternately keep myself busy and sit with / reflect on each emotion, to allow it to process.
W3C TAG Ethical Web Principles
enhancing individual control and power
and recognizes a few misbehaviors, yet focuses on decentralization,
minimizing single points of failure, and enabling individual & DIY developers.
All of that is good, however there is the larger class of “dark pattern” harms to be named and explicitly avoided in specification and technology designs.
The Principles should explicitly note (either adding to or splitting off from
“The web must enhance individuals' control and power”)
the existence of “dark patterns” in web user interfaces (see
WP: Dark pattern
for examples), with a statement similar to countering misinformation like:
We will avoid introducing technologies that create new or disproportionately
enable, benefit, or amplify existing user interface dark patterns,
such as confirmshaming, misdirection, friend spam, permissions pressuring or escalation, threat of data loss etc. We should also avoid new technologies that could be easily abused by existing dark patterns to more easily cause new or worse harms to users. We should design specifications that explicitly plan for and mitigate potential dark pattern abuses.
And cite either or both of those above two references. See also
twitter.com/darkpatterns for many more real world web examples.
We obviously won’t be able to prevent all dark patterns and their harms, but we can at least reduce some of them by calling them out, and avoiding new technologies that would increase the chance of users being harmed by existing and new dark patterns.
Meetable has a nice simple upload UI to add photos to events which works great on mobile. It even has an input field to enter image alt text right below the photo! However the one line input field is often too narrow on mobile displays (e.g. iOS/iPod) for good descriptive alt text.
Instead of a one line input, Meetable should use a multiline (try 3 lines) textarea for easier entry of more descriptive alt text.
Early sunrise @Nov_Project_SF this past Wednesday, the last for a while as we enter Daylight Savings Time this weekend, and next Wednesday will once again start in the dark. I plan to wear my lights :)
The 4th was also my 6th #trackiversary, six years since the first time I went to the informal #NPSF track workout at Kezar Stadium: https://tantek.com/t4Uu2. This past Tuesday I was still recovering from the weekend. Hope to make it back to track next Tuesday!
🗓 Home and realizing it’s March 4th before reflecting and looking forward.
February was focused. Tore down a wall and opened holes to the sky for the next phase of a #transformation. Healed with patience, eventually reached out with peace. Ramped up ultra training. One trip, for IndieWebCamp Austin, where I barely did enough running.
Ended February with a practice trail marathon https://tantek.com/t55N4 to cap the month with more miles and elevation than any other. Started March with my last long run and now tapering for the race.
Restarted yoga and Sutra philosphy classes, worthy challenges in the midst of self-disruption.
This month: More shedding. Taxes. Completing an annual revolution. RealID, though no flights planned. My first 50 miler, on the 14th. Finding it difficult to make plans beyond that.
After Yoga Sutra philosophy class last night I decided to go for a night-time walk on East beach. There were no lights other than the Golden Gate Bridge and a waxing moon. As I walked towards the water, the sound of calmly crashing waves in the dark transported me to a night last year half a world away. While the memory was fond, the sense of her absence was too great. I paused only for a blurry view of the bridge(photo), had to turn around and walk back before falling apart.
This is a feature request to deliberately add a canceled event, i.e. an event that was not previously on Meetable, as a heads-up to folks who may be expecting a regular event and wondering where the information is, or assuming it may still be on at the usual time and place. This is different from
#86 which is about canceling an existing event.
Use-case: In the IndieWeb community we have several regular Homebrew Website Club (HWC) meetups, some every two weeks, some every month like the first Wednesday of the month.
When one of these expectedly periodic events is missing (especially the less frequent ones like first Wednesday of the month, like what just happened with HWC Austin this week), we’re more likely to assume the organizer just forgot to post an official online event, rather than the regular event is not actually happening. Thus we need a way to explicitly create a canceled event when one has not yet been posted.
Editing: have an option to perhaps check when creating an event that this is a "cancelled" event, which means that it will not be accepting RSVPs, perhaps doesn’t need a venue.
Display: Similar to #86, a canceled event should be explicitly flagged as such in any listings, perhaps with a red CANCELLED label. It should also be listed in upcoming and past event listings per its datetime along with other events.
Again similar to #86, optional name prefix: consider prefixing the editable name of the event with the all-caps "CANCELED: " as part of the marked up p-name of the h-event.
It should also be possible to edit and uncancel a canceled event and turn it into a real event in case it turns out to actually be happening, perhaps by another organizer!
RSVP interaction: a canceled event should not accept RSVPs via the user interface, perhaps rejecting federated webmention RSVPs as well.
Meetable events should be editable to explicitly cancel them, yet keep them in the list of events (upcoming or past) so it is clear to folks who may have already RSVPd, or have been sent a link to view them that they were canceled.
Use-case: On the IndieWeb wiki we used to explicitly note on the wiki page for the Homebrew Website Club events for a particular day, if and when a particular city/location was canceled, usually by adding strike-through (s tag) or deletion (del tag) markup. This is particularly useful for when an organizer is unable to make it themselves and can’t be sure that anyone else will either.
Display: A canceled event should be explicitly flagged as such in any listings, perhaps with a red CANCELLED label.
Optional name prefix: consider prefixing the editable name of the event with the all-caps "CANCELED: " as part of the marked up p-name of the h-event.
It should also be possible to edit and uncancel an event in case it was canceled accidentally or errantly by someone.
RSVP interaction: a canceled event should no longer accept RSVPs via the user interface, perhaps rejecting federated webmention RSVPs as well.
A canceled event may send Webmentions back to the federated RSVP posts that it is listing (and or perhaps their author domains), so those posts can be updated, and authors notified.
For Meetable events which have one or more Code of Conduct links
when the user interacts with the RSVP user interface to confirm participation,
Meetable should prompt the user with a dialog with one or more links to Codes of Conduct with checkboxes next to each that acknowledges that the user has read and agreed to them.
A minimum viable user interaction here would be just fine, and there is no need to create a whole ticketing and assignment system where different people would RSVP vs agree to the Code of Conduct link(s).
We can learn from the development, use, and iteration of this minimal user interface to then drive future protocol improvements in federated RSVPs via Webmention.
Typical communty events require agreeing to a Code of Conduct in order to RSVP and participate. Meetable should have a field to enter one or more Code of Conduct URLs, and then show them prominently on the event, preferably right before / next to any user interface to RSVP.
Typical popular events sites and services (Google Calendar, Facebook) prominently show who created and is organizing events, as well as when they were created. Meetable should do this by default, at a minimum using the author’s personal site they used to sign-in via IndieAuth, and the datetime at which they created the event.
The author’s personal site can be
parsed for a representative h-card
to use for their display name and image (h-card name and logo or photo),
though even showing the domain name of the author would be useful (absent an h-card display name or logo/photo).
This would at a minimum be very useful for the events.indieweb.org deployment of Meetable, as that was used to replace use of the wiki for events which had this information implicitly in the browsable edit history.
Who created it use-cases: knowing who created an event helps clarify the potential legitimacy of the event and/or how much help the organizer may need (is it a known organizer of such events, the usual person, or a new person but still known to the community, or a random person who may need help). Additionally, having a clear organizer helps provide at least a default contact for any Code of Conduct follow-ups.
When was it created use-cases: it is useful to know the when created information as a method for if an event was created long in advance and might not still be happening, or if it was created very recently and thus is much more likely to be happening.
This information should be prominently publicly displayed on Meetable event pages.
⛰🏃🏻♂️ 14.4 miles this #SundayRunday for 40+mi/9000' this weekend, and a peak 71+mi/13576' the past 7 days, which feels surreal.
It’s been hard determined work that also depended on encouragement and commitment from friends. Thanks to Erika for encouraging me on last Monday’s half marathon in Austin (after running with the Friday & Saturday before), then pal Hannah for the run (and 7+ miles) on Mt. Tam the day after (where Bryan led me up the Tuesday before!). Rested Wednesday (no NP, had to drive early), and thanks to Brooke for Thursday morning sunrise hill runs.
Last Friday morning I barely made it to @Nov_Project_SF at Yerba Buena, where the community (and a small breakfast after) gave me the energy to run home for another 6. On Saturday, despite starting solo, it was great seeing so many SFRC friends on the trails, and fellow Marin Ultra Challenge racers also practicing parts of the course.
That last run of the month finished up #February with 257km (160 miles) and 8965m (29584') climbed, besting previous monthly running totals in 2019 August of 216km distance and 2018 October 8932m climbing: https://tantek.com/t52L1.
Today’s "day 2" run on tired legs from yesterday’s marathon completed my 50 mile race training cycle. Now tapering for the next 12 days, with many fewer miles.
I started in the late morning, running up Old Springs to Wolf Ridge for a view of Rodeo Valley(2) before running down Coastal trail to the Rodeo Beach parking lot, practicing the last four miles of the #MUC50 race.
Turned around and ran right back up, stopped to admire the surfers(3), and kept going up Hill 88. Ran back down Wolf Ridge and Miwok trails to Rodeo Valley to practice the first four miles of the course. Ran up to SCA, caught the usual view(4), and a new fern(5) before continuing to Alta, then a bit of Bobcat where I stopped to snap a cluster of red flowers(1), before descending Marincello back down to the Tennessee Valley Parking Lot where I’d started.
Felt tired but good. Nothing hurt, just a little sore. 14+ miles done. Time to eat.
⛰🏃🏻♂️ Ran 26.4 miles yesterday, setting a trail marathon PR and completing my last long training run before #MUC50 #trail race on March 14th.
Beautiful day to start, clear views of Tennessee Valley and the ocean(2). Similarly at Pirates Cove(3), and #running up Heather Cut-off’s beautiful switchbacks(4).
I found a pair of #poppies that had opened brightly(5) on the trail up to Cardiac Hill. Quite warm out there in the open(1).
After an adventure running and hiking through a maze of Muir Woods trails (TCC, Bootjack, Ben Johnson, Deer Park Fire Road), I ran up Miwok down Dias Ridge to the Muir Beach turnaround and back into Green Gulch Farm, location of a zen center, and a water tap at the base of a blossoming tree(6).
After running up the Middle Green Gulch trail and up to the day’s last peak on Coyote Ridge, I could finally see Tennessee Valley down below, beckoning(7).
Ran down the last segment of Miwok to the parking lot, then a bit up Old Springs trail and back down to round out my trail marathon.
🌅 Last Thursday morning, a red #sunrise with pal Brooke(1) at Corona Heights Park Summit!
We had chatted the night before @Nov_Project_SF happy hour how it had been a long time since #NPSF went to Corona Heights Park for Friday Hills, so we decided to run meet there that next morning for a sunrise start to our day.
When we got there ~6:30, wisps of pink & orange cotton candy clouds danced on the light blue dawn sky(2). A thick haze above East Bay hills filtered the rising sun, turning it red, and revealing its circular shape, as a half disc(3), eventually as a full circle with a red aura(1), before it rose higher, and shined brighter through the haze, lighting up the bay(4).
Afterwards we ran up to Buena Vista Park and down to Haight street, before running our separate ways to go get ready for work.
🌇 It was a packed week. Last Wednesday I saw the sunrise on the drive down to Mountain View for work meetings, then back to SF for more meetings. Saw the sunset (photo) as I was finally walking to have dinner with a friend in Cole Valley, at which I finally reached out (at her encouragement) to a friend I hadn’t seen in 80 days. Thursday thru today coming up. It’s been a good week.
This is a meta issue following-up from participating in the
AB meeting on Tuesday
with the overall goal of eliminating the role of The Director from
(as an individual, delegated, or renamed) and redistribute authority from The Team in the process to W3C members & community. These changes will likely be incremental, and require additional significant changes (e.g. considering elimination of Formal Objections and their processes instead of
There are several existing issues that cover aspects of this issue.
Here are a few of them:
13.5 miles yesterday morning, Austin’s entire Lady Bird Loop(6) plus a roundtrip to Jo’s(1) and back.
Starting just before sunrise, I snapped some colorful building art(2) on the way to the river/lake. I caught a view of buildings on both sides of the river and a bridge spanning it, reflected in dim dawn light under overcast clouds(3). Barely caught the sun rising between buildings, swans in the foreground, before it disappeared behind clouds(4).
Many things caught my eye, like this almost symmetrical under bridge(5). Caught a better lit shot of the LIVE A GREAT STORY artwork on the MoPac bridge(7). The south bank trails had long stretches of paved paths that wandered just above the river/lake, saw a few birds stretching their wings(8).
Ran around to and crossed over the Longhorn Dam(9) before continuing around back to Congress Avenue, crossing the Congress bridge south to Jo's just for a photo. Ran back to the hotel to quickly get cleaned up, pack, and head to the airport to fly home.
Added a Recent Photos embed to my homepage sidebar (or bottom of the mobile view) at #IndieWebCamp Austin projects day! Still tweaking, yet quite happy with how it looks, e.g. compared to an @Instagram profile. #indieweb #takebackyourweb #ownyourphotos #iOS #Firefox #screenshot
Made it to @Nov_Project_ATX yesterday morning! Ran, worked out, and caught up with pal Holly who I haven’t seen since she moved from SF, and Madison friends Jen and Nicole (who herself also moved to Austin).
Ran back to downtown and the river afterwards, for a calm reflection(2), and sunrise over nearby buildings(3).
@IndieWebCamp Austin, facilitating a session on All Things Photos. E.g. taking photos, curating, editing, posting.
My incremental #indieweb #photo workflow: 📷 take photos in the moment, but not post* 🖼 curate photos, e.g. delete duplicates or non-HDR versions (or keep the non-HDR version if it was sharper, less blurry, or if the HDR versions had weird motion artifacts) ❤️ favorite photos, in the iOS Photos app, that I want to actually consider posting publicly, or perhaps uploading e.g. to a wiki ✍🏻 edit photos, e.g. rotate & crop, especially favorited photos, to align the horizon, crop out extraneous/distracting things, etc. 👇🏻 choose a favorited photo from that day as my main photo to post 📝 write a narrative caption based on that photo 📓 more photos: include more favorited photos if they make sense as part of the narrative, perhaps seek out more (non-favorited) photos to help illustrate the narrative 📮 post that photo or multiphoto post (its own process) ♡ unfavorite the photos I posted, except those I might want to view or show to friends later
I’m looking to simplify my process where I can, as it often takes me up to half an hour to actually get from curating my photos to posting a particular (multi)photo post!
*I don’t post photos in the moment any more in order to stay present in whatever I’m actually doing IRL. Instead at "in between times" like standing in line, or on transit, I take incremental steps towards publishing photos.
#IndieWebCamp Austin keynote by Pace from the future where: - We never build the same thing twice - Nobody gets betrayed - No more sexual predators - No more marketing - No more bad science - No more capitalism & it’s all built on #IndieWeb technologies!
Great first #IndieWebCamp Austin keynote by Natalie on the upsides and downsides of #socialmedia, how she started her #IndieWeb Gratitude Joural @microdotblog, did #DeleteFacebook, yet still posts @Instagram, though with a much more limited circle.
🌆🌴🌙 Distant low clouds and a delayed sunrise @Nov_Project_SF yesterday morning(1). We had a clear view of the crescent moon earlier as dawn blues were turning purple(2). The sun did eventually rise a few minutes later(3), as some of us went to work, others to breakfast.
where GitHubURL is a URL that starts with https://github.com/ ... and ends with a number segment (optional # fragment), just as it currently supports the "github topic: GitHubURL" syntax, because it is easier to remember, and 100% of past uses of "topic: GitHubURL" were clearly intended to do just that, and had to be unnecessarily followed up by a redundant "github topic: GitHubURL" command.
Note that this is a very precise request for what to allow, with the text after "Topic: " immediately being an https://github.com/ URL without anything else preceding, and ending with a URL segment that is a number, to avoid errant use of other GitHub URLs.
Given that level of precision, this reflects existing attempted use in the logs 100%, and is sufficiently guarded against false positives, at least from the past ~4 years of history in the logs.