Tantek Çelik

Independent technologist, writer, teacher

  1. A week ago I woke up at ~6:15 in Big Basin to @LaurBreu shouting “Time to get up for morning run!”. It was significantly colder than any recent morning in San Francisco. I put on three layers and joined about a half dozen other fellow #NPSF campers; I think we finally got going about 6:45. When I returned to camp I had completed my longest trail run to date, most of it solo. https://instagram.com/p/0Nm00jA9XW/ a photo We ran down to the park headquarters, checked out the trail options, and quickly decided on Berry Creek Falls, whick seemed about 4.5 miles away. There was a brief debate about whether to do a full 9 mile loop or run back after a halfway point. Everyone started down the trail at a fast clip. In less than half a mile I had lost sight of them. After about a mile, I saw one friend come back, she'd noted beforehand that she had to cut short for another engagement. Not long after I saw another friend walking back, apparently haven't twisted her ankle running. After that I didn’t see anyone else on the trail. I kept running, stopping a few times to take photos. After making it about 3/4 of the way to Berry Creek Falls, I kept expecting to see the rest of the group running back. With just 1 mile to go I decided to keep going all the way to the falls. Made it to a bench with a beautiful view of the falls, yet it looked like I could get closer. The trail meandered downhill closer to the creek eventually to a large fallen tree. To my right was a large boulder embedded in the ground that looked too slippery to descend down to the flowing water. I crossed the creek with the fallen tree as bridge. On the other side I had to jump down to another fallen tree, then down to the creekbank where the path continued back towards the falls. Hiking up I finally got close enough for a better view. At this point I had no idea where everyone else had gone. Last I had heard the plan was to run to the falls and run back. Since I was on my own, and after all the wandering about 5 miles away from the park headquarters, I decided the best option was to run back the way I came. I ran back to the fallen tree. But this time I crossed the rocks in the stream to the large boulder on the other side. At about a 60 degree incline, the boulder had with plenty of ridges to grab, and chips to dig my feet into, I climbed up on top without difficulty. On the run back the layers came off until I was running in a tshirt and sweatpants, the rest tied around my waist. I’d never run this far by myself, in a new place, miles away from help or other resources. No headphones, no network contact. A lot of time to just think, run, and focus. Focus on running, on keeping a good pace, and regular breathing. It was good to see landmarks that I had passed on the way in. I’d counted three trail markers, and as I passed each one on the way back I sipped just that much from the remaining water bottle strapped to my waist. About halfway back I finally started to see people coming the other way. Hikers. With jackets, backpacks, and hats. As we exchanged good mornings and they stopped to stand back as I ran by, I couldn't help but think, I used to be you, now I'm this. I reached the trail head at park headquarters, checked a map for the road back to the camp, and ran uphill the rest of the way. The trail was estimated to take ~6 hours. I ran ~11 miles from camp to the waterfall and back in under 2.5 hours. At some point in the last few months apparently I changed from a hiker to a trail runner. It felt more comfortable, and was more fun, to run the trail than walk it.

    on
  2. “amplifications of lesser heard voices are vital to a free society.” — @acegiak #indiewebcamp. Continued: “Solidarity with minorities you're not a part of prevents authorities from dividing people and conquering” http://indiewebcamp.com/irc/2015-03-11/line/1426064607414

    on
  3. Made it once more around the sun.

    on
  4. New @CSS3UI WD published w3.org/TR/2015/WD-css3-ui-20150310 All but 1 issue resolved. Fewer features too, consistent with: http://tantek.com/2015/068/b1/security-towards-minimum-viable-web-platform

    on
  5. js;dr = JavaScript required; Didn’t Read. Pages that are empty without JS: dead to history (archive-org), unreliable for search results (despite any search engine claims of JS support, check it yourself), and thus ignorable. No need to waste time reading or responding. Also known as, if it’s not curlable, it’s not on the web. https://indiewebcamp.com/curlable Because in 10 years nothing you built today that depends on JS for the content will be available, visible, or archived anywhere on the web. All your fancy front-end-JS-required frameworks are dead to history, a mere evolutionary blip in web app development practices. Perhaps they provided interesting ephemeral prototypes, nothing more. Previously: * pdf;dr: tantek.com/2013/305/t2/pdf-dr-avoid-clicking-link-pdf Related: * tos;dr: tosdr.org See Also: * htmlcssjavascript.com/web/youre-so-smart-you-turned-javascript-into-xhtml/ * https://sourcegraph.com/blog/switching-from-angularjs-to-server-side-html * https://adactio.com/journal/7706

    on
  6. Simplifying Standards & Reducing Their Security Surface: Towards A Minimum Viable Web Platform

    At the start of this month, I posted a simple note and question:

    Thoughts yesterday lunch w @bcrypt: @W3C specs too big/complex. How do we simplify WebAPIs to reduce security surface?

    With follow-up:

    And @W3C needs a Security (#s6y) group that reviews all specs, like #i18n & #a11y (WAI) groups do. cc: @bcrypt @W3CAB

    Which kicked off quite a conversation on Twitter (18 replies shown on load, 53 more dynamically upon scrolling if various scripts are able to load & execute).

    Security & Privacy Reviews

    Buried among those replies was one particularly constructive, if understated, reply from Mike West:

    […] mikewest.github.io/spec-questionnaire/security-privacy/ is an initial strawman for security/privacy self-review.

    A good set of questions (even if incomplete) to answer in a self-review of a specification is an excellent start towards building a culture of reviewing security & privacy features of web standards.

    While self-reviews are a good start, and will hopefully catch (or indicate the unsureness about) some security and/or privacy issues, I do still think we need a security group, made up of those more experienced in web security and privacy concerns, to review all specifications before they advance to being standards.

    Such expert reviews could also be done continuously for "living" specifications, where a security review of a specification could be published as of a certain revision (snapshot) of a living specification, which then hopefully could be incrementally updated along with updates to the spec itself.

    Specification Section for Security & Privacy Considerations

    In follow-up email Mike asked for feedback on specifics regarding the questionnaire which I provided as a braindump email reply, and offered to also submit as a pull request as well. After checking with Yan, who was also on the email, I decided to go ahead and do so. After non-trivially expanding a section, very likely beyond its original intent and scope (meta-ironically so), it seemed more appropriate to at least blog it in addition to a pull request.

    The last question of the questionnaire asks:

    Does this specification have a "Security Considerations" and "Privacy Considerations" section?

    Rather than the brief two sentence paragraph starting with Not every feature has security or privacy impacts, which I think deserves a better reframing, I've submitted the below replacement text (after the heading) as a pull request.

    Reducing Security Surface Towards Minimum Viability

    Unless proven otherwise, every feature has potential security and/or privacy impacts.

    Documenting the various concerns that have cropped up in one form or another is a good way to help implementers and authors understand the risks that a feature presents, and ensure that adequate mitigations are in place.

    If it seems like a feature does not have security or privacy impacts, then say so inline in the spec section for that feature:

    There are no known security or privacy impacts of this feature.

    Saying so explicitly in the specification serves several purposes:

    1. Shows that a spec author/editor has possibly considered (hopefully not just copy/pasted) whether there are such impacts.
    2. Provides some sense of confidence that there are no such impacts.
    3. Challenges security and privacy minded individuals to think of and find even the potential for such impacts.
    4. Demonstrates the spec author/editor's receptivity to feedback about such impacts.

    The easiest way to mitigate potential negative security or privacy impacts of a feature, and even discussing the possibility, is to drop the feature.

    Every feature in a spec should be considered guilty (of harming security and/or privacy) until proven otherwise. Every specification should seek to be as small as possible, even if only for the reasons of reducing and minimizing security/privacy attack surface(s).

    By doing so we can reduce the overall security (and privacy) attack surface of not only a particular feature, but of a module (related set of features), a specification, and the overall web platform. Ideally this is one of many motivations to reduce each of those to the minimum viable:

    1. Minimum viable feature: cut/drop values, options, or optional aspects.
    2. Minimum viable web format/protocol/API: cut/drop a module, or even just one feature.
    3. Minimum viable web platform: Cut/drop/obsolete entire specification(s).

    Questions and Challenges

    The above text expresses a specific opinion and perspective about not only web security, web standards, but goals and ideals for the web platform as whole. In some ways it raises more questions than answers.

    How do you determine minimum viability?

    How do you incentivize (beyond security & privacy) the simplification and minimizing of web platform features?

    How do we confront the various counter-incentives?

    Or rather:

    How do we document and cope with the numerous incentives for complexity and obfuscation that come from so many sources (some mentioned in that Twitter thread) that seem in total insurmountable?

    No easy answers here. Perhaps material for more posts on the subject.

    Thanks to Yan for reviewing drafts of this post.

    on
  7. Camped this weekend. 48 hrs 100% off grid. Only device usage: * took a few photos & notes * tracked ~11 mile trail run

    on
  8. Known Pro is here! https://withknown.com/pro/ Congrats @benwerd @erinjo! #indieweb @Withknown’s superior interoperability, mobile web support, user experience, and integration with existing silos, is far beyond any other content publishing system, independent or otherwise in existence. And it’s open source as well. http://stream.withknown.com/2015/introducing-known-pro-the-best-way-to-reach-your-audience

    on
  9. going to @IndieWebCamp Cambridge @MIT 2015-03-19..20! indie event: aaronparecki.com/events/2015/03/19/1/indiewebcamp silo: fb.com/events/437461433068146/

    on
  10. going to @W3C Social Web WG meeting @MIT 2015-03-17..18 indie event aaronparecki.com/events/2015/03/17/1/socialwg-2015 silo fb.com/events/444025702419735/

    on
  11. @todrobbins @andyet big fan of talky.io, using it @indiewebcamp @W3C Social Web mtgs. Telecons still need POTS-compat.

    on
  12. @tylergillies @Google Hangouts iOS app touch-tones started working again today = participated in @W3C @CSSWG telecon.

    on
  13. Finished @CSS3UI edits for all (but one) open resolved and minor issues, and have requested that WG / @W3C publish it as a TR Working Draft: http://dev.w3.org/csswg/css-ui-3/

    on
  14. Things that broke so far today * @Google Hangouts iOS app touch-tones = no joining W3C telcon * refrigerator (at home)

    on
  15. ran Trackish Tuesday before dawn: 3x600 2x200 600 400 200 600 2x200 Then saw the sunrise. Going to need that today.

    on
  16. @indiewebcamp @kylewm2 I'll be there early 17:00-19:00 for quiet writing and open discussions. Have to leave early.

    on
  17. going to Homebrew Website Club @TheCreamerySF March 11, but only for 17:00-19:00. Indie event: werd.io/2015/homebrew-website-club-march-11-2015 silo: fb.com/events/1605342076364274

    on
  18. Ghosts in the machine: open tabs and auto-completed-from-history posts from deceased friends. Considering creating or adding to memorial pages for them in the communities we knew each other in, beyond just citing their work. Seems about all we can do sometimes, remember them for their good work, and their positive contributions.

    on
  19. @mikewest good start on #security and #privacy questions. Do you have sample answers e.g. for existing WebAPI CR(s)?

    on
  20. likes @robinberjon’s tweet at , @mikewest’s tweet at , @bcrypt’s tweet at , and @mnot’s tweet at .

    on
  21. @fugueish @xkit I fear/suspect that. Paytoplay + academic + enterprise + committee design at odds with min viable APIs

    on
  22. likes @fugueish’s tweet at , @xkit’s tweet at , @bcrypt’s tweet at , @jyasskin’s tweet at , @mnot’s tweet at , @bcrypt’s tweet at , and @aardrian’s tweet at .

    on
  23. Does it matter that @Google is asking for exclusive internal use of .dev, and silo-izing .blog? http://sealedabstract.com/rants/google-our-patron-saint-of-the-closed-web/

    on
  24. likes @npdoty’s tweet.

    on
  25. And @W3C needs a Security (#s6y) group that reviews all specs, like #i18n & #a11y (WAI) groups do. cc: @bcrypt @W3CAB

    on
  26. Thoughts yesterday lunch w @bcrypt: @W3C specs too big/complex. How do we simplify WebAPIs to reduce security surface?

    on
  27. likes kylewm.com’s post.

    on
  28. @awoods @kylewm2 your bio says WordPress & your site too. #indieweb is about empowering how you already work: http://indiewebcamp.com/WordPress As @kylewm2 said, up to you. We do have plenty very friendly WordPress folks who are happy to help out - stop by our IRC channel if you get a chance: irc://irc.freenode.net/indiewebcamp Realtime archive: indiewebcamp.com/irc/today

    on
  29. @mnot @bcrypt always keep your independence close to heart & mind. ABC: Always be creating on/for your #indieweb site.

    on
  30. likes @mnot’s tweet at and @bcrypt’s tweet at .

    on
  31. Ran 3x up Hayes hill (Laguna>Pierce) this morning in 30 minutes. 11 weeks til we #raceb2b. #b2b2015 #hillsforbreakfast

    on
  32. likes @aaronpk’s tweet at and tweet at .

    on
  33. @badosa *just* saw my typo. Apologies & thank you for the correction! Fixed on my site at least http://tantek.com/2015/055/t1/two-more-indiewebcamp-translations

    on
  34. @kylewm2 hence I replied to the source for context. The brackets […] indicate removal from a quote. More: https://en.wikipedia.org/wiki/Ellipsis Specifically: “If an ellipsis is meant to represent an omission, square brackets must surround the ellipsis to make it clear that there was no pause in the original quote: [ . . . ]. Currently, the MLA has removed the requirement of brackets in its style handbooks. However, some maintain that the use of brackets is still correct because it clears confusion.” Since we often use ellipses to truncate POSSE tweets, it’s better to always use […] when elliding inside a quote, to disambiguate that the ellipsis was not in the original. And square brackets are also the convention for indicating quoter edits to the content of a quotation, such as insertion of implied words, substitutions for pronouns etc.

    on
  35. “dropped my RSS […] to simplify my site’s code. I don’t want to maintain all these sidefiles.” — @kartik_prabhu

    on
  36. #IndieWeb: Homebrew Website Club 2015-02-25 Summary

    2015-02-25 Homebrew Website Club participants, seven of them, sit in two rows for a photograph

    At last night's Homebrew Website Club we discussed, shared experiences, and how-tos about realtime indie readers, changing/choosing your webhost, indie RSVPs, moving from Blogger/Tumblr to your own site, new IndieWebCamp Slack channel, and ifthisthen.cat.

    See kevinmarks.com/hwc2015-02-25.html for the writeup.

    on
  37. @rachelnabors right-click works fine on that image in Firefox 37. Perhaps file a bug/feature request for your browser?

    on
  38. @rachelnabors I remember that. Experiments are good. Better techniques now, e.g. http://tantek.com/2013/149/b1/bayesian More: http://cookiecrook.com/longdesc/

    on
  39. Disappointed in @W3C for Recommending Longdesc

    W3C has advanced the longdesc attribute to a Recommendation, overruling objections from browser makers.

    Not a single browser vendor supported advancing this specification to recommendation.

    Apple formally objected when it was a Candidate Recommendation and provided lengthy research and documentation (better than anyone has before or since) on why longdesc is bad technology (in practice has not and does not solve the problems it claims to).

    Mozilla formally objected when it was a Proposed Recommendation, agreeing with Apple’s research and reasoning.

    Both formal objections were overruled.

    For all the detailed reasons noted in Apple’s formal objection, I also recommend avoid using longdesc, and instead:

    • Always provide good alt (text alternative) attributes for images, that read well inline if and when the image does not load. Or if there’s no semantic loss without the image, use an empty alt="".
    • For particularly rich or complex images, either provide longer descriptions of images in normal visible markup, or linked from a image caption or other visible affordance. See accessibility expert James Craig’s excellent Longdesc alternatives in HTML5 resource for even more and better techniques.

    Perhaps the real tragedy is that many years have been wasted on a broken technology that could have been spent on actually improving accessibility of open web technologies. Not to mention the harrassment that’s occurred in the name of longdesc.

    Sometimes web standards go wrong. This is one of those times.

    on
  40. likes @kevinmarks’s tweet at and @Kbabula’s tweet at .

    on
  41. going to Homebrew Website Club 17:30 @MozSF 2015-02-25. Indie event kylewm.com/2015/02/homebrew-website-club-2015-february-25 silo fb.com/events/1579077165643006

    on
  42. @fbonacci no, no joker. Normally that would be a lap or stadium stairs, but not with today’s legs.

    on
  43. This morning: legs too tired to sprint, did a deck instead. 33 cards of ♣ leglift ♦ sideplank ♥ pushup ♠ sergeant lunge 2-10 J=11 Q=12 K=13 A=14 For the sideplank and lunges, I did the count from the card on both sides/legs. Took a photo with the rest of the Trackish Tuesday crew and then watched the sunrise in Golden Gate Park afterwards on my way home. https://instagram.com/p/zfSACaA9b7 a photo

    on
  44. New @W3C TR snapshot of @CSS3UI published. Focus on implemented features, most issues resolved: http://www.w3.org/TR/2015/WD-css3-ui-20150224/

    on
  45. likes @kevinmarks’s tweet at , @garethjordan’s tweet at , @adrianshort’s tweet at , @adactio’s tweet at , @badosa’s tweet at , @krisshaffer’s tweet at , and @slamteacher’s tweet at .

    on
  46. @davewiner you're using Twitter. @benwerd & I use our indieweb sites for all notes & replies, copied to feeds+Twitter

    on
  47. likes @benwerd’s tweet at , tweet at , tweet at , tweet at , @gRegorLove’s tweet at , @davidmead’s tweet at , and @benwerd’s tweet at .

    on
  48. @benwerd @davewiner indeed. And hence “diversity of approaches & implementations” principle: indiewebcamp.com/principles#Plurality

    on
  49. @davewiner disagree. critiques of tech “XML is fragile” useful, of people/groups “problem with the IndieWeb guys” not

    on
  50. 2 more IndieWebCamp translations started Spanish indiewebcamp.com/Main_Page-es Catalan indiewebcamp.com/Main_Page-ca Thanks @badosa!

    on
  51. November Project Book Survey Answers #NP_Book

    The November Project recently wrapped up a survey for a book project. I had the tab open and finally submitted my answers, but figured why not post them on my own site as well. Some of this I've blogged about before, some of it is new.

    The basics

    Tribe Location
    San Francisco
    Member Name
    Tantek Çelik
    Date of Birth
    March 11th
    Profession
    Internet
    Date and Location of First NP Workout
    2013-10-30 Alamo Square, San Francisco, CA, USA
    Contact Info
    tantek.com

    Pre-NP fitness

    Describe your pre-NP fitness background and routine.

    • 2011 started mixed running/jogging/walking every week, short distances 0.5-3 miles.
    • 2008 started bicycling regularly around SF
    • 2007 started rock climbing, eventually 3x a week
    • 1998 started regular yoga and pilates as part of recovering from a back injury

    First hear about NP

    How did you first hear about the group?

    I saw chalkmarks in Golden Gate Park for "NovemberProject 6:30am Kezar!" and thought what the heck is that? 6:30am? Sounds crazy. More: Learning About NP

    First NP workout

    Recount your first workout, along with the vibe, and how they may have differed from your expectations.

    My first NovemberProject workout was a 2013 NPSF PR Wednesday workout, and it was the hardest physical workout I'd ever done. However before it destroyed me, I held my hand up as a newbie, and was warmly welcomed and hugged. My first NP made a strong positive impression. More: My First Year at NP: Newbie

    Meeting BG and Bojan

    For those who've crossed paths, what was your first impression of BG? Of Bojan?

    I first met BG and Bojan at a traverbal Boston destination deck workout. BG and Bojan were (are!) larger than life, with voices to match. Yet their booming matched with self-deprecating humor got everyone laughing and feeling like they belonged.

    First Harvard Stadium workout

    Boston Only: If you had a particularly memorable newbie meeting and virgin workout at Harvard Stadium, I'd like to know about it for a possible separate section. If so, please describe.

    My first Boston Harvard Stadium workout was one to remember. Two days after my traverbal Boston destination deck workout, I joined the newbie orientation since I hadn't done the stadium before. I couldn't believe how many newbies there were. By the time we got to the starting steps I was ready to bolt. I completed 26 sections, far more than I thought I would.

    Elevated my fitness

    How has NP elevated your fitness level? How have you measured this?

    NP has made me a lot faster. After a little over 6 months of NPSF, I cut over 16 minutes in my Bay To Breakers 12km personal record.

    Affected personal life

    Give an example of how NP has affected your personal life and/or helped you overcome a challenge.

    NP turned me from a night person to a morning person, with different activities, and different people. NP inspired me to push myself to overcome my inability to run hills, one house at a time until I could run half a block uphill, then I started running NPSF hills. More: My First Year at NP: Scared of Hills

    Impacted relationship with my city

    How has NP impacted your relationship with your city?

    I would often run into NPSF regulars on my runs to and from the workout, so I teamed up with a couple of them and started an unofficial "rungang". We posted times and corners of our running routes, including to hills. NPSF founder Laura challenged our rungang to run ~4 miles (more than halfway across San Francisco) south to a destination hills workout at Bernal Heights and a few of us did. After similar pre-workout runs North to the Marina, and East to the Embarcadero, I feel like I can confidently run to anywhere in the city, which is an amazing feeling.

    Why rapid traction?

    Why do you think NP has gained such traction so rapidly?

    Two words: community positivity. Yes there's a workout too, but there are lots of workout groups. What makes NP different (beyond that it's free), are the values of community and barrier-breaking positivity that the leaders instill into every single workout. More: My First Year at NP: Positive Community — Just Show Up

    Most memorable moment

    Describe your most memorable workout or a quintessential NP moment.

    Catching the positivity award when it was thrown at me across half of NPSF. Tantek holding up the NPSF positivity award backlit by the rising sun.

    Weirdest thing

    Weirdest thing about NP?

    That so many people get up before sunrise, nevermind in sub-freezing temperatures in many cities, to go to a workout. Describe that to anyone who isn't in NP, and it sounds beyond weird.

    NP and regular life

    How has NP bled into your "regular" life? (Do you inadvertently go in for a hug when meeting a new client? Do you drop F-bombs at inopportune times? Have you gone from a cubicle brooder to the meeting goofball? Are you kinder to strangers?)

    I was already a bit of a hugger, but NP has taught me to better recognize when people might quietly want (or be ok with) a hug, even outside of NP. #huglife

    The Positivity Award

    If you've ever won the Positivity Award, please describe that moment and what it meant to you.

    It's hard to describe. I certainly was not expecting it. I couldn't believe how excited people were that I was getting it. There was a brief moment of fear when Braden tossed it at me over dozens of my friends, all the sound suddenly muted while I watched it flying, hands outstretched. Caught it solidly with both hands, and I could hear again. It was a beautiful day, the sun had just risen, and I could see everyone's smiling faces. More than the award itself, it meant a lot to me to see the joy in people's faces.

    Non-NP friends and family

    What do your non-NP friends and family think of your involvement?

    My family is incredibly supportive and ecstatic with my increased fitness. My non-NP friends are anywhere from curious (at best), to wary or downright worried that it's a cult, which they only half-jokingly admit.

    NP in one word

    Describe NP in one word.

    Community

    Additional Thoughts

    Additional thoughts? Include them here.

    You can follow my additional thoughts on NP, fitness, and other things on my site & blog: tantek.com.

    on
  52. In today’s episode of the blind leading the blind, I offer advice & support to a single guy friend, 10+ years younger.

    on
  53. Appreciating design touches, e.g. @NikePlus app’s after-run voice congrats like: “This is @ShalaneFlanagan. Wow! That’s three days in a row. Boom.” What if we could record such congrats ourselves and share them for friends to hear after they completed their runs?

    on
  54. Excellent Trackish Tuesday this morning. Did warmup, 6 of 7 laps. Getting faster at 200s. Thanks @butteronadonut. http://instagram.com/p/zNZ4Tbg9Tp/ a photo

    on
  55. youtu.be/hqxbSggZ-vI “One of these mornings […] you will look for me, and I’ll be gone.” Trackish Tuesday 0600 @CalAcademy.

    on
  56. likes @kevinmarks’s tweet.

    on
  57. @kidehen negative reasoning: “a person doesn't” “you shouldn't need” begets procrastination, not building. More: indiewebcamp.com/FAQ#Is_everyone_going_to_want_to_run_their_own_website

    on
  58. likes @schnarfed’s tweet.

    on
  59. @julien51 please add your tweets to your own site, in both h-entry & your RSS feed too. Yummier than non-RSS tweets :)

    on
  60. @hmans I wish I could reply-to, like, and send a webmention to your wish at an #IndieWeb permalink on hmans.io :)

    on
  61. @kevinmarks @marcoarment great post. “build what we want” core to #indieweb. indiewebcamp.com/principles Let’s work together.

    on
  62. @elfpavlik #IndieWeb focuses on: #ownyourdata, own notes > tweets #UX #design > protocols More: indiewebcamp.com/principles

    on
  63. likes @4lpine’s tweet at , @adactio’s tweet at , tweet at , @benwerd’s tweet at , @Shoq’s tweet at , @aaronpk’s tweet at , tweet at , @garethjordan’s tweet at , and @kevinmarks’s tweet at .

    on
  64. Still working on figuring out a good design to collapse presentation of likes of same type of thing from same source.

    on
  65. likes NovemberProjectSF’s photo at , photo at , photo at , photo at , and photo at .

    on
  66. likes Katharine Otis’s yoga page at and post at .

    on
  67. Learned a new arm balance in yoga class @MissionCliffs today. Held Dragonfly pose several seconds. Thanks Katharine.

    on
  68. going to BOOTIE SF: Valentine’s Party https://www.facebook.com/events/334639810064851/

    on
  69. not going to make it to @Nov_Project_SF take on the #Sunrise6K. Free race, great people. Get it fb.com/events/1540673402878317

    on
  70. likes @benwerd’s tweet at , @tef’s tweet at , @benwerd’s tweet at , @aaronpk’s tweet at , and @kevinmarks’s tweet at .

    on
  71. might remotely attend Homebrew Website Club TONIGHT! Indie event: kylewm.com/2015/02/homebrew-website-club-2015-february-11 silo: fb.com/events/788946017847062

    on
  72. likes @shepazu’s tweet.

    on
  73. “[…] cats with hiding boxes had lower CSS scores on average […]” Not your usual boxes and CSS: http://www.iflscience.com/plants-and-animals/boxes-really-do-reduce-cat-stress

    on
  74. likes Stephen Luntz’s “Why Do Cats Love Boxes So Much?” at , Kartik Prabhu’s note: “Hey Google+ STOP ‘auto-awesome’ing […]” at , aaronparecki.com’s post at , and David Mead’s “This is why I love #indieweb. Starring @microformats...” at .

    on
  75. likes NovemberProjectSF’s photo at , photo at , photo at , and @w3cmemes’s tweet at .

    on
  76. @Nov_Project_SF #flexingforsam #FastAsSam https://www.facebook.com/NovemberProjectSF/photos/a.586864678116696.1073742002.276430682493432/586867854783045/

    on
  77. likes NovemberProjectSF’s photo at , photo at , photo at , and photo at .

    on