Tantek Çelik

Inventor, writer, teacher, runner, coder, more.

💬 👏
  1. ↪ In reply to @meyerweb’s tweet @meyerweb even better — perhaps the (subconscious) genius of it! Knowing (feeling?) that undohtml did not meaningfully convey its actual usefulness, then naturally (re)naming even the idea to something shorter, more memorable & easily (re)teachable, thus actually helping more people.

  2. ↪ In reply to @meyerweb’s tweet @meyerweb the latter taught me a lot about the value of better naming.

    * undohtml.css — no one remembers (tantek.com/log/2004/09.html#d06t2354 & your follow-up https://meyerweb.com/eric/thoughts/2004/09/15/emreallyem-undoing-htmlcss/)
    * reset.css — everyone uses (http://meyerweb.com/eric/thoughts/2007/04/18/reset-reasoning/ ~3 years later too!)

    Name things (tools especially) by value/function to the user, rather than literal plumbing functionality.

    Hey at least our permalink slugs have improved. :)

  3. 10 years ago today:

    New Calendar

    A proposal for a new calendar


    Is it too late to fix a Babylonian mistake?


    Tweeted the next day: https://twitter.com/t/status/1125391647

  4. signed up to run the @thesfmarathon second half on 2019-07-28! https://www.thesfmarathon.com/

    Last time I ran the second half of the San Francisco Marathon was in 2015: tantek.com/2015/209/t3/finished-sfmarathon-half-pr

  5. Finished Hot Chocolate 15k #HC15k in 2:05:25. 2 mile warm-up to the start with running pal Michele. We started with a slow run, switched to a run-walk after ~5k, then walked to the finish. Neither of us really trained for the #HotChocolate15k, so we took it easy, kept a conversational pace. Grateful for a beautiful day in the sun, running through the park and along the beach.

    Last year: tantek.com/2018/007/t2/finished-hot-chocolate-15k

  6. a jpg. First #race of 2019. #HotChocolate15k. Not really feeling trained for it, going to run it like a fun run in Golden Gate Park and along the beach. Hope to see some friends out there!

  7. ↪ In reply to @DonMacAskill’s tweet @DonMacAskill I tried it and it worked! Link in January 7th email works: it pre-filled the @Flickr pro discount. Entering FLICKRPRO15 separately also works! Thanks for the quick turnaround! cc: @SmugMug

    P.S. @BrianMatiash I’m flic.kr/tantek :)

  8. likes @DonMacAskill’s tweet

  9. ↪ In reply to @SmugMug’s tweet @SmugMug Also looking forward! Minor nit, seems @Flickr went down last night as payment processed, didn’t complete. Retried FLICKRPRO15, got "Invalid coupon code".
    Email on 7th said: "Use offer code FLICKRPRO15 at checkout. Offer expires January 15, 2019."

    Is that offer still valid? cc: @DonMacAskill

  10. Decided to re-activate my @Flickr Pro.
    New owner @SmugMug has been around for years and is passionate about photos. They’ve responded well to criticisms & suggestions (preserving CC photos). @DonMacAskill did an AMA recently that showed a lot of care and thoughtfulness: https://www.reddit.com/r/photography/comments/a71mh3/hi_my_name_is_don_macaskill_and_im_the_cofounder/

    One example: “We are actively saving accounts for photographers who are no longer with us”.

    Dear @Flickr, here are a few more to save. I lost a good friend last year (flic.kr/cindyli @CindyLi enwp.org/Cindy_Li), another the year before (flic.kr/bmindful @tedr), and another years ago (flic.kr/thebrad). I’m sure there are many more early Flickr users who have since passed away. Please speak-up if you know of any.

    Flickr already has the best API of any photo site, and thus has the best Brid.gy support for IndieWeb sites wanting to syndicate to Flickr, and backfeed responses.

    I have more positive thoughts about @Flickr’s future potential with its new owners, especially with respect to even better IndieWeb integration.  More on that later. For now, see the additional research and links being collected and documented by the IndieWeb Community:


    And if you also decide to upgrade your Flickr account to Pro, there’s a 15% off code (FLICKRPRO15) that’s good until 2019-015.

    Edit: I’m flic.kr/tantek if you want to follow me there.

  11. New issue on GitHub project “bridgy”

    Bridgy publish should support POSSEing tag reply to Flickr

    Similar to https://github.com/snarfed/bridgy/issues/786 (but broader for any tag reply, and for Flickr instead of Facebook):

    This is a feature request for POSSEing tag reply posts to Flickr.

    I.e. if I post a tag reply on my own site, like documented here:


    where one (or more) of the reply-to URLs is to a Flickr permalink post (likely others's photos, but could be my own that I'm adding tags to after I published it), Bridgy Publish (of my tag reply) should propagate that tag reply to that Flickr permalink.

    This is the publish equivalent of the following backfeed features, and may be easier to start with (consider implementing publish before implementing backfeed for equivalent interaction)

    Labels: publish

  12. Homebrew Website Club SF!

    When: Where: Mozilla San Francisco Host: Tantek Çelik

    17:30: Optional writing hour and quiet socializing
    18:30: IndieWeb demos and hack night!

    Homebrew Website Club retro 1980s-style logo

    Topics for this week:

    • First Homebrew Website Club meetup of 2019!
    • Year-end hack projects
    • 2018 IndieWeb Challenge completed!
    • Flickr with new owner — aligning with IndieWeb principles?
    • Demos of personal website breakthroughs
    • Create or update your personal web site!

    Join a community with like-minded interests. Bring friends that want a personal site, or are interested in a healthy, independent web!

    Any questions? Ask in #indieweb Slack or IRC

    More information: IndieWeb Wiki Event Page

    RSVP: post an indie RSVP on your own site!

  13. a jpg. a jpg. a jpg. a jpg. a jpg. a jpg. a jpg. a jpg. a jpg. a jpg. December 1st (5 weeks ago today), I baked my first pie (1) and got 2nd best sweet pie in a friendly bake-off!

    Using an apple pie recipe from the web, I peeled & chopped apples(3), squeezed a lemon & added flour, sugar, cinnamon(4), and mixed it(5). Buttered & pressed dough into a pie plate(6), filled and dotted it with butter(7). Covered & cut slits(8), glazed(9), and baked it(10).

    I placed the still hot pie on a cork trivet, slid it carefully into a sideways brown paper bag, and let it cool en route to the bake-off. Cut slices, still warm, and shared.

    (2) Actually used only six apples and one lemon.

    #2018_335 #pie #firstpie #applepie #imadethis #homecooking #homebaked #baked #latergram #nofilter

  14. Created #indieweb wiki page: https://indieweb.org/monthly_recap

    Noticed @SwarmApp’s monthly recap today. It looked like a nice feature we could have on our own websites, documented it, and @cleverdevil quickly prototyped it on his own site!

    Seen monthly recaps on any other sites? Please contribute!

  15. a jpg. a jpg. 🌴🌇🌘 dark clear & cold (42F) #predawn skies after #NPSF. Always impressed with the 05:30 crew (was a few min late) and especially grateful to Ali for leading all three workouts. 2nd 📷 in-between early/abs and 06:30 workouts. #wakeupthesun #fromwhereIrun #run #runner #runners #NovemberProject #earlygang #doublegang #dawn #sunrise #SanFrancisco #SF #palmtree #skyline #nofilter

  16. a jpg. a jpg. a jpg. a jpg. 🌳🌧🌊 December 1st, 24hrs later. It’s not always sunshine & rainbows, sometimes it’s rain & puddles. A week after 55k, stretched my legs at #SFRC to Tennessee beach & back. Grateful for a wet yet smooth 7.6 miles and a few segment PRs.

    #trailtuesdaythrowback #2018_335 #cloudy #rainy #puddles #Marin #TennesseeValley #TennesseeCove #TennesseeBeach #trail #trailrun #run #weatherproof #Pacific #Ocean #surf #sand #latergram #nofilter

  17. a jpg. a jpg. a jpg. 🌇 November 30th, six days after I ran 55k*, waking up with #NPSF Friday hills at the 22nd Street Jungle Stairs to cotton candy skies on fire.
    That evening, a seagull friend on the ledge at dusk, disappearing sunset beams glistening off East Bay windows and distant tops of Bay Bridge towers.
    Lastly, the N Judah MUNI rush hour commute home, passengers losing it, running into an assertive woman asking everyone to squeeze in to make more room, who turned out to be my friend Stephanie.

    #2018_334 #sunrise #sunset #seagull #baybridge #MUNI #NJudah #sanfranciso #sf #latergram #nofilter

    * http://tantek.com/2018/329/t1/ultramarathoner

  18. a jpg. Hello 2019. #Gregorian #month #January #LEGO #calendar

  19. a jpg. a jpg. Goodnight 2018. Many ups and many unexpected downs. New highs despite unexpected battles and losses. Still, finishing the year stronger, fitter, more understanding, more at peace. Appropriate to wake up this 365th day before dawn, work out til sunrise with #NPSF friends, pack in a full day, then drive off into the sunset.

  20. ↪ In reply to a comment on issue 2 of GitHub project “microformats2-parsing” Resolution: issue 2 proposal accepted.

    No objections in above discussion, and positive opinions (👍) from a few implementors on the proposal. Proposal text incorporated into spec and reviewed.

    Proposal implementation in mf2py parser, test cases provided, and Brid.gy verification that mf2py implementation satisfies use-case for the issue is sufficient to demonstrate implementability and utility, all as noted/linked in issue thread.

    Edited specification accordingly. Thanks everyone for all the hard work on this one! Took a while but I think it was worth it to get it just right.

  21. #microformats2 parsing spec updated: http://microformats.org/wiki/index.php?title=microformats2-parsing&diff=66969&oldid=66967
    * always parse alt with img src for accessibility info by default https://github.com/microformats/microformats2-parsing/issues/2
    Implemented in current version of:
    * mf2py - behind flag, in use by Brid.gy
    This is a pretty big change, likely to require updates to parsers and calling code, however, the better access to accessibility info on img elements by default is a big improvement for all.

  22. 💻 watched Terminator Salvation (2009) @Netflix https://en.wikipedia.org/wiki/Terminator_Salvation last night.

    This fourth in the original Terminator series of movies was better than expected. Felt plausibly dystopian, perhaps because it takes (took?) place in the year 2018. #2018_364

  23. December was too busy to post. A few days:
     1 7.6mi rainy trail run(tantek.com/t4yH3); baked my first (apple) pie(tantek.com/t4yM1)
     3 returned to Orlando 3 yrs later, differently optimistic, packed lighter
     9 first Sunday SFRC trail run
    10 reframed W3C "agenda bashing" to "agenda gardening"
    11 completed 2nd 8-week yoga philosophy study course
    15 XFN 15th anniversary, rel=me keeps growing (Mastodon etc.)
    16 baked my first triple chocolate chip cookies
    18 back to Tuesday track
    21 misty Dipsea trail run to Cardiac and back
    25 baked my first gluten free pie (also apple)
    26 did double-NPSF workout

    Individual posts (most with photos) when time permits.

  24. TODAY: Donate, and renew arts & science memberships:
    @ACLU 2x
    @PPact 3x
    @InternetArchive 2x

    Donate/renew NOW for 2018+2019 for 2-3x match and keep funding science ! Why:

    Why you must act TODAY (everyone)

    Several of the above charitable organizations have matching donations that will increase your donation 2-3x IF you donate by end of day TODAY 2018-12-31 US Timezones.

    See the 2x/3x next to the @-names for which organizations and how much.

    Why you must act TODAY (US friends)

    It’s the last day of 2018. By donating today, you may be able to itemize your donations and deduct them from your 2018 Federal taxes (IANAA, talk to your accountant regarding itemizing vs using the standard deduction).

    You can donate to all of these organizations online and get an email receipt in minutes (I confirmed this by donating/renewing all the above personally).

    See each Twitter profile above for their site/donation URLs.

    **Disclosure: I work for @Mozilla, on & with open web standards & communities @indiewebcamp @microformats @W3C @WHATWG supported by @Firefox to provide a more human-centric, private, and secure web for all users. #fightfortheuser

    Previously: tantek.com/2017/365/t1/today-donate-renew-arts-science

  25. Donated 8 large canvas bags worth of stuff (64 pounds) to Goodwill. Literal weight metaphorically lifted off my shoulders.

  26. When posting positive things promptly*, I think it first makes sense to post positive things from that day (for reason 6**), and then from previous days (that week, or month), in pure date-time order (oldest to newest), regardless of subject (topic) or type of post (e.g. text note vs. photo).

    Subject-focused or clustered may make it easier to think/write about all posts for one topic at once (less context switching). However sometimes you don’t know the subject(s) of a post until you’ve actually written it, which means you have to finish at least drafts for posts before you can actually successfully categorize and cluster them, which seems like a lot more work (finishing all drafts before posting one) than just finishing/publishing one post at a time.

    Using the date-time (of when that positive thing happened that you’re posting about), has the following advantages over clustering by subject:

    * easier to get started: because "date" has an objective (don’t need to think about it) absolute answer that makes it easy to sort your drafts and just start posting them in date order (oldest first within some reasonable timeframe like, in the past week, or in the past month).

    * easier to post incrementally, and pause / resume posting: since your "index" is linear (time), you can choose a date / point in time to pause, and later pick-up at whatever date you left-off, no need to think about what subjects did you already posted and what subjects are remaining.

    Another consideration for publishing older posts is whether to post different types of posts before others, like text notes vs. photos vs. longer blog posts, or just interleave different post types all by date.

    If one type of content had a particular workflow, like editing photos, it could make sense to cluster publishing those. However even photos have captions to write which are similar enough to text notes. Blog posts often open with a featured photo. It almost seems like more work to try to distinguish different types (as an author), than just post in date order, and add aspects to the content, text, photo(s), as they make sense for the post. Publishing them all in date-time order seems the simplest approach.

    * tantek.com/2018/357/t3/five-reasons-post-positive-things-promptly
    * tantek.com/2018/364/t1/sixth-reason-post-positive-things-promptly

  27. #microformats2 parsing spec updated: http://microformats.org/wiki/index.php?title=microformats2-parsing&diff=66967&oldid=66965
    * parse HTML id attribute per https://github.com/microformats/microformats2-parsing/issues/44
    Implemented in current versions of parsers:
    * phpmf2
    * mf2py

  28. ↪ In reply to a comment on issue 44 of GitHub project “microformats2-parsing” Resolution: proposal accepted.

    No objections in above discussion, and positive opinions (👍) from a few implementors on the proposal.

    Proposal implementations in mf2py and phpmf2 parsers, and https://github.com/dshanske verification that phpmf2 implementation satisfies use-case for the issue is sufficient to demonstrate implementability and utility, all as noted/linked in issue thread.

    Editing specification accordingly.

  29. ↪ In reply to a comment on issue 2 of GitHub project “microformats2-parsing” I’ve incorporated the proposed issue 2 spec changes (see diff: http://microformats.org/wiki/index.php?title=microformats2-parsing&diff=66965&oldid=66956), please review "PROPOSED" text in:
    * http://microformats.org/wiki/microformats2-parsing#parsing_a_u-_property
    * http://microformats.org/wiki/microformats2-parsing#parsing_for_implied_properties
    * http://microformats.org/wiki/microformats2-parsing#parse_an_img_element_for_src_and_alt

  30. ↪ In reply to tantek.com’s post Sixth Reason To Post Positive Things Promptly

    6. Post about something positive the same day it happens so it will show up automatically in future "On This Day" reminder posts. https://indieweb.org/on_this_day

    Previously: tantek.com/2018/357/t3/five-reasons-post-positive-things-promptly

  31. 👍 to a comment on issue 44 of GitHub project “microformats2-parsing”

  32. ↪ In reply to tantek.com’s post Apologies for the late notice, cancelling Homebrew Website Club SF tonight.

    Not feeling 100%, and checked with Jacky to see if we could do a virtual one on Mumble so we’re going to try that.

    See https://chat.indieweb.org/ for more or to join virtually!

  33. ↪ In reply to @Nov_Project_SF’s tweet Good times this morning guest co-leading the Monday morning #NPSF workout with pal Dena in the Santa suit here: https://www.instagram.com/p/BrxxqAdB4-v/

    Previously: 2017-149 @Nov_Project_SF https://november-project.com/buck-plz/

  34. ↪ In reply to @abritinthebay’s tweet @abritinthebay there are a couple of open source Javascript #microformats2 parsers:

    Try them out and definitely file any issues you find, and/or join us in discussion: http://microformats.org/wiki/discuss

  35. #microformats2 parsing spec updated: http://microformats.org/wiki/index.php?title=microformats2-parsing&diff=66956&oldid=66955
    * u- parsing should always do relative URL resolution per https://github.com/microformats/microformats2-parsing/issues/10
    Implemented in current versions of parsers:
    * phpmf2
    * mf2py
    * microformats go

  36. ↪ In reply to a comment on issue 10 of GitHub project “microformats2-parsing” Resolution: proposal accepted.

    No objections in above discussion, and positive opinions (👍) from several implementors on the proposal.

    Proposal implementations in mf2py and microformats go parsers is sufficient to demonstrate implementability and interoperability (with updated tests cases), all as noted/linked in issue thread.

    Editing specification accordingly.

  37. #microformats2 parsing spec updated: http://microformats.org/wiki/index.php?title=microformats2-parsing&diff=66955&oldid=66898&rcid=103842
    * implied photo property restricted similar to implied url property per https://github.com/microformats/microformats2-parsing/issues/21
    * mf2py (current version)
    * phpmf2 patch pending: https://github.com/microformats/php-mf2/pull/210

  38. ↪ In reply to a comment on issue 21 of GitHub project “microformats2-parsing” Resolution: proposal accepted.

    No objections in above discussion, and positive opinions (👍) from three implementors on the proposal.

    Proposal implementation in mf2py per https://github.com/microformats/mf2py/issues/135 is sufficient to demonstrate implementability.

    Editing specification accordingly.

  39. Cancelled: Homebrew Website Club SF!

    ⚠️ This event was cancelled

    When: Where: Mozilla San Francisco Hosts: Tantek Çelik, Jacky Alcine

    17:30: Optional writing hour and quiet socializing
    18:30: IndieWeb demos and hack night!

    Homebrew Website Club retro 1980s-style logo

    Topics for this week:

    Join a community with like-minded interests. Bring friends that want a personal site, or are interested in a healthy, independent web!

    Any questions? Ask in #indieweb Slack or IRC

    More information: IndieWeb Wiki Event Page

    RSVP: post an indie RSVP on your own site!

  40. ↪ In reply to issue 13 of GitHub project “h-entry” This is a misintepretation of the backcompat portion of the spec.

    Everything in the compat rules means “look for”.

    In this case, “author - including compat root vcard in the absence of h-card” means to look for an “author” class name, *including* looking for a “vcard” class name on the same element, only if there is no “h-card” class name on the same element.

    Thus yes, according to the spec, the code snippet:

    <span class="author">Tom Morris</span>

    Inside an hentry as noted above must be treated like:

    <span class="p-author">Tom Morris</span>

    And thus in the parsed JSON it becomes a simple "author": ["Tom Morris"] as noted as a “preferable result”.

    If you can suggest wording that would help clarify this in the spec, I would be happy to make an editorial change to make this more explicitly clear (as well as similar for h-event location).

  41. Five Reasons To Post Positive Things Promptly

    1. Stronger reinforcement of positive behaviors. The sooner you post about having finished something positive, the stronger such a positive self-affirmation will reinforce that positive action or habit.

    2. Use recency bias for good. Part of recency bias is treating things that happened more recently as more important than things that happened less recently. Thus by promptly (rather than later) posting about a positive thing, it’s seen as more important than if you wait to post about it.

    3. Make positive waves sooner. The sooner you post something positive, especially about something positive, the sooner others may see and be inspired by your example to say and do positive things, inspire others, in a likely compounding domino effect of positivity.

    4. Beat future negativity. By publishing sooner and getting your positive post out there, you may be doing so before something bad happens in the future that you may have to deal with instead.

    5. Details are better sooner. The sooner you can post about positive things that you personally observed or especially participated in (actions, events, accomplishments), the more details you will remember, and the more you reinforce your own short-term (then longterm) memory of the thing! Since that value decreases as the time since the thing happened increases, post the about the most recent thing first to get the details down, the the next most recent thing etc.

    (more promptly posted as a note, perhaps worth expanding into an article with citations)

  42. Last year I completed 100 Days of Positive Posts #100DoPP.^1
    This year I started 100 Days of Positive Doing Posting Days #100PDPD and stopped after 8 days.^2
    Missing from both of those was why. Why post positive things?
    Why may be insufficient to motivate, which implies a drive to action.
    More motivating: why post positive things promptly?

    ^1 https://indieweb.org/100DaysOfIndieWeb#100_Days_of_Positive_Posts
    ^2 https://indieweb.org/100DaysOfIndieWeb#100_Days_of_Positive_Doing_Posting_Days