JJJ's Blog

  • WordPress
  • GitHub
  • Twitter/X
  • Conflaticons

    Today Twitter rebranded “Stars” & “Favorites” to “Hearts” & “Likes”

    https://twitter.com/twitter/status/661558661131558915

    It’s so obviously a horribly conflated notion that I struggle to believe a team of thousands of people came to this as the logical conclusion to what was undoubtedly hundreds of hours of meetings & deliberation that will someday result in a tell-all novella titled: “Stars vs. Hearts: The Untold Story.”

    Consider the absurdity of the following screenshot:

    Screen Shot 2015-11-03 at 1.08.44 PM

    In order to “Like” something on Twitter, we click/tap a symbol that means “Love” with a “Like” label. Huh? When did Twitter start exclusively hiring Vulcans without a range of expressive emotions used to convey the likability of something beyond 1 single available incorrectly represented data point?

    Hearts mean love. Any other reaction requires not-a-heart.

    Partially in their defense, we’ve struggled with this in BuddyPress since we made the decision early on to use stars as a “Favoriting” system in the activity streams; and that decision plagues us a bit with each subsequent release. I don’t think anyone on the core leadership team loves (ha!) what we have, but we can’t agree on what exactly would improve it, so it stays what it is.

    And, I get it… It’s cutesy and light-hearted (ha again!) and it’s intended to be fun and playful. But meh.

    Now, what Slack has done with their reactions stuff is pretty great. You react to something with an emoji, and it’s entirely likely to be clever, timely, and contagious. Your niche group decides on-the-fly what emoji means to whom and why, and then either forget about it and move on, or it becomes lore to the group and an inside joke to small subgroups. I think it’s the best solution to enabling drive-by interactions, and one that BuddyPress probably could (see: should) adopt relatively easily.

    What Twitter accidentally invented today is the very first conflaticon; a glyph that has historically meant one thing for generations but is now re-presented world-wide to mean something kinda-similar but actually kinda-very-different.

    Maybe it’s intentional, though? What if Twitter is getting sick of storing trillions of records in databases everywhere, and secretly wants to reduce their volume to improve performance and eliminate maintenance burden? Take something that’s become far more popular than you anticipated, make it a little confusing while also inverting the meaning to be a bit socially awkward, and now you’ve saved the company dozens of dollars on a long enough timeline.

    Whatever the reasoning, I neither like nor love this change, and wouldn’t be surprised if it’s a catalyst for a deeper discussion into how valuable reaction-types are.

    Subsequently, I’m thankful WordPress never fleshed out Comment Types. What we actually need is register_reaction_type() where a “Comment” is just one type of reaction to something, a “Trackback” is another, a “bbPress Topic” might be a reaction to a blog post, and so on. I envision a world where how we react to the internet-connected world around us isn’t baked into the software, but instead is representative of who we are at that time and place in our own lives. Maybe someday…

    JJJ

    November 3, 2015
    Rants
    Twitter
  • Responsive Design is a Hack

    Responsive design has become a quick-and-dirty way to say “Hey! We looked at this on not-just-a-PC!” Our users deserve so much better — something that intentionally works with the ever-increasing array of input methods. Keyboards, cursors, touch, voice, & motion; the digital world has never been simultaneously as accessible and as overtly complicated as it is today.

    Netflix does a pretty good job at wrangling the chaos, designing experiences around the input method, reducing touches and navigational elements on more simple devices and taking advantage of all available screen real-estate to maximize an interfaces usefulness.

    Maybe we’ll call it “Input Aware” or “Device Aware” design — I guess I don’t really care about the name as much as distinguishing the approach from the myriad of responsive hacks and shims floating aimlessly around our collective github toolboxes.

    I was recently reminded of the spectrum of media-types available to the CSS2.1 media spec, which largely got me thinking about how bad we are at utilizing them:

    • all — Suitable for all devices.
    • braille — Intended for braille tactile feedback devices.
    • embossed — Intended for paged braille printers.
    • handheld — Intended for handheld devices (typically small screen, limited bandwidth).
    • print — Intended for paged material and for documents viewed on screen in print preview mode. Please consult the section on paged media for information about formatting issues that are specific to paged media.
    • projection — Intended for projected presentations, for example projectors. Please consult the section on paged media for information about formatting issues that are specific to paged media.
    • screen — Intended primarily for color computer screens.
    • speech — Intended for speech synthesizers. Note: CSS2 had a similar media type called ‘aural’ for this purpose. See the appendix on aural style sheets for details.
    • tty — Intended for media using a fixed-pitch character grid (such as teletypes, terminals, or portable devices with limited display capabilities). Authors should not use pixel units with the “tty” media type.
    • tv — Intended for television-type devices (low resolution, color, limited-scrollability screens, sound available).

    CSS2.1 even comes with a handy media-groups spec to pair media-types to devices based on their anticipated attributes:

    Media Types Media Groups
    continuous/paged visual/audio/speech/tactile grid/bitmap interactive/static
    braille continuous tactile grid both
    embossed paged tactile grid static
    handheld both visual, audio, speech both both
    print paged visual bitmap static
    projection paged visual bitmap interactive
    screen continuous visual, audio bitmap both
    speech continuous speech N/A both
    tty continuous visual grid both
    tv both visual, audio bitmap both

    Typical responsive design approaches target the screen type (and maybe print) which is accidentally celebrating doing-responsive-design-wrong. To correctly respond to different devices, we need to target more than max-width and min-width in the screen media-type, and let browsers and rendering engines on our televisions and refrigerators do their jobs.

    Unfortunately for me, the software libraries I live most of my life in right now (WordPress, BuddyPress, and bbPress) are all pretty bad at this. The WordPress iOS app is a crippled version of WordPress’s relatively fantastic interface; WordPress itself barely functions on small screens and touch devices; BuddyPress & bbPress do the bare minimum to inherit surrounding styling, but don’t own the experience or set a great example in this regard as much as they might in others.

    The greater tech community needs to target more input devices, intentionally design better experiences, and stop patting ourselves on our backs for doing the bare minimum of design.

    Sure… it’s an iterative process, and yes… we’re all working hard and putting in the long hours together to improve the digital world around us, but it’s a great time to lift up our heads, unsquint our eyes, and design for the world around us instead of for ourselves.

    JJJ

    May 27, 2014
    CSS, Rants
    design, media types, Responsive
  • PHP5 Visibility and WordPress

    tl;dr – PSA about PHP5 visibility and it having the potential to change what we love about WordPress. Ergo: use it correctly.

    —-

    Leading projects like BuddyPress and bbPress, I tend to work closely with the WordPress team and mirror the development paradigms as much as it makes sense to. We’re doing tandem development, after all — it’s like pair programming, but from 1,000 miles away and with less spooning.

    As of WordPress 3.2, the minimum requirement for what PHP version WordPress would run on was upped to 5.2.4. With this, came the ability to determine the scope of class variables and methods. This can be dangerous if used incorrectly, and extremely relieving for everyone else when used correctly. Even though the world of PHP developers outside of WordPress have had this for years, many of us are only recently getting our feet wet.

    Part of what makes WordPress popular is its low barrier of entry. Watching any person, at any level, of any skill-set, immediately influence code that +40 million people use (and exponentially more interact with) never ceases to amaze me. As a developer of 18 total years (14 professionally if I count a small hiatus) what makes WordPress as a project different to me is how the lead team has maintained its global and procedural nature.

    Ask someone that’s not a WordPress developer, and they’ll tell you that the reason they don’t use WordPress is because the code is antiquated, or inefficient because of the way that it was architected from the beginning. They want more objects, MVC, or some other trendy and fun way of doing things. I don’t disagree with them, but I think the procedural code style is actually what make WordPress strong; it’s simplicity is easy to understand, it’s easy to figure out what the code is doing at a glance, and you’re able to trace code back with relative ease compared to other more complex coding paradigms.

    In most of WordPress, developers have unlimited access to directly manipulate global values. This makes for an unpredictable environment, but also means there are no training wheels; if a plugin goes rogue and nullifies the $post global, that’s what it intended to do, and that’s just how it works.

    Since WordPress has been restricted to PHP4 for most of its adult life, so have theme and plugin developers. As such, the power to protect your code with private and protected variables and methods is pretty awesome. We can finally prevent other plugins from messing with our code, which is a great and amazing ability. I’ve seen a few places where class variables were protected or private inside of plugins (even by developers that I love and respect) which makes it impossible to extend or manipulate that code. If it’s done really poorly, it might not even be possible to repair that API without creating a new one.

    Maybe these decisions were made on purpose; maybe it was not knowing any better; maybe it was copy/paste from some tutorial somewhere. What I do know is it’s frustrating to be on the receiving end of poorly architected code, and PHP5 visibility introduces problems that the WordPress community hasn’t had to deal with for very long.

    Whatever the case, it’s frustrating to drill down deep into something, only to find you can’t drill through the last few inches.

    One could argue there are currently places in the WordPress core code that should be on lock-down — and that might be true; but being able to manipulate almost *anything* at runtime is, for me, a major part of what makes WordPress appealing and fun to use.

    I purposely kept the good/bad code examples out of this blog post, as I plan on doing a more technical write-up later on our developer blog. Anyhow… If you’re a WordPress developer, and you’re unfamiliar with PHP5’s visibility, look into how it works and how WordPress core uses it now. By using it appropriately, you’ll help your future self, your team, your users, and any other developers that might be interacting with your code.

    JJJ

    August 27, 2012
    Rants, WordPress
  • Circles

    There’s a reason why Google chose circles for its new Google + social graph, and it isn’t just because it’s a clever name. If you search Google’s archive of images for the phrase “social graph” every single relevant image that comes up portrays relationships as being circular.

    In the screen shot above, it’s clear that we humans seem to naturally illustrate our relationships as being… rounded. We live our lives constantly juggling these relationships with friends, partners, family, and colleagues in an intricate network that is unique to us. What better way to depict these predictably random dynamics than with a shape that has absolutely no bias towards any direction or alignment – the circle.

    Circle of Trust
    It's not you, it's me… Wait no it's totally you.

    Up until now, we’ve been forced to map these relationships within rigid digital constructs built by developers (see: me) to make it as easy as possible to manage that data as it scales into the millions of relationships.

    It’s easy to lump people into classes and demographics and groups and categories because we receive (false) positive reinforcement from doing it, and quantifying these relationships by putting them into boxes makes them feel real.

           You are my: [ ] Friend [ ] Family [ ] Pet [ ] Dinner

    Since the first time someone drew a recognizable picture of someone else, having something we can go back to and look at and touch and say “Yeah, that person exists and we are important to each other!” has been an evolutionary significance in our development that technology hasn’t been able to properly convey quite yet. With every emerging social platform that comes around we get one step closer to translating the complexities of our relationships in ways that actually make sense, beyond being friends and followers.

    If nothing else, Google + (and Circles specifically) is a reminder that our lives are ever-changing and the people we know now and will meet tomorrow don’t belong in any rigid box. If you are my friend, I appreciate my judgmental classification of you in my life just a wee bit more today than I did yesterday.

    JJJ

    June 30, 2011
    Life, Rants, BuddyPress, Software, Photography
  • Waiting…

    I dislike waiting. Particularly in situations where I can’t be productive, or where people prevent me from being so.

    I’m sitting at the Honda dealership waiting for my third visit in almost as many weeks for squeaky brakes. Keep in mind my brakes weren’t squeaking when I originally came in for routine maintenance. And that everytime I come here they say “a few minutes” but I’m here for two hours. If I knew it was going to take two hours I’d try to get work done. Instead I sit waiting, staring at the TV and looking around every few minutes for my hopefully completed and repaired vehicle.

    Alas, here I sit… Still waiting… Ugh…

    JJJ

    December 7, 2009
    Rants
Previous Page
1 2

Proudly Powered by WordPress