JSON:API lands in Drupal core

Breaking news: we just committed the JSON:API module to the development branch of Drupal 8.

In other words, JSON:API support is coming to all Drupal 8 sites in just a few short months! 🎉

This marks another important milestone in Drupal's evolution to be an API-first platform optimized for building both coupled and decoupled applications.

With JSON:API, developers or content creators can create their content models in Drupal’s UI without having to write a single line of code, and automatically get not only a great authoring experience, but also a powerful, standards-compliant, web service API to pull that content into JavaScript applications, digital kiosks, chatbots, voice assistants and more.

When you enable the JSON:API module, all Drupal entities such as blog posts, users, tags, comments and more become accessible via the JSON:API web service API. JSON:API provides a standardized API for reading and modifying resources (entities), interacting with relationships between resources (entity references), fetching of only the selected fields (e.g. only the "title" and "author" fields), including related resources to avoid additional requests (e.g. details about the content's author) and filtering, sorting and paginating collections of resources.

In addition to being incredibly powerful, JSON:API is easy to learn and use and uses all the tooling we already have available to test, debug and scale Drupal sites.

Drupal's JSON:API implementation was years in the making

Development of the JSON:API module started in May 2016 and reached a stable 1.0 release in May 2017. Most of the work was driven by a single developer partially in his free time: Mateu Aguiló Bosch (e0ipso).

After soliciting input and consulting others, I felt JSON:API belonged in Drupal core. I first floated this idea in July 2016, became more convinced in December 2016 and recommended that we standardize on it in October 2017.

This is why at the end of 2017, I asked Wim Leers and Gabe Sullice — as part of their roles at Acquia — to start devoting the majority of their time to getting JSON:API to a high level of stability.

Wim and Gabe quickly became key contributors alongside Mateu. They wrote hundreds of tests and added missing features to make sure we guarantee strict compliance with the JSON:API specification.

A year later, their work culminated in a JSON:API 2.0 stable release on January 7th, 2019. The 2.0 release marked the start of the module's move to Drupal core. After rigorous reviews and more improvements, the module was finally committed to core earlier today.

From beginning to end, it took 28 months, 450 commits, 32 releases, and more than 5500 test runs.

The best JSON:API implementation in existence

The JSON:API module is almost certainly the most feature-complete and easiest-to-use JSON:API implementation in existence.

The Drupal JSON:API implementation supports every feature of the JSON:API 1.0 specification out-of-the-box. Every Drupal entity (a resource object in JSON:API terminology) is automatically made available through JSON:API. Existing access controls for both reading and writing are respected. Both translations and revisions of entities are also made available. Furthermore, querying entities (filtering resource collections in JSON:API terminology) is possible without any configuration (e.g. setting up a "Drupal View"), which means front-end developers can get started on their work right away.

What is particularly rewarding is that all of this was made possible thanks to Drupal's data model and introspection capabilities. Drupal’s decade-old Entity API, Field API, Access APIs and more recent Configuration and Typed Data APIs exist as an incredibly robust foundation for making Drupal’s data available via web service APIs. This is not to be understated, as it makes the JSON:API implementation robust, deeply integrated and elegant.

I want to extend a special thank you to the many contributors that contributed to the JSON:API module and that helped make it possible for JSON:API to be added to Drupal 8.7.

Special thanks to Wim Leers (Acquia) and Gabe Sullice (Acquia) for co-authoring this blog post and to Mateu Aguiló Bosch (e0ipso) (Lullabot), Preston So (Acquia), Alex Bronstein (Acquia) for their feedback during the writing process.
Source: Dries Buytaert www.buytaert.net


A fresh look for dri.es

In 1999, I decided to start dri.es (formally buytaert.net) as a place to blog, write, and deepen my thinking. While I ran other websites before dri.es, my blog is one of my longest running projects.

Working on my site helps me relax, so it's not unusual for me to spend a few hours now and then making tweaks. This could include updating my photo galleries, working on more POSSE features, fixing broken links, or upgrading to the latest version of Drupal.

The past month, a collection of smaller updates have resulted in a new visual design for my site. If you are reading this post through an RSS aggregator or through my mailing list, consider checking out the new design on dri.es.

Before (left) and after (right).

The new dri.es may not win design awards, but will hopefully make it easier to consume the content. My design goals were the following:
Improve the readability of the content
Improve the discoverability of the content
Optimize the performance of my site
Give me more creative freedom
Improve readability of the content

To improve the readability of the content, I implemented various usability best practices for spacing text and images.

I also adjusted the width of the main content area. For optimal readability, you should have between 45 and 75 characters on each line. No more, no less. The old design had about 95 characters on each line, while the new design is closer to 70.

Both the line width and the spacing changes should improve the readability.

Improve the discoverability of content

I also wanted to improve the discoverability of my content. I cover a lot of different topics on my blog — from Drupal to Open Source, startups, business, investing, travel, photography and the Open Web. To help visitors understand what my site is about, I created a new navigation. When the Archive-link is clicked, visitors will be presented the key topics I write about. It's a small change, but it should help new visitors figure out what my site is about.

Optimize the performance of my site

Less noticeable, is that the underlying HTML and CSS code is now entirely different. I'm still using Drupal, of course, but I decided to rewrite my Drupal theme from scratch.

The previous design had almost 52K of theme-specific CSS, while the new design has 16K of theme-specific CSS. That is more than three times smaller.

The new design also results in fewer HTTP requests as I replaced all stand-alone icons with inline SVGs. Serving this page now takes 16 HTTP requests compared to 33 HTTP requests with the previous design.

All this results in faster performance. This is especially important for people visiting my site from a mobile device, and even more important for people visiting my site from mobile devices in areas in the world with slow internet. A lighter theme with fewer HTTP requests makes my site more accessible. It is something I plan to work more on in the future.

Website bloat is a growing problem and impacts the user experience. I wanted to lead by example, and made my site simpler and faster to load.

The new design also uses Flexbox and CSS Grid Layout — both are more modern CSS standards. It is fully supported in all main browsers: Chrome, Firefox, Safari and Edge. It is, however, not fully supported on Internet Explorer, which accounts for less than 3% of all my visitors. Internet Explorer users should still be able to read all content though.

Give me more creative freedom

Last but not least, the new design provides me with a better foundation to build upon in subsequent updates. I wanted more flexibility for how to lay out images in my blog posts, highlight important snippets, and add a table of content on long posts. You can see all three in action in this post, assuming you're looking at this blog post on a larger screen.
Source: Dries Buytaert www.buytaert.net


Drupal 8.6.0 released

Last night, we shipped Drupal 8.6.0! I firmly believe this is the most significant Drupal 8 release to date. It is significant because we made a lot of progress on all twelve of Drupal 8 core's strategic initiatives. As a result, Drupal 8.6 delivers a large number of improvements for content authors, evaluators, site builders and developers.

What is new for content authors?

For content authors, Drupal 8.6 adds support for "remote media types". This means you can now easily embed YouTube or Vimeo videos in your content.

The Media Library in Drupal 8.6Content authors want Drupal to be easy to use. We made incredible progress on a variety of features that will help to achieve that: we've delivered an experimental media library, added the Workspaces module as experimental, providing sophisticated content staging capabilities, and made great strides on the upcoming Layout Builder. The Layout Builder is shaping up to be a very powerful tool that solves a lot of authoring challenges, and is something many are looking forward to.

Each initiative related to content authoring is making disciplined and steady progress. These features not only solve for the most requested authoring improvements, but provide a solid foundation on which we can continue to innovate. This means we can provide better compatibility and upgradability for contributed modules.

The top 10 requested features for content creators according to the 2016 State of Drupal survey.What is new for evaluators?

Evaluators want an out-of-the-box experience that allows them to install and test drive Drupal in minutes. With Drupal 8.6, we have finally delivered on this need.

Prior to Drupal 8.6, downloading and installing Drupal was a complex and lengthy process that ended with an underwhelming "blank slate".

Now, you can install Drupal with the new "Umami demo profile". The Umami demo profile showcases some of Drupal's most powerful capabilities by providing a beautiful website filled with content right out of the box. A demo profile will not only help to onboard new users, but it can also be used by Drupal professionals and digital agencies to showcase Drupal to potential customers.

In addition to a new installation profile, we added a "quick-start" command that allows you to launch a Drupal site in one command using only one dependency, PHP. If you want to try Drupal, you no longer have to setup a webserver, a database, containers, etc.

Last but not least, the download experience and evaluator documentation on Drupal.org has been vastly improved.

With Drupal 8.6, you can download and install a fully functional Drupal demo application in less than two minutes. That is something to be very excited about.

The new Umami demo profile together with the Layout Builder.What is new for developers?

You can now upgrade a single-language Drupal 6 or Drupal 7 site to Drupal 8 using the built-in user interface. While we saw good progress on multilingual migrations, they will remain experimental as we work on the final gaps.

I recently wrote about our progress in making Drupal an API-first platform, including an overview of REST improvements in Drupal 8.6, an update on JSON API, and the reasons why JSON API didn't make it into this release. I'm looking forward to JSON API being added in Drupal 8.7. Other decoupled efforts, including a React-based administration application and GraphQL support are still under heavy development, but making rapid progress.

We also converted almost all of our tests from SimpleTest to PHPUnit; and we've added Nightwatch.js and Prettier for JavaScript developers. While Drupal 8 has extensive back-end test coverage, using PHPUnit and Nightwatch.js provides a more modern platform that will make Drupal more familiar to PHP and JavaScript developers.

Drupal 8 continues to hit its stride

These are just some of the highlights that I'm most excited about. If you'd like to read more about Drupal 8.6.0, check out the official release announcement and important update information from the release notes. The next couple of months, I will write up more detailed progress reports on initiatives that I didn't touch upon in this blog post.

In my Drupal 8.5.0 announcement, I talked about how Drupal is hitting its stride, consistently delivering improvements and new features:

In future releases, we plan to add a media library, support for remote media types like YouTube videos, support for content staging, a layout builder, JSON API support, GraphQL support, a React-based administration application and a better out-of-the-box experience for evaluators.

As you can see from this blog post, Drupal 8.6 delivered on a number of these plans and made meaningful progress on many others.

In future releases we plan to:
Stabilize more of the features targeting content authors
Add JSON API, allowing developers to more easily and rapidly create decoupled applications
Provide stable multilingual migrations
Make big improvements for developers with Composer and configuration management changes
Continually improve the evaluator experience
Iterate towards an entirely new decoupled administrative experience
... and more
Releases like Drupal 8.6.0 only happen with the help of hundreds of contributors and organizations. Thank you to everyone that contributed to this release. Whether you filed issues, wrote code, tested patches, funded a contributor, tested pre-release versions, or cheered for the team from the sidelines, you made this release happen. Thank you!
Source: Dries Buytaert www.buytaert.net


5-Day Drupal 8 Training - Toronto

Start: 
2018-10-01 09:00 - 2018-10-05 16:30 America/Toronto

Organizers: 

Meyzi

Event type: 

Training (free or commercial)

https://evolvingweb.ca/training/5-day-drupal-8-training

Learn how to build a website with Drupal from top to bottom. This week-long Drupal class is divided into three parts: site building, theming, and module development. You can register for all five days, or just the days of interest to you.
Day 1: Drupal 8 Site Building & Architecture
This course will give participants a thorough understanding of the Drupal site building process. You'll get hands-on experience creating an information architecture for Drupal, and implementing advanced features with Drupal core and contributed modules.
Planning and implementing content types
Techniques for organizing content with Views
Building layouts with configuration
Structuring content with Paragraphs
Setting up landing pages
Selecting and installing contributed modules
Site maintenance best practices
Pre-launch checklist
Days 2-3: Drupal 8 Theming
You'll learn how to build a responsive Drupal theme to customize the look of your Drupal site. We’ll create a theme based on Drupal core, and another using a front-end framework. Learn how to create layouts, customize Twig templates, and best practices for organizing your theme.
Creating a custom Drupal theme
Using Drupal's core themes
Drupal's templating system
Adding CSS and Javascript to your Drupal theme
Twig syntax and Twig debug
Sub-theming with Bootstrap, Zurb Foundation, etc.
Using Twig to customize Views output
Preprocess functions
Using SASS with your Drupal theme
Extending Twig templates
Using libraries to manage internal and external assets
Best practices for Drupal theming
Days 4-5: Drupal 8 Module Development
You'll learn the process for developing a module with standard components like blocks, permissions, forms, and pages. The course will cover the concepts behind module development, how to use Object Oriented Programming for Drupal 8, and essential Drupal developer tools. It will give you an overall understanding of how modules work and you’ll get hands-on experience developing modules from scratch.
Creating a Drupal 8 module
Drupal coding standards
Using Drush, Drupal Console, and Composer
Creating pages programmatically
Creating custom field types and formatters
Using the Examples module
Creating custom forms
Database integration
Creating blocks programmatically
Creating administrative forms
Creating and applying patches
Configuration management
To register and for details: https://evolvingweb.ca/training/5-day-drupal-8-training
Source: https://groups.drupal.org/node/512931/feed


How Wikipedia implemented link previews

You might have noticed that Wikipedia recently started enabling link previews; when you hover over a link, it displays a card with more information about the linked page.

My first reaction was: what took them so long? Link previews help to solve an important usability problem of having to open many articles, often in multiple tabs. However, after I started to read more about how Wikipedia implemented the design, I was reminded of how hard it is to do things at the scale Wikipedia requires.
Nirzar Pangarka, who works as a designer at the Wikimedia Foundation, shared that more than 10,000 links get hovered each second across Wikipedia. In another post, David Lyall, an engineering manager at the Wikimedia Foundation, shared that they are seeing up to half a million hits every minute on the API that serves the link preview cards. Delivering even a simple feature at this scale is an impressive achievement. I have a great appreciation for Wikipedia's seemingly straightforward link previews.
Source: Dries Buytaert www.buytaert.net


Common Connected Hardware Blunders

Over the last few years we’ve worked with a number of startups who have engaged with Viget for help designing or engineering some aspect of their connected product. Every product is unique, but it may surprise you how similar their challenges are. What is perhaps less surprising is the number of inventive ways we’ve seen solo-entrepreneurs, young startups, and even internal business units with firm foundations go about solving those challenges. I’ll take a moment to reflect on some of those challenges and specifically call attention to the missteps and follies we commonly see early-on in engagements.

Building the wrong prototype
Viget builds primarily two different kinds of product prototypes. A stakeholder prototype, which focuses on delivering desired functionality by leveraging as many pre-existing solutions as possible. And a functional prototype, which focuses on exploring production options by honing in on core mechanics and functionality. Both prototypes serve specific needs which often correlate with the natural phases of product development. Sometimes the prototype should support buy-in for an idea, other times it should help sell the path forward.
In both situations the prototype is the center of attention. The prototype is what you share with your team, your boss, investors, and your crowd-sourced customers (even your mom!). Because of the spotlight, it needs to behave in ways that put a good foot forward. This is why we’re so surprised when we come across cobbled-together assemblies that supposedly represent a product vision. It might only work because it gets cast alongside a tremendous number of conditions and explanation. I.e: 
“...ignore this part, focus on this, let me articulate this thing by hand to show you want it WILL do...”
We admire the gumption and eagerness to make things — especially from our clients — but instead, consider the alternative: a self-evident prototype. A prototype that stands up on its own and clearly articulates a vision. A good litmus test is what you’ll find when you crack open the enclosure of a connected prototype. Is it something you are proud to share? Or is it a rat's nest of wires with indeterminable purpose? Why not invest the extra time, and the extra money, and dedicate some effort to articulating an effective product vision? Build the prototype that serves its specific purpose and can survive being the center of attention. Anything less and you are wasting time by building the wrong prototype.

Waiting for perfection
Developing connected products, like anything, is a balancing act. Wait too long and over-build a prototype and you’ll become overly invested in one direction. A tempering thought to keep in mind: every day spent on product integrationis a day not on the market. Future you is absolutely going to miss out on that revenue.
Finding the right balance stems from experience. Very plainly, it’s important to figure out which features are necessary for achieving present business goals. This gets complicated, fast, because those objectives change. Connected products benefit from a maturing market which will support any number of value-add services, and business want the flexibility to explore and ultimately choose the right one.
Take a look at Helium as an example. This team has iterated for well over three years on a concept where the underlying technology has morphed just as often as their business. Over time they have developed strong relationships with their community, their customers, and their investors -- demonstrating an ability to not only deliver useful products to the customers they have today, but also develop products for the customers they want tomorrow.

Restless Bill of Materials
Another source of pain I see are business decisions which needlessly accelerate product evolution. A good example is the price of a bill of materials (BOM) conflicting with business or marketing objectives.
Consider a fully-developed production-prototype built on the back of specific MCUs, peripherals, toolings, and plastics. The cost of adjusting this BOM late-stage is significant, not to mention a collective headache. However it is a common occurrence because around the time that something is ready to enter production its total in-the-box cost can be scrutinized. It is around this time a product team will receive an email along these lines:
“We’re trying to keep the device costs down to x, we hit a snag here and so we’re currently at y, anything we can we do?”
The product team will take a good look at low-hanging fruit already earmarked as extravagance.
“We’re currently platformed on x but can go to y which costs z less. But it means we’ll need to re-develop portions of the firmware, re-route this, calibrate that, etc”
Unlike software, hardware is generally less forgiving to constant tweaks and adjustments. It’s an all around better thing to simply nail to the wall correctly the first time. But that is obviously a hard mark to hit, so what options exist?
Go to market regardless with the higher price point.Go to market with the lower (desired) price point. Take it out of the margin, or eat it. Make it up with scale or an equally performant but lower cost v2 in the future.Account for the long-term upside of value-add cloud services (subscription, etc).
I really like options two and three, businesses that maintain a price point and develop margins over time. This is complex to model, and more complex to convey to investors or other stakeholders. However, it keeps the right priorities in place: ship early, develop value-add services, cultivate relationships with suppliers.
Ultimately a restless BOM is indicative of teams not truly collaborating together. There are strategies to hurdle specific challenges, and even aid with hardware versioning, but if the BOM is constantly changing there is little opportunity to build valuable services on top a hardware foundation. And, based on our experience, those value-add services are what matter the most to a connected product businesses.Hit a snag manufacturing your connected product? Tell us about it below or contact us.


Source: VigetInspire


Cultivating an Inclusive Culture


The honest introspection and continuous work for a better teamReconsider DiversityThe typical approach to diversity in corporate environments can usually be summed up in two ways: lazy and superficial.To be fair, diversity is a difficult word to put into action. Most attempts to do so will probably end up feeling superficial. For example, companies often ironically state that they’re “committed to diversity” when the word itself is pretty noncommittal. The ambiguous nature of diversity means it can be interpreted in a number of different ways.That laxity is an allowance for laziness. Initiatives based on diversity are notorious for having vague, or non-existent, standards and accountability. Diversity has become a clichéd ideal versus an agent for change.Diversity is a difficult word to put into action.Attempts to execute diversity in a more specific way can also be problematic. Companies confronted with unfavorable demographic numbers and public pressure to do better find it easy to reach for tokenism as a quick-fix reaction to being called out and as a way to gain brownie points. The addition of individuals from minority and underrepresented groups has become the preferred way for organizations to portray improvement.When someone is perceived as a diversity hire, that label and perception of them as other (i.e. not like me) will be a difficult roadblock for everyone involved to overcome in order to work effectively as a team. Inevitably, the burden is placed on that individual to demonstrate their sameness, perpetuating the common expectation that individuals fall in line and assimilate in order to belong. So instead of an organization evolving from the unique contributions each person can offer, things remain essentially the same.#WOCinTechIn the article Stopping the Exodus of Women in Science, the Harvard Business Review describes the science, technology, and engineering fields as the “Alamo — a last holdout of redoubled intensity” when it comes to machismo in corporate settings. If that statement seems hyperbolic, consider that over half of highly-qualified women in STEM positions — 56 percent— eventually leave the industry. The top reasons cited for their exit? Inhospitable work cultures and isolation.Despite statistics like this and well-documented personal accounts that indicate an environment of intolerance and aggression, tech companies commonly describe their culture as the complete opposite — open and accepting.In Carlos Buenos’ observation of tech’s startup culture, Inside the Mirrortocracy, he offers an explanation for why there’s often such a disparity between a group’s perception of itself and the realities experienced by those that exist there:The problem with gathering a bunch of logically-oriented young males together and encouraging them to construct a Culture gauntlet has nothing to do with their logic, youth, or maleness. The problem is that all cliques are self-reinforcing. There is no way to recalibrate once the insiders have convinced themselves of their greatness.After adopting the abstract ideal of diversity as a value, a group can get the premature satisfaction that their awareness also equals progress. The pursuit to “increase diversity” usually shifts the focus outward for a solution and encourages the mindset that we should eventually arrive at a certain point of achievement. Both of those popular approaches makes it too easy for companies to continue avoiding the real issue.They aren’t forced to confront the biased ways of thinking and behaving ingrained in their culture that have created and sustained such a monolithic environment.If a company truly wants to be a place that includes people that aren’t all alike, they’ll need to create an inclusive culture. That will require an honest look inside themselves to identify the parts of their culture that prevent inclusivity.Recently, companies have seemed comfortable tackling unconscious bias in hiring. On the other hand, they seem unwilling to acknowledge the presence of that very same bias in their everyday operation.There is no known way to avoid unconscious or implicit bias.In fact, it thrives because you’re unaware that it’s happening. That’s why relying on just the good intentions of treating everyone in an inclusive way will always fall short. You will need to make specific plans to combat biased behavior.The work of inclusivity, like our persistent biases, should be constant and never-ending. Your entire team will need to become invested in doing the day-in and day-out work.Inclusivity: We Want You HereBeing inclusive means being consistent about communicating the value of every person participating with our actions. The foundation of those actions should be built on a collective mindset that goes beyond tolerating differences, to truly appreciating them. That appreciation is fostered with the recognition and treatment of differences as the asset they are to a team.When differences are celebrated, everyone on the team will feel safe, supported, and valued being themselves. The freedom of no longer needing to be a certain way in order to be accepted is a major key. Communication is open and honest, instead of guarded. Interactions with each other are earnest and real, instead of strategic. This kind of communication will elevate your work. Here are the actions you can take to make it clear that each person is welcome to participate and their contributions are valued.Safety to Speak UpEveryone on your team should feel safe voicing their concerns and questions. As with other parts of life, rules or guidelines aren’t enough to produce a safe environment. An open door policy in your employee handbook won’t cut it.True safety begins when we take steps to protect what we value. If you value hearing everyone’s voices, start by genuinely supporting one another when an issue is raised. Support isn’t about coddling or other empty gestures. It’s simply meeting someone’s voice with respect and thoughtful consideration.Beyond supporting those that speak up, everyone has the responsibility of being diligent stewards of the environment. Sometimes that means stepping up to advocate for someone else and that requires us to stop being silent.Violent responses to someone speaking up is what makes an environment unsafe. Common responses include intimidation, retaliation, or shaming. Reasons like self-preservation, obliviousness, or agreement with the offending party make it easy to do nothing when someone’s safety to speak up is threatened with violent communication.Silence reinforces fear to everyone, including yourself, and perpetuates avoidance. That can lead to disastrous outcomes when there’s a glaring problem no one feels comfortable addressing.It shouldn’t feel like an act of bravery for a teammate to say when something doesn’t feel right. It should feel like everyone’s expected duty.Gain New PerspectivesMaking speaking up a healthy and normal part of your culture is just the start. Listening is paramount. It’s no good encouraging people to speak, if we aren’t willing to listen.If you’re quick to dismiss or invalidate thoughts and experiences that don’t mirror your own, you’re depreciating the value of your team.Diverse teams perform better because of their access to an abundant and varied supply of thoughts, ideas, and approaches. Recognize and utilize the invaluable resources found in each other!Go into conversations with lots of curiosity and the intention to discover something you hadn’t considered before. During the course of that discussion, you can decide on the best way to move forward as a group. In every discussion you have as a team, don’t just say that questions and differing viewpoints are appreciated. Watch out for exclusion and bias within those discussions as well. Women often report that what they say needs to be repeated or affirmed by someone else in order for it to be heard.The point of discussions like these isn’t about changing minds or determining who’s right. You’re gaining a new perspective, not sacrificing your own.Make Information Easily AccessibleIn an effort to avoid red tape, tech companies in particular can be averse to written policies or guidelines for operations. That approach allows bias to go unchecked. It makes inequitable treatment more likely to occur and harder to point out and defend against.That’s especially true when it comes to how performance is measured. In the absence of clear and consistent standards, success at a meritocracy becomes an uncertainty that’s dependent upon judgement.Documenting your processes not only keeps you objective, it keeps your team empowered and well-educated.Sharing what you know with everyone is a step toward being transparent with one another. Sometimes, information just naturally stays within the confines of a certain team, group of people, or person. Documentation makes any holes in your process obvious when it may not have been otherwise. It helps dissolve information barriers opens the flow of information.That flow of information inevitably leads to a greater level of connectedness. Connecting and building relationships across workplace boundaries, for example, with someone from another team, location, or seniority level, is a great way to counteract exclusivity within an organization.Internal mentorship and sponsorship initiatives are credited with reducing the likelihood of burnout and increasing employee engagement and retention.Illustration: Ashley BoweWe Make Each Other BetterFocusing on inclusivity will force your team to evaluate if your actions honor the existence of everyone there. That question can’t be answered with words or by a single person.It can only be answered in the mindfulness reflected in our actions every day.Yes, it is constant work that requires taking the time to be generous with empathy and thoughtfulness. That work doesn’t hinder productivity, though — it drives it.When your differences are no longer points of contention, they become a celebrated strength. When you choose to uplift each other with respect and support, it elevates your interactions and, as a result, your work.It emphasizes one of the best parts of belonging on a team: We’re all in this together.I’d love to hear your thoughts! What steps have your company or organization taken to be more inclusive? Let me know on Twitter or in the comments below.Cultivating an Inclusive Culture was originally published in Signal v. Noise on Medium, where people are continuing the conversation by highlighting and responding to this story.


Source: 37signals


The world needs more modest, linear growth companies. Please make some.


14 years of linear growth at Basecamp.Exponential growth gets all the glory. Every startup story that lands on the cover of a magazine has a hockey-stick chart to flaunt. Yes, disruption is driven by such violent expansion, and the world needs some disruption some of the time. But for the other 360 days out of the year, what it also needs is some modest, linear growth.Linear growth is what happens in domains that aren’t animated by network effects (and when no artificial growth hormones are injected!). It’s the simplicity of good products sold at reasonable prices that find happy customers. These customers talk to friends and colleagues in other businesses, and over time that word of mouth spreads the good vibes, which turns the business up.But the limelight has no patience with such simple, slow methods as word of mouth. It’s not infectious enough. Not exponential enough. That’s a shame.Because the world is full of problems that needs solving by people who are willing to put in the work for the long haul. I’m not talking about the freakish 120-hour/week, seven-year death marches, but the patient, sustainable work that might last a lifetime. Problems that yield better to people sticking with it.These problems rarely provide the world with more platforms, but the world has enough platforms. If everyone wants to be the foundation, then there’s nobody left to serve as the beams or cladding or tiles. That’s a recipe for a concrete and corporate wasteland.It’s also a recipe for monoculture. Network effects have given us spectacular stories of unfathomable growth, but it’s also given us monopolistic conglomerates that poison the market and its variety.I’m no particular fan of advertisement, but it’s still clear as day that the world is much worse off for having all the value of that trade captured solely by Facebook and Google. Yeah, that’s disruption, and no, it’s not the kind that makes the world better off. It’s creative destruction without creative regeneration. More black hole, less forest-fire cleanse.Capitalism as a system is prone to all manners of dysfunction, but few are as fatal as that of monopolies backed by exponential growth. Markets as a force for good quickly break down and get perverted when only a few power players remain to call all the shots.Maybe such concentration is “natural” in a few domains, but that doesn’t mean we should stand idle by and let it corrupt both business and society. In an era past, trust busters knew how to protect the common good by opposing the behemoths of industry with antitrust fights and laws. AT&T had a “natural” monopoly, and it still deserved to be broken up. Such memories are unnecessarily quaint now, and even when brought up, it’s through a myopic literal lens (Facebook + Google aren’t causing “higher prices”, therefore they’re not bad monopolies. Bullshit).But the discussion of whether the regulators will once more mount up shouldn’t distract us from doing what we can today. Which is to inspire a new generation of entrepreneurs to nobler goals than simply to become caliph instead of the caliph.Which is pretty much all the business press and other spectators (and speculators) are obsessed with these days. Who’s going to be the next Google? The next Facebook? The next Apple? These are interesting questions, but they’re not the only questions, and by posing them over and over again ad nauseum, we’re restricting the conversation and constricting our imagination.What if the next NEXT THING wasn’t a supplementation of an existing network-effect megacorp, but a proliferation of a thousand or million smaller businesses that were given the time and place to breathe and thrive?But for that to happen, it needs not only to be seen as feasible, but desirable. That to eschew the exponential demands of investors is a sign of strength, not a mark of weakness. That to be content with linear growth is streak of independence, not absence of vision.We are in dire need of such reprogramming of the entrepreneurial boot loader. So many faithful decisions are taking in the early stage of a business that locks its course for perpetuity. Very few ventures get to turn back the clock and have a do-over on their cap table. Epiphanies that come too late might as well not come at all.You can’t move a tree by blowing at it softly once the roots are down. But you can radically change where a seed will land by doing the same.I promise I’m not trying to make a lame plea for “children are the future”, although that’s both trite and true. New businesses are started by adults of all ages. Every single one of them have the power to pick how they’ll nurture their growth when it’s started. Choosing to chase the exponential is just that, a choice. Which also means that choosing the linear is a choice too.Which I guess is really my chief argument here. Or appeal, even. That more people choose the path of linear growth. That they embrace it with vigor and pride. That they make no apologies for wanting a modest and sustainable business that can live in harmony with other shops of the same description.The path of linear growth has been the trajectory of Basecamp for 14 years today. It’s brought beauty and warmth to millions of people who’ve used our product. It’s brought stability and a home to the fifty-odd people we employ at the company. And it’s brought the deepest of meanings and satisfaction to Jason and I for owning it.May you make your own fortune as you take a swing at the same.Does this tickle a fancy? Stroke a nagging? I’m sure you’d like my other writings on the topic, then. Start with RECONSIDER, then Exponential growth devours and corrupts, then maybe Enough. Well, my whole back catalogue is full of these kind of ideas, really. So do dive in.The world needs more modest, linear growth companies. Please make some. was originally published in Signal v. Noise on Medium, where people are continuing the conversation by highlighting and responding to this story.


Source: 37signals


The 8 best questions to put on your next one-on-one meeting agenda


I asked almost 500 leaders from all over the world what questions they ask during a one-on-one meeting. Here’s what they said…That one-on-one meeting is scheduled on your calendar this week. So, what should you talk about?As a manager, executive, or business owner, this is one of the most recurring and perplexing situations you’ll face. Should you prepare an one-on-one meeting agenda ahead of time? Does it feel too stiff to do so? Should you simply have general meetings topics ready to go? What are the questions you should asking during this one-on-one?We posed this dilemma to The Watercooler, our online leadership community with almost 500 leaders from all over the world, to see what they had to say. From that conversation, I’ve shared what these managers, business owners, and executives from The Watercooler have found to be the best questions to ask during a one-on-one meeting.Take a look and see if you agree…#1: How’s life?On the surface, this doesn’t seem like a significant question to ask. After all, some managers default to asking this question as a crutch when they’re not sure how to open up a one-on-one meeting. However, this question can be actually quite powerful, if you can embrace a greater intention behind it: To build trust. When asked, most Watercooler members agreed on the importance of having trust and a strong personal rapport going into the one-on-one. The more you know about a coworker’s dreams, hobbies, pets, children’s names, etc., the greater the sense of trust is. And the greater the trust, the easier a tough conversation is. As a result, many managers from theWatercooler kick off their one-on-one with a “get-know-you” question like, “How’s life?” or “How’s [insert spouse’s name]?” or “What are you up to this weekend?”One manager in particular emphasized the importance of talking about life outside of work way before you even have the one-on-one. That way, you build a foundation of trust to use if you need to bring up a difficult topic during your one-on-one. Prior to a one-on-one, here are some of the top 25 get-to-know you questions that can help with this.#2: What are you worried about right now?During a one-on-one, you want to figure if there’s anything bothering an employee, before it’s too late and they decide to leave or their performance is affected. Few questions do that an well as as this one. Recommended by a few of the Watercooler members (and a question I regularly asking during my one-on-ones), this question can help unearth the deep-seated concerns, confusion, or uncertainty an employee might be facing. A slight variation to this question that may unearth even more specific answers is: “When’s the last time you were worried about something?” This question is rooted in a specific moment of tension that can help make it more concrete for an employee when reflecting on if there’s something they might be worried about.#3: What rumors are you hearing that you think I should know about?Asking this question can bring to light rumors that you can dispel before they spin out of control. But on top of that, as one Watercooler member said: “What the rumor mill is saying is also often a compass pointing to places where people feel stressed.” Ask this question to uncover a deeper, disconcerting source of unease or frustration for employees. You’ll want to pay attention to that.For one Watercooler member, asking this question had a direct effect on her entire team’s morale: She was able to nip a rumor in the bud very quickly about why an employee was fired.#4: If you could be proud of one accomplishment between now and next year, what would it be?To get a coworker thinking about their personal goals over the next six months, as well as their long-term careers, one manager in The Watercooler recommended asking this question. You may not get a meaningful response every single time from every employee you pose it to, as some employees may find it difficult to answer on-the-spot. However, it’s a great way to spark the initial conversation with an employee about future goals. Not to mention, it’s a more thoughtful question than simply asking, “What goals do you have for yourself?”#5: What are your biggest time wasters?No one likes to waste time. Few feelings are as stifling and demoralizing, especially in a work setting. As a result, asking this question during a one-on-one is imperative. Once you ask this question, be prepared to think on and follow with concrete ideas for how you think that person’s time won’t be wasted.#6: Would you like more or less direction from me?Feeling micromanaged is often another source of stress for an employee — and it’s one of the most common. As a manager, it can easily to unintentionally give an employee too much guidance. At the same time, employees find it equally frustrating when they’re hung out to dry with no support. When you ask this question, you can then adjust your management style and techniques. Furthermore, asking this question also signals to your coworker that you recognize the value of providing the right level of support as a manager. As a leader, this question shows you’re self-aware.#7: Would you like more or less feedback on your work? If so, what additional feedback would you like?Watercooler members suggest asking this question, because you’re most-likely going to get a resounding “yes.” After surveying hundreds of companies and thousands of employees through Know Your Company, we’ve found that 80% of employees say, “I want more feedback about my performance.” Your one-on-one is the perfect opportunity to figure out exactly what kind of feedback someone would like.#8: Are there any decisions you’re hung up on?One of the best ways to help coach an employee is to give them some support on a decision that they’re wrestling with. They could be quite distraught because they’re not sure with path to take — and you can help. Asking this question during the one-on-one is a wonderful way to alleviate the potential pain they may be feeling around a tough decision.Whether your one-on-ones are weekly, once a month, or once a quarter, I’d highly encourage you to place one or two of these questions in your typical meeting agenda. Based on the experiences of Watercooler members who’ve asked these questions, you’re guaranteed to learn something new and create a stronger rapport with your team.Looking for a few more resources on how to have a productive one-on-one?Here’s the one question I would NOT asking during a one on one.Here’s how to have an honest one-on-one with an employee.Here’s how to prepare for a one-on-one as an employee.P.S.: Please feel free to share + give this piece 👏 so others can find it too. Thanks 😄 (And you can always say hi at @cjlew23.)The 8 best questions to put on your next one-on-one meeting agenda was originally published in Signal v. Noise on Medium, where people are continuing the conversation by highlighting and responding to this story.


Source: 37signals


On Startup Integrity


When my brother and I first started putting things together for a new project we didn’t sit down and make any grand mission or vision statement(s)… we didn’t right down any value systems or anything that you could print out on paper and hang on a wall.
We didn’t do any of that… instead, we just started building.

Along the way we began to build out systems and processes and workflows that mirrored the what we each brought to the table. These include both our strengths and our weaknesses, naturally.
The beautiful thing about super early-stage is that you both know what you’re doing and you also understand that, at the exact same time, one does not really have any idea around what one is doing.
All you know is that you need to survive the experiments through sheer force of will, execution, and patience. The results will illumine themselves in time and if they don’t then you try again, or, you try a different approach.
And hopefully, in time, one approach will actually end up working.
You know it when you see it.
Along the way, of course, you do everything you can to maintain your sanity, your health, and a lifestyle that’s meaningful and presently rewarding.
You do what you can do maintain (and even build and solidify) the things that ultimately matter and the underlying principles and philosophies that govern your behavior.
As an adult, most of these things have already crystalized – not completely, perhaps, but, the foundation(s) are certainly already there. The unspoken mantras and internal dialogues that dictate one’s behavior, attitude, and treatment of others.
Not all of them are good or useful to building a business and some of them, at times, can seem to hamper or even “get in the way” of a startup’s velocity. One of the most common startup “white lies” is to inflate statistics of growth and reduce (or simply omit) any of the hiccups that are always occurring.
We have grown 100% week-over-week!
This feels very different than the more complete picture which might be:
We have grown 100% week-over-week but we are also paying for this growth and at this rate will be out of cash in 30 days.
The problem is that both statements are true… it’s just the second one is more true.
What we do in private will eventually, inevitably, appear in public. This is just the nature of integrity. No, not the moral uprightness but rather the state of being whole and undivided.
Even a convicted murderer has integrity when they have fully embraced all that is required to commit those acts and is also wholly aware of the costs of their behavior. The national sovereignty of North Korea and their leader act in full integrity as governed by their history and culture.
Our seen behavior is a reflection of our unseen behavior, attitude, and principles. If a startup founder and their team act one way in private but in a distinctly different way in public then it will not end well. There are too many examples to give here that most of us know about.
When you start a company you bring all of those things and they become the internal engine that powers the system. The more you know about the engine(s) themselves the more you can operate maximally as you know the strengths, weaknesses, and opportunities for improvement and growth.
This is why it’s paramount that you choose the best people to work with and that’s why I make it a point to decide and commit to a person(s) before a project. If I can’t get along with my cofounders or early team members then my life will be nothing short of miserable.
This is also why I take time to work with folks before the commitment is finalized. These trial periods allow me to observe and understand what lies beneath the surface before I sign my name (and life) away for a season with them.
Why? Because integrity is much easier to say than to actually understand. I have met a lot of people who, at first, seemed amazing. A few months later (or even weeks later…) I have a much more empirical and educated perspective.
I don’t leave these relationships too disappointed; I’m just glad I didn’t commit too early. The metaphor of dating and marriage as it relates to startup founding is apt because that’s exactly what it is. You’d never marry someone you just met… or at least without dating for a serious amount of time, right? Then don’t do that with a startup!
As you grow and build out your product and services you begin, hopefully sooner rather than later, to also acquire customers and a larger community.
They will also, in time, see what’s really going on under-the-covers and what was once just private dialogues seem to magically manifest themselves in how the startup treats these customers. Again, I believe this to be inevitable.
Peter and I are not even a full year into our new venture but we’ve got a fantastic group of early customers and community that has begun to see the “cracks,” the behind-the-scenes of what’s really going on.
And we’re so grateful that they do because if it’s inevitable then I’d rather have it come out now instead of later.
Startup integrity is not a hard thing to understand and it’s not a complicated set of rituals or practices. It is simply you, as an individual and then the aggregate of the other founder’s beliefs and behaviors.
This “soup” mix is all you’ve got and you hope and pray that it’ll be enough to get you to the very end. The choose is, as always, yours and mine.
The post On Startup Integrity appeared first on John Saddington.
Source: https://john.do/


More blogging and less social media


Happy New Year! 2017 was a busy and eventful year – both professionally and personally. In many ways, 2017 was the most challenging and best year to date. I'm excited about 2018 and optimistic about what it has in store.
I wanted to thank you all for reading my blog in 2017. Entering 2018, I plan on setting a New Years' resolution of using social media less, and blogging more.
I've been blogging for over 12 years and have been using social media for about 10. Both are black holes for content, however, I feel that blog content at least has a chance to "survive". My blog posts have made a bigger impact than my social media posts. It's not just me. I've seen many bloggers get sucked into social media. Many of them stopped blogging altogether, and they've lost their impact.
Blogging also helps me clarify my thoughts and deepen my thinking. The consistent practice of blogging has helped me grow. Social media doesn't encourage the same kind of deep thinking or thoughtfulness, and as a result, hasn't provided me the same personal growth.
This too, seems to be a universal phenomena. President Donald Trump has infamously relied on Twitter to communicate everything from policy decisions to mockery of opponents. He went so far to call the nuclear-armed Kim Jong Un short and fat on Twitter. This level of recklessness would be harder to accomplish in a long-form blog post on Whitehouse.gov.
Last but not least, the large, centralized social media companies don't sit well with me anymore. It's undeniable that these companies have provided a forum for people to connect and share information, and in many ways they've had a huge impact on human rights and civil liberties. However convenient or impactful they may be, their scale, influence and lack of transparency is of growing concern. In the summer of 2015, I predicted that their data privacy issues and lack of transparency were going to come to a head in the next five to ten years. It didn't take that long – Facebook's unsavory involvement in shaping public opinion started to turn the tide against them in 2017.
We can't have a handful of large platform companies control what people read. When too few organizations control the media and flow of information, we must be concerned. If we allow that to happen, we risk losing what has made the web the most important network in history – a decentralized platform that enables anyone to have a voice.
The web we build today will be the foundation for generations to come and it needs to remain decentralized. It's true that a decentralized web is harder to build and more difficult to use. Frankly, it will be difficult for the open web to win without better data portability, more regulatory oversight, better integrations, and more innovation and collaboration.
At the end of the day, I want to be part of the change that I wish to see in the world. To support this vision, I want to build my audience here, on my blog, on the edge of the internet, rather than on centralized platforms that are outside of my control. So going into 2018, expect me to blog more, and use social media less.
Source: Dries Buytaert www.buytaert.net


V6: Typography and Proportions

Here’s a good ol’ fashion blog post by Rob Weychert where he looks into the new design system that he implemented on his personal website and specifically the typographic system that ties everything together:

According to the OED, a scale is “a graduated range of values forming a standard system for measuring or grading something.” A piece of music using a particular scale—a limited selection of notes with a shared mathematic relationship—can effect a certain emotional tenor. Want to write a sad song? Use a minor scale. Changed your mind? Switch to a major scale and suddenly that same song is in a much better mood.
Spatial relationships can likewise achieve a certain visual harmony using similar principles, and the constraints a scale provides take a lot of the arbitrary guesswork out of the process of arranging elements in space. Most of what I design that incorporates type has a typographic scale as its foundation, which informs the typeface choices and layout proportions. The process of creating that scale begins by asking what the type needs to do, and what role contrasting sizes will play in that.

Direct Link to Article — Permalink
V6: Typography and Proportions is a post from CSS-Tricks
Source: CssTricks


An update on the Workflow Initiative for DrupalCoin Blockchain 8.4/8.5

Over the past weeks I have shared an update on the Media Initiative and an update on the Layout Initiative. Today I wanted to give an update on the Workflow Initiative.
Creating great software doesn't happen overnight; it requires a desire for excellence and a disciplined approach. Like the Media and Layout Initiatives, the Workflow Initiative has taken such an approach. The disciplined and steady progress these initiative are making is something to be excited about.
8.4: The march towards stability
As you might recall from my last Workflow Initiative update, we added the Content Moderation module to DrupalCoin Blockchain 8.2 as an experimental module, and we added the Workflows module in DrupalCoin Blockchain 8.3 as well. The Workflows module allows for the creation of different publishing workflows with various states (e.g. draft, needs legal review, needs copy-editing, etc) and the Content Moderation module exposes these workflows to content authors.
As of DrupalCoin Blockchain 8.4, the Workflows module has been marked stable. Additionally, the Content Moderation module is marked beta in DrupalCoin Blockchain 8.4, and is down to two final blockers before marking stable. If you want to help with that, check out the Content Moderation module roadmap.
8.4: Making more entity types revisionable
To advance DrupalCoin Blockchain's workflow capabilities, more of DrupalCoin Blockchain's entity types needed to be made "revisionable". When content is revisionable, it becomes easier to move it through different workflow states or to stage content. Making more entity types revisionable is a necessary foundation for better content moderation, workflow and staging capabilities. But it was also hard work and took various people over a year of iterations — we worked on this throughout the DrupalCoin Blockchain 8.3 and DrupalCoin Blockchain 8.4 integrationcycle.
When working through this, we discovered various adjacent bugs (e.g. bugs related to content revisions and translations) that had to be worked through as well. As a plus, this has led to a more stable and reliable DrupalCoin Blockchain, even for those who don't use any of the workflow modules. This is a testament to our desire for excellence and disciplined approach.
8.5+: Looking forward to workspaces
While these foundational improvements in DrupalCoin Blockchain 8.3 and DrupalCoin Blockchain 8.4 are absolutely necessary to enable better content moderation and content staging functionality, they don't have much to show for in terms of user experience changes. Now a lot of this work is behind us, the Workflow Initiative changed its focus to stabilizing the Content Moderation module, but is also aiming to bring the Workspace module into DrupalCoin Blockchain core as an experimental module.
The Workspace module allows the creation of multiple environments, such as "Staging" or "Production", and allows moving collections of content between them. For example, the "Production" workspace is what visitors see when they visit your site. Then you might have a protected "Staging" workspace where content editors prepare new content before it's pushed to the Production workspace.
While workflows for individual content items are powerful, many sites want to publish multiple content items at once as a group. This includes new pages, updated pages, but also changes to blocks and menu items — hence our focus on making things like block content and menu items revisionable. 'Workspaces' group all these individual elements (pages, blocks and menus) into a logical package, so they can be prepared, previewed and published as a group. This is one of the most requested features and will be a valuable differentiator for DrupalCoin Blockchain. It looks pretty slick too:

I'm impressed with the work the Workflow team has accomplished during the DrupalCoin Blockchain 8.4 cycle: the Workflow module became stable, the Content Moderation module improved by leaps and bounds, and the under-the-hood work has prepared us for content staging via Workspaces. In the process, we've also fixed some long-standing technical debt in the revisions and translations systems, laying the foundation for future improvements.
Special thanks to Angie Byron for contributions to this blog post and to Dick Olsson, Tim Millwood and Jozef Toth for their feedback during the writing process.
Source: Dries Buytaert www.buytaert.net


An update on the Workflow Initiative for DrupalCoin Blockchain 8.4/8.5

Over the past weeks I have shared an update on the Media Initiative and an update on the Layout Initiative. Today I wanted to give an update on the Workflow Initiative.
Creating great software doesn't happen overnight; it requires a desire for excellence and a disciplined approach. Like the Media and Layout Initiatives, the Workflow Initiative has taken such an approach. The disciplined and steady progress these initiative are making is something to be excited about.
8.4: The march towards stability
As you might recall from my last Workflow Initiative update, we added the Content Moderation module to DrupalCoin Blockchain 8.2 as an experimental module, and we added the Workflows module in DrupalCoin Blockchain 8.3 as well. The Workflows module allows for the creation of different publishing workflows with various states (e.g. draft, needs legal review, needs copy-editing, etc) and the Content Moderation module exposes these workflows to content authors.
As of DrupalCoin Blockchain 8.4, the Workflows module has been marked stable. Additionally, the Content Moderation module is marked beta in DrupalCoin Blockchain 8.4, and is down to two final blockers before marking stable. If you want to help with that, check out the Content Moderation module roadmap.
8.4: Making more entity types revisionable
To advance DrupalCoin Blockchain's workflow capabilities, more of DrupalCoin Blockchain's entity types needed to be made "revisionable". When content is revisionable, it becomes easier to move it through different workflow states or to stage content. Making more entity types revisionable is a necessary foundation for better content moderation, workflow and staging capabilities. But it was also hard work and took various people over a year of iterations — we worked on this throughout the DrupalCoin Blockchain 8.3 and DrupalCoin Blockchain 8.4 integrationcycle.
When working through this, we discovered various adjacent bugs (e.g. bugs related to content revisions and translations) that had to be worked through as well. As a plus, this has led to a more stable and reliable DrupalCoin Blockchain, even for those who don't use any of the workflow modules. This is a testament to our desire for excellence and disciplined approach.
8.5+: Looking forward to workspaces
While these foundational improvements in DrupalCoin Blockchain 8.3 and DrupalCoin Blockchain 8.4 are absolutely necessary to enable better content moderation and content staging functionality, they don't have much to show for in terms of user experience changes. Now a lot of this work is behind us, the Workflow Initiative changed its focus to stabilizing the Content Moderation module, but is also aiming to bring the Workspace module into DrupalCoin Blockchain core as an experimental module.
The Workspace module allows the creation of multiple environments, such as "Staging" or "Production", and allows moving collections of content between them. For example, the "Production" workspace is what visitors see when they visit your site. Then you might have a protected "Staging" workspace where content editors prepare new content before it's pushed to the Production workspace.
While workflows for individual content items are powerful, many sites want to publish multiple content items at once as a group. This includes new pages, updated pages, but also changes to blocks and menu items — hence our focus on making things like block content and menu items revisionable. 'Workspaces' group all these individual elements (pages, blocks and menus) into a logical package, so they can be prepared, previewed and published as a group. This is one of the most requested features and will be a valuable differentiator for DrupalCoin Blockchain. It looks pretty slick too:

I'm impressed with the work the Workflow team has accomplished during the DrupalCoin Blockchain 8.4 cycle: the Workflow module became stable, the Content Moderation module improved by leaps and bounds, and the under-the-hood work has prepared us for content staging via Workspaces. In the process, we've also fixed some long-standing technical debt in the revisions and translations systems, laying the foundation for future improvements.
Special thanks to Angie Byron for contributions to this blog post and to Dick Olsson, Tim Millwood and Jozef Toth for their feedback during the writing process.
Source: Dries Buytaert www.buytaert.net


Project Empathy: the Hows and Whys

When I became a project manager some ten years ago, my career mentor told me that to be successful, a project manager needs to be “empathetic.”
I did not pay much attention to his advice at the time, but now I realize that being empathetic towards a project allows a manager to overcome many challenges she might face in the course of launching a particular project or product. Here’s my take on how to achieve “Project Empathy” and why it is important.
What is Project Empathy?
Having empathy for a project sounds odd, but it’s a useful idea. It means treating a project as if it were a living thing, with feelings and emotions.
Think about it: a project is made up of its team. If the bond among team members is high, the overall emotional quotient of team will be high too -- and as a PM, your task will be half done.
Here's an example from my career, quoting from my journal:
Was working on a Facebook application for a client. My team was fairly new. Project & team were nervous around its implementation. This is when I knew that I needed to jump in, understand the tone of project, and its demands. For me, it was like taking care of a friend who is undergoing rough patch. And we actually came out with flying colors as it was amongst our most sought-after case studies later.
This approach might sound unconventional, but this way of thinking can be a real help for a project manager and her entire team. The manager can go forward with a more conventional approach and still be successful, but in my experience “Project Empathy” raises the chances of bringing a project to successful conclusion. It not only instills team enthusiasm but also creates an overall atmosphere of collaboration.
In one of my latest projects’ initial days, I could sense the conflicts amongst technical folks. The team was feeling choked and could not speak up. This was not only affecting the productivity but also the quality of project too. I took the team members out individually over coffee, tried to understand their blockers in detail, cleared a few of them and acknowledged the hard work they were putting in. This not only instilled enthusiasm, but also the results were right there in front of me, as we were able to pull it off before the deadline. This project was the first where I first experimented with having a few stand-ups over coffee. Such unconventional approaches definitely keep the project pulse normal.
Before the project begins, have faith
The project manager is the main pillar of any project. She must have faith in herself, her team, and an understanding of why the project is being started. Whether the project is small or big, if the project manager doesn’t believe in its importance, she won’t be able to make her team believe in it either.
Value the project and make others value it too
At any project’s launch, the project manager needs to understand its objectives—and also its “needs and desires.”
What does a project desire? It usually wants good communication, transparency, collaboration, trust, and -- above all -- enthusiasm that we will cross this as one, whatever comes.
The functional, objective part is a given, but Project Empathy deals with the emotional part. We are considering the project as a living thing, almost human. Just like a person, a project must “feel” important, and the team must treat it that way.
To deal with the project’s requirements, the team needs to understand how valuable the project is, and what hopes and dreams it has. Each team member on the project needs to be aligned on the holistic outcome from the project. This not only motivates them, but also let them know that they are part of something meaningful instead of just few lines of code. Once the team understands this, they will make the right decisions and meaningful choices. There have been instances when my junior-most team members shared their observations before actual implementation. And when I raised these with the client, they liked the whole approach. This would not have been possible, if during kick-off calls, I would not have invited full team and aligned them with the intent of doing that project.
Stay enthusiastic. Don’t lose hope!
Throughout the project, the project manager must maintain enthusiasm, for herself and for her team. The group must continue to talk about the project’s importance and keep Project Empathy at the top of their minds. This lays the foundation for when the team begins to lose faith or gets tired. When enthusiasm starts to dry up, the project manager must repeat the same words to herself, and to the team, and not allow small obstacles to stop them from creating something that will be a source of great pride. She may even take the team out and acknowledge the good work they are doing on project so far.
Expect dark times but stay empathetic
There will often be times when a project seems to be slipping: there’s a budget cut, or a change in stakeholders, or a timeline shift. This is the time for Project Empathy to come into action! These instances might discourage the team, and the project manager might herself start to feel less enthusiastic about the project. That is when she needs to remind her team why they started the project in the first place, to recall its value that was evident during the earlier better days. She has to remind herself and her to have “empathy” for the project.
It might be hard to empathize with the project instead of the aligning with the dissatisfaction that the team is feeling. The project manager might find herself in the trap of complaining alongside her teammates about how awful things are, about the cuts in the timeline, and other annoying changes. It becomes easier to harbor those wearisome thoughts, especially when she has to ask the team for unpleasant favors, say, working on a weekend. She might find herself wishing that the project ends soon so she won’t have to worry about it anymore. But that sort of thinking only sabotages the project and makes the teammates feel even worse about finishing their work.
Once the manager thinks of the project as a living thing, she won’t want to stay on negative thoughts or complain to her team. This is where the essence of Project Empathy lies.
An empathetic manager gains more attention from her teammates. Many productivity issues get resolved when the team finds they have a manager who works on their concerns and understands them. An empathetic PM always instills a sense of accountability and ownership among her team members. With each project event, all stakeholders will find themselves more invested in the project. Overall relationships improve, and teammates feel attached to working on the project.
Developing Project Empathy is a skill that evolves with experience, over time, but it can result in people with very different personalities working together in the best possible way.
Source: http://dev.acquia.com/


ARIA is Spackle, Not Rebar

Much like their physical counterparts, the materials we use to build websites have purpose. To use them without understanding their strengths and limitations is irresponsible. Nobody wants to live in an poorly-built house. So why are poorly-built websites acceptable?
In this post, I'm going to address WAI-ARIA, and how misusing it can do more harm than good.

Materials as technology
In construction, spackle is used to fix minor defects on interiors. It is a thick paste that dries into a solid surface that can be sanded smooth and painted over. Most renters become acquainted with it when attempting to get their damage deposit back.
Rebar is a lattice of steel rods used to reinforce concrete. Every modern building uses it—chances are good you'll see it walking past any decent-sized construction site.
Technology as materials
HTML is the rebar-reinforced concrete of the web. To stretch the metaphor, CSS is the interior and exterior decoration, and JavaScript is the wiring and plumbing.
Every tag in HTML has what is known as native semantics. The act of writing an HTML element programmatically communicates to the browser what that tag represents. Writing a button tag explicitly tells the browser, "This is a button. It does buttony things."
The reason this is so important is that assistive technology hooks into native semantics and uses it to create an interface for navigation. A page not described semantically is a lot like a building without rooms or windows: People navigating via a screen reader have to wander around aimlessly in the dark and hope they stumble onto what they need.
ARIA stands for Accessible Rich Internet Applications and is a relatively new specification developed to help assistive technology better communicate with dynamic, JavaScript-controlled content. It is intended to supplement existing semantic attributes by providing enhanced interactivity and context to screen readers and other assistive technology.
Using spackle to build walls
A concerning trend I've seen recently is the blind, mass-application of ARIA. It feels like an attempt by developers to conduct accessibility compliance via buckshot—throw enough of something at a target trusting that you'll eventually hit it.
Unfortunately, there is a very real danger to this approach. Misapplied ARIA has the potential to do more harm than good.
The semantics inherent in ARIA means that when applied improperly it can create a discordant, contradictory mess when read via screen reader. Instead of hearing, "This is a button. It does buttony things.", people begin to hear things along the lines of, "This is nothing, but also a button. But it's also a deactivated checkbox that is disabled and it needs to shout that constantly."
If you can use a native HTML element or attribute with the semantics and behavior you require already built in, instead of re-purposing an element and adding an ARIA role, state or property to make it accessible, then do so.
– First rule of ARIA use
In addition, ARIA is a new technology. This means that browser support and behavior is varied. While I am optimistic that in the future the major browsers will have complete and unified support, the current landscape has gaps and bugs.
Another important consideration is who actually uses the technology. Compliance isn't some purely academic vanity metric we're striving for. We're building robust systems for real people that allow them to get what they want or need with as little complication as possible. Many people who use assistive technology are reluctant to upgrade for fear of breaking functionality. Ever get irritated when your favorite program redesigns and you have to re-learn how to use it? Yeah.
The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect.
– Tim Berners-Lee
It feels disingenuous to see the benefits of the DRY principal of massive JavaScript frameworks also slather redundant and misapplied attributes in their markup. The web is accessible by default. For better or for worse, we are free to do what we want to it after that.
The fix
This isn't to say we should completely avoid using ARIA. When applied with skill and precision, it can turn a confusing or frustrating user experience into an intuitive and effortless one, with far fewer brittle hacks and workarounds.
A little goes a long way. Before considering other options, start with markup that semantically describes the content it is wrapping. Test extensively, and only apply ARIA if deficiencies between HTML's native semantics and JavaScript's interactions arise.
Development teams will appreciate the advantage of terse code that's easier to maintain. Savvy developers will use a CSS-Trick™ and leverage CSS attribute selectors to create systems where visual presentation is tied to semantic meaning.
input:invalid,
[aria-invalid] {
border: 4px dotted #f64100;
}
Examples
Here are a few of the more common patterns I've seen recently, and why they are problematic. This doesn't mean these are the only kinds of errors that exist, but it's a good primer on recognizing what not to do:
<li role="listitem">Hold the Bluetooth button on the speaker for three seconds to make the speaker discoverable</li>
The role is redundant. The native semantics of the li element already describe it as a list item.
<p role="command">Type CTRL+P to print
command is an Abstract Role. They are only used in ARIA to help describe its taxonomy. Just because an ARIA attribute seems like it is applicable doesn't mean it necessarily is. Additionally, the kbd tag could be used on "CTRL" and "P" to more accurately describe the keyboard command.
<div role="button" class="button">Link to device specifications</div>
Failing to use a button tag runs the risk of not accommodating all the different ways a user can interact with a button and how the browser responds. In addition, the a tag should be used for links.
<body aria-live="assertive" aria-atomic="true">
Usually the intent behind something like this is to expose updates to the screen reader user. Unfortunately, when scoped to the body tag, any page change—including all JS-related updates—are announced immediately. A setting of assertive on aria-live also means that each update interrupts whatever it is the user is currently doing. This is a disastrous experience, especially for single page apps.
<div aria-checked="true"></div>
You can style a native checkbox element to look like whatever you want it to. Better support! Less work!
<div role="link" tabindex="40">
Link text
</div>
Yes, it's actual production code. Where to begin? First, never use a tabindex value greater than 0. Secondly, the title attribute probably does not do what you think it does. Third, the anchor tag should have a destination—links take you places, after all. Fourth, the role of link assigned to a div wrapping an a element is entirely superfluous.
<h2 class="h3" role="heading" aria-level="1">How to make a perfect soufflé every time</h2>
Credit is where credit's due: Nicolas Steenhout outlines the issues for this one.
Do better
Much like content, markup shouldn't be an afterthought when building a website. I believe most people are genuinely trying to do their best most of the time, but wielding a technology without knowing its implications is dangerous and irresponsible.
I'm usually more of a honey-instead-of-vinegar kind of person when I try to get people to practice accessibility, but not here. This isn't a soft sell about the benefits of developing and designing with an accessible, inclusive mindset. It's a post about doing your job.
Every decision a team makes affects a site's accessibility.
– Laura Kalbag
Get better at authoring
Learn about the available HTML tags, what they describe, and how to best use them. Same goes for ARIA. Give your page template semantics the same care and attention you give your JavaScript during code reviews.
Get better at testing
There's little excuse to not incorporate a screen reader into your testing and QA process. NVDA is free. macOS, Windows, iOS and Android all come with screen readers built in. Some nice people have even written guides to help you learn how to use them.
Automated accessibility testing is a huge boon, but it also isn't a silver bullet. It won't report on what it doesn't know to report, meaning it's up to a human to manually determine if navigating through the website makes sense. This isn't any different than other usability testing endeavors.
Build better buildings
Universal Design teaches us that websites, like buildings, can be both beautiful and accessible. If you're looking for a place to start, here are some resources:

A Book Apart: Accessibility for Everyone, by Laura Kalbag
egghead.io: Intro to ARIA and Start Building Accessible Web Applications Today, by Marcy Sutton
Google Developers: Introduction to ARIA, by Meggin Kearney, Dave Gash, and Alice Boxhall
YouTube: A11ycasts with Rob Dodson, by Rob Dodson
W3C: WAI-ARIA Authoring Practices 1.1
W3C: Using ARIA
Zomigi: Videos of screen readers using ARIA
Inclusive Components, by Heydon Pickering
HTML5 Accessibility
The American Foundation for the Blind: Improving Your Website's Accessibility
Designing for All: 5 Ways to Make Your Next Website Design More Accessible, by Carie Fisher
Accessible Interface Design, by Nick Babich

ARIA is Spackle, Not Rebar is a post from CSS-Tricks
Source: CssTricks


Cut the Noise - Five Slack Features You Need to Use

Slack is a core part of my day-to-day. It's the tool that I spend the most time in and it's how I handle all internal communication, including project, team, and company discussions, from 1:1 conversations to group chats. It's increasingly become a primary client communication tool, as well. 
With so many purposes and so many participants, it can be challenging to not only stay on top of Slack discussions but balance meetings, communication in other tools (Basecamp, Github, email), and work itself. I've found these five features to be key in cutting through the noise and making Slack a valuable communication tool:
/leave
This one's going to earn me some 👋  reactions, I know, I know. I'm still going do it though, and here's why: It's important for me to be present in project channels and client teams when I'm playing an active role. When that time has passed, though, I've found that I can reduce Slack noise simply by leaving channels that I no longer need to be a part of. Sure, I could stay in every channel and try and follow along on what's happening on every project, but the time required to keep up isn't met by a large reward. I'm better served by clearing my Slack (and my brain) and allowing teams to loop me back in when necessary.
/mute
Not ready to commit to /leave or fear the public shaming that comes with that exit? Mute might be more your speed. Mute allows you to temporarily silence a distracting channel so that you can return when you're ready.
/star
This is a crucial one for me, and I don't give out my stars lightly. A starred channel is one that I prioritize first and one that needs my most immediate attention. I try and keep my Starred Channels list to 10-15 channels. Then, when I'm focused on Slack, I can tackle unread activity in those channels first.
/remind
See something on Slack but know you can't tackle it right away? /remind allows you to set a reminder of your choosing, and it's a great way to quickly snooze something for future you to address.
Command + Shift + K
The Direct Messages menu is a lifesaver for me in those moments where I know I saw a message from someone while I was [insert multitasking activities here], and I simply can't remember who it was from or what it was about. This menu shows your most recent DMs, so you can easily catch up on your latest conversations. No more lost messages.
Bonus: Notification Preferences
Setting up notification preferences that work for you is the foundation for any good Slack setup, so spend some time getting familiar with the available options. You can customize your notification preferences at channel and team levels. You can also set different preferences for desktop versus mobile. I personally don't like a ton of notifications because I'm in Slack so frequently, so I choose to set them carefully. I like notifications for direct messages, mentions, and keywords in client teams, which I have pushed to mobile if I've been inactive on my desktop for a few minutes. I don't get notifications at all on my desktop for the Viget team. I rely on the badge icon to let me know when there's a DM or mention that needs my attention. Find what works for you and don't be afraid to adjust it over time. Notifications don't need to be a set it and forget it feature.
These features, combined with these preferences, are the key to my Slack sanity. They help me stay on top of the most relevant discussions without feeling overwhelmed by the noise and activity happening across channels and teams.


Source: VigetInspire


A Kotlin long-term update: calm, peaceful, and productive

It’s kind of hard to believe, but we’ve been writing Kotlin at Basecamp for 20 months now! And with the first ever KotlinConf starting tomorrow, it felt like a good time to reflect on my time with Kotlin.When I first started off with Kotlin, I was a bit…excitable. I was blown away by all the incredible things it could do. Compared to Java, it made my life so much easier and I was just much happier working with it. I was so excited to be learning this shiny new tech that I would tell anyone that would listen about all its wonders.Now, almost two years in, things are different — in a good way.The big thing is that I’m (mostly) past the initial “holy shit this is awesome” moments of discovery when you first come over from Java — finding out about all those crazy things you can’t do in Java, all the fantastic niceties that become your favorites, and all the little things that save you tons of time. Of course I’m still learning new stuff regularly, but for the most part I’m not running into any huge surprises day to day.And so from that perspective Kotlin has become, well…uneventful. Wonderfully, lovably uneventful!At its best Kotlin is extraordinarily reliable, unfussy, and pragmatic.And while those words might not generate feelings of uncontainable excitement like I experienced at first, they paint an important picture of how awesome Kotlin is, deep down. They’re the things that really matter in a calm (and consequently a productive) work environment.It’s awesome that the language is rock solid stable after upgrades. It’s awesome that every feature has been thoughtfully considered and prioritized against practical, real-world uses. It’s awesome that JetBrains dedicated 5+ years to get to a incredibly stable 1.0.And it’s awesome that once you get the hang of it, Kotlin simply gets out of your way so you can get shit done, fast.At this point in my Kotlin journey, my daily workflow is calm, peaceful, and productive because it’s uneventful. I may not be shout-from-the-rooftops excited about every little Kotlin feature anymore, but that’s OK. What really matters most to me is that Kotlin is a rock solid, stable foundation for my work now and in the future. And that’s worth a lot when shipping good work is the one true reliable measure of success.Past and present aside, the future is bright too. The language is progressing at a fast clip (coroutines!), and the tooling around it is getting better every day. And perhaps most importantly, community involvement — blog posts, conference talks, Stack Overflow answers, and libraries — continues to expand rapidly too. These are exciting times!I’ve had so much fun over the past couple of years building Android apps, and Kotlin’s been a big part of that. The progression from initial excitement to calm productivity to looking ahead at its bright future has been an absolute blast. I cannot wait to see what’s in store for us at KotlinConf and beyond!If you enjoyed this post, please do hit the 👏 button below. Thanks!We’re hard at work making the Basecamp 3 Android app better every day (in Kotlin, of course). Check it out!A Kotlin long-term update: calm, peaceful, and productive was originally published in Signal v. Noise on Medium, where people are continuing the conversation by highlighting and responding to this story.


Source: 37signals


A Few Thoughts on Product Hunt’s New Ship Platform

I won’t lie… ProductHunt’s new SHIP platform looks dope af.
I’ve been eyeing it for quite some time and their launch intersects perfectly with two distinct projects that I’m working on. Last night, I finally had a moment to put it together:

Yoooo. It looks good yoooo.
You can check it out in-the-real here at TryGeorge.com. That magic temporary 302 htaccess redirect though…
I don’t have time for a comprehensive review of Product Hunt’s Ship Platform but I will share a few things off the top of my head…
So… What About the Time Commitment?
I was initially anxious about the time commitment and effort to put together my landing page.
Since I’m incredibly busy building the damn thing, I didn’t want to spend any more time than necessary and required for this type of thing. After getting over my initial anxiety I was able to sit down last night and bang it out in about 30 minutes (maybe less).
Thank you Jesus for simple tools.
Simple. Useful. Effective.
Well, I might as well show you the full “Upcoming Page” panel so you get a real taste of how simple it was:
Some scrolling action… but not bad at all.
I haven’t dived into really any of the other features so far so I’m not even close to an expert, but, what’s great is that I get the sense that you don’t have to be an expert to actually use the thing really well.
And that’s a super-positive thing.
And… So… What About The Cost?
I’m an indie app developer like many of the creators on Product Hunt (although many more institutions and enterprise organizations are using PH these days…) and costs are at the very forefront of our mind, every single day.
Every penny that we spend in marketing is one less penny that goes to the real stuff that matters, like rent, food, and clothing for myself and my kids (I’ve got two and one is hitting puberty soon… which means a ton of eating). I’m not being melodramatic or hyperbolic; let me explain…
You see, like many and most indie projects, George isn’t propped up by venture capital or by a personal “rainy day” fund for kicks. It’s built upon the framework and foundation of love and a desire to build stuff that matters. It’s built because I am trying to scratch my own itch, first, and then (courageously) give it to the rest of the world.
And, pragmatically-speaking, time spent building the app and any marketing collateral means time spent away from working on paying gigs, contracts, and for full-time employer(s). The struggle is real, yo.
That .
Consequently, when I look at the price for Product Hunt’s SHIP pricing page I, at first, audibly gasped (or, at least I think I did). What in the holy hell is this?!
But, I slept on it and after having a very decent cup of coffee from Philz on 24th and Folsom, I came back home and realized that the value that Product Hunt has created is well-worth the (ouch…!) monthly burn.
Okay… So, What Value?
Glad you asked.
So, the first thing is that the landing page and technology isn’t distinctly unique or special and as a software engineer I can honestly create this type of landing page in a few hours if given the time. Hell, I’ve done this so many times before…
But I didn’t want to spend a few hours designing a landing page… I wanted to first maximize my time on software and product development. Time equals money, for real.
But perhaps more importantly is the fact that Product Hunt has a built-in maker network and community that is near-priceless for a small-time indie app developer.
In the past, this was something that you had to earn over a long period of time and it is hard… like, really hard. It’s something that, historically, money couldn’t buy.
Yup. I did it.
But now, Product Hunt has figured out an obvious and easy way to sell their community to folks who need it. This may sound more negative than I intend it to sound, but, I obviously decided to participate in this copacetic and mutually-beneficial relationship.
The brass tacks is this: Product Hunt has an amazing community and network who loves trying out new apps and products. It needs creators (like you and me) to build them. It’s a relationship that needs both parties and both parties win when executed well.
If I can deliver a kickass product to a community that wants it then I’ll make back my investment in spades. The paper-napkin math checks out.
Okay, So, What You’re Saying Is…
So, what I’m saying is that I feel like the time invested in putting together my temporary landing page via SHIP feels like I’m way into the net-positive region, at least psychologically at this point.
The speed of execution (which is very, very important…), the relatively-low cost over value equation, and the elegance (I really do like the look, tbh…) makes this feel like a win-win-win.
It’s not for everyone and I deeply empathize with the cost figure(s), but, after having built and launched a handful of independent projects in the past (one of which has won Best Apps of the Year from Apple… twice!) Product Hunt’s SHIP platform has made this particular part of the launch process so much easier.
In fact… if I’m to be completely transparent here… and this is somewhat embarrassing… but, I spent more time penning this blog post than actually putting together the George’s Landing Page… FML.
I guess that’s the way it goes.

A Quick Update…
So, the last day has been very exciting as more and more folks are signing up to receive notifications! The early results have been so positive that I decided to spend a little bit of time last night launching a second project on the platform:
Cool Widget Action!
This one is called Crypto Yum and I’m using Ship’s very effective widget on a few pages.
As you can see here, if folks click it then expands:
More legit-ness!
Would love for you to check it out as well! Long-live Crypto Yum!
And if you want a larger overview of my thoughts, I’ve written a follow-up post here:
CryptoYum on Product Hunt Ship!

The post A Few Thoughts on Product Hunt’s New Ship Platform appeared first on John Saddington.
Source: https://john.do/