10up https://10up.com finely crafted websites and tools Sun, 22 Apr 2018 19:35:24 +0000 en-US hourly 1 https://wordpress.org/?v=4.9.5 10up supports WordCamp London https://10up.com/blog/2018/wordcamp-london-2018/ https://10up.com/blog/2018/wordcamp-london-2018/#respond Tue, 10 Apr 2018 15:01:15 +0000 https://10up.com/?p=19217 This weekend, catch me and 6 of my fellow 10uppers at WordCamp London 2018, an annual WordPress conference supported in part by our Academy Sponsorship. On Sunday, I’ll be talking about Applying Design To Complex Problems alongside one of our UK clients, Press Association. Later that afternoon, Front End Engineer Daine Mawer presents, “Developing WordPress for Limited Bandwidth.” Those taking a break from the sessions can stop by the 10up sponsor table and learn more our growing 10up Europe team.

]]>
https://10up.com/blog/2018/wordcamp-london-2018/feed/ 0
10up Engineering Practices now mandate baseline accessibility standards https://10up.com/blog/2018/engineering-practices-accessibility-standards/ https://10up.com/blog/2018/engineering-practices-accessibility-standards/#respond Fri, 30 Mar 2018 17:06:18 +0000 https://10up.com/?p=19195 W3C WCAG 2.0One year ago, the popular government policy magazine Open Access Government stated, “Accessibility for all is not an option – it’s a fundamental right.” Creating equal access to digital content, regardless of age, size, ability, or disability, has always been a priority for 10up; it is inseparable from our mission to make a better internet for everyone. Creating accessible interfaces for our projects is consistent with our commitment to the principles of Universal Design. Because of this, we have updated the accessibility standards contained in our Engineering Best Practices to require all projects to have a baseline accessibility compliance goal of WCAG 2.0 Level A.

The Web Content Accessibility Guidelines (WCAG) are a set of globally recognized and accepted standards that outline what it means to be compliant with accessibility standards and present interactions to a user without sacrificing clarity or information. These guidelines are broken out into three levels of increasingly rigorous standards: A, AA, and AAA. Each level corresponds to the level of compliance a product or site adheres to.

Level A is a pragmatic standard to set in our Best Practices, although we push for AA when budget and our control over design allows. This is because having control over design elements like color contrast and HTML in a responsive environment are critical to achieving AA compliance and may require more time for testing and iteration.

Some of the additions to the Engineering Best Practice include:

  • Time-based media requirements including video captions and audio transcripts
  • Keyboard accessibility for components, including focus order, link purpose, and the use of required bypass blocks
  • Proper use of color and iconography
  • Forms and error assistance
  • Ensuring all HTML elements and API implementations are aligned with the W3C specification.
  • Automated accessibility testing through Pa11y

To support this baseline for our Best Practices, all 10up projects are run through an automated accessibility check. Our internal choice for continuous accessibility testing is a command line tool called Pa11y. Pa11y allows for quick accessibility testing through the command line. This means we can run periodic tests on any site at any time as well as keeping an eye on compliance during the build process to ensure that accessibility is always in full view of the engineer.

For more information on accessibility at 10up, please visit our Engineering Best Practices documentation. Also, check out our Component Library which we built to be WCAG 2.0 A compliant as well

]]>
https://10up.com/blog/2018/engineering-practices-accessibility-standards/feed/ 0
10up contributes MathML support to Google AMP https://10up.com/blog/2018/contributing-google-amp-project/ https://10up.com/blog/2018/contributing-google-amp-project/#comments Wed, 14 Mar 2018 16:26:36 +0000 https://10up.com/?p=19069 Last year, we found ourselves implementing Google AMP for a client who often includes content with mathematical formulas. The formulas were implemented using the open MathML standard, by way of the open source, JavaScript-based MathJax engine. Working around AMP’s JavaScript restriction, we put the formulas into amp-iframe components, which allow for arbitrary JavaScript execution. This workaround posed some limitations that compromised the design: formulas could not be displayed inline (inside of a paragraph), creating a slightly awkward aesthetic that didn’t quite match up with the “full” site’s presentation.

As a regular open source contributor committed to making a better web, it seemed to me that a native AMP implementation of the MathML standard would solve our client’s layout problem and help other developers and site owners. After a bit of background research, I opened an issue on Google’s open source AMP HTML project.

With a prompt and warm welcome, Google’s team accepted my feature request. This being an open source project, I volunteered to help; my offer was greeted with enthusiasm and some tips.

Formulas in iFrames and in-line

After a little bit of digging, developing, and testing, I was able to render formulas in AMP, and opened a pull request (submitting my initial pass at a solution). Google’s Ali Ghassemi provided code reviews and suggestions, and consulted with the wider AMP team on implementation details like how to resize the component—an expectation complicated by the formulas sometimes taking a while to render. While I built out functionality and robust documentation, the AMP team helped with testing and validation.

After a few weeks of discussion, patches, and reviews, the pull request was accepted, and ‘amp-mathml’ is now an official AMP component. Next, I contributed a patch to the canonical WordPress AMP plugin, a final step required to roll out the feature for our client, which was quickly accepted.

Given the rising impact and importance of Google AMP, we want to applaud the supportive project team at Google, who is embracing the open source ethos with excellent organization and management.

Learn more about the AMP project and amp-mathml.

]]>
https://10up.com/blog/2018/contributing-google-amp-project/feed/ 2
Lucky number 7: 10up’s seventh year https://10up.com/blog/2018/10up-seven-year-anniversary/ https://10up.com/blog/2018/10up-seven-year-anniversary/#comments Mon, 12 Feb 2018 21:20:04 +0000 https://10up.com/?p=19130 10up turns 7

In our seventh year, we built on our investment in culture and storytelling by expanding our team and depth of services, and by redoubling our investments in open source and creativity.

We welcomed more than 30 new clients to our portfolio in another record sales year. We launched new websites along with web and mobile apps for major brands across verticals as diverse as finance, healthcare, academia, high-tech, big media, consumer packaged goods, food and beverage, and fitness… to name a few.

In a milestone event, we completed an acquisition of Lift UX, a boutique, Emmy-nominated agency that focused on user experience for design-driven websites powered by WordPress. Intended to strengthen our experience design expertise and resources, this investment added executive design leadership and expanded our portfolio of design stories.

A renewed approach to our All Hands Summit yielded our largest and most memorable team event to date. Held in Old San Juan, Puerto Rico, our team gathered from around the world to take over a former Carmelite convent for a week of learning, sharing, building memories together, uniting around company goals, and celebrating our successes. Among the conference highlights, we held our first client panel, featuring leaders from companies like Microsoft, McClatchy, and Beasley Radio sharing insights on agency partnerships.

We’re also proud of the major investments we made in open source and the web community in our seventh year:

We were also featured in Time.com Money’s “10 fully remote companies that are hiring. Joining team 10up means that—with reliable internet access and a drive to serve clients—you can work from anywhere in the world. Join us, and become a part of our story, as we march toward our 8th anniversary.

]]>
https://10up.com/blog/2018/10up-seven-year-anniversary/feed/ 2
Transforming text into a natural sounding podcast with Amazon Polly https://10up.com/blog/2018/text-to-podcast-amazon-polly/ https://10up.com/blog/2018/text-to-podcast-amazon-polly/#respond Fri, 09 Feb 2018 19:25:06 +0000 https://10up.com/?p=19082 Amazon Polly

Earlier this week one of our partners, WP Engine, released a plugin that leverages Amazon Polly to transform written content into lifelike speech, directly from WordPress. Being dedicated to helping our clients deliver great digital content experiences, we were eager to help pilot this integration with WP Engine by finding a launch partner. Collaborating with POLITICO in Europe, we transformed their daily political newsletters – Brussels Playbook and London Playbook – into engaging podcasts.

Here’s what POLITICO had to say about their new integration, in WP Engine’s press release:

“Our readers are digesting news and stories through their mobile and voice-driven devices more and more,” said Johannes Boege, Chief Product Officer at POLITICO in Europe. “This is a great opportunity for us along with our agency 10up to test the distribution of our content with voice technology. We are excited to use Amazon Polly to reach more people in new ways.”

If you want to check out the podcast, you can subscribe to the Brussels Playbook and London Playbook. If you’re a content creator interested in integrating forward-looking technologies like Amazon Polly, get in touch.

]]>
https://10up.com/blog/2018/text-to-podcast-amazon-polly/feed/ 0
Google Chrome to aggressively enforce Better Ad Standards https://10up.com/blog/2018/chrome-enforces-ad-standards/ https://10up.com/blog/2018/chrome-enforces-ad-standards/#comments Wed, 31 Jan 2018 18:42:08 +0000 https://10up.com/?p=19035 As announced in June, beginning February 15th Chrome will remove all ads on websites that do not meet the standards of the Coalition for Better Ads. Sites will have 30 days to address any issues flagged in Google’s compliance report before Chrome begins removing ads.

Google started this initiative in response to a report suggesting that poor ad experiences are responsible for a 30% increase in the use of ad blocking extensions across the web, which “reduces the ability for publishers to continue creating free content and threatens the sustainability of the web ecosystem.” Google is also on the board of the Coalition for Better Ad Standards.

The Coalition for Better Ads is made up of leading international trade associations and online media companies committed to supporting “valuable free content, robust journalism and social connections across the internet” through the use of online ads. Their vision for better online ads aligns with Google’s view, and led Google to join the effort to improve how people experience the web. Knowing that consumers are increasingly frustrated with web ads, the Coalition for Better Ads surveyed over 25,000 internet users to create a set of consumer-friendly standards. Google will apply these standards to review a subset of a site’s pages.

Google Ad Experience Report

If Google finds several instances of a site not meeting the standards, it will flag the site as “failing” in the Ad Experience Report. Mobile and desktop experiences are reviewed independently. When Google identifies a problem, an entry is added to the report with a “failing” status with details and a video explaining the specific issue. If the failing status is not addressed within 30 days, Chrome will filter out all ads. Once the issues are addressed, site owners must submit the issue for Google’s review; once the review status changes to “passing,” it can take up to 8 hours for ads to return. Because failures may result in a major loss of revenue for sites that depend on ads to sustain their business, it is vital that publishers familiarize themselves with the report.

10up is committed to the idea of an open web and the democratization of publishing. Protecting the consumer experience while preserving a business model empowering publishers of all sizes is crucial. Excessive and disruptive ad experiences are self-defeating, in that they push consumers to install ad blockers or toward closed, proprietary platforms compared to the open web – a view we’ve shared in previous ad blocking reports. Finding this balance between user experience and business need is imperative for open collaboration and the distribution of ideas on a “free” web.

If you run a site with programmatic ads we recommend a periodic review of the Ad Experience Report inside of Google’s Web Tools to ensure compliance. If you need support submitting your site for review and addressing any warnings or failures, or just want a team who will take care of all this for you proactively, get in touch.

]]>
https://10up.com/blog/2018/chrome-enforces-ad-standards/feed/ 1
New Relic features 10up plugin https://10up.com/blog/2018/new-relic-reporting/ https://10up.com/blog/2018/new-relic-reporting/#respond Mon, 15 Jan 2018 10:00:26 +0000 https://10up.com/?p=18984 New Relic has included our New Relic Reporting for WordPress plugin in New Relic Connect, a directory that collects recommended integrations for New Relic customers. This plugin makes important WordPress data available in New Relic APM and Insights. You can now see Post ID and User ID for logged-in transactions, theme and template information and more, along with your other application data. We hope this increased visibility will lead to more WordPress developers getting the most out of New Relic.

Learn more about the plugin or download it from GitHub.

]]>
https://10up.com/blog/2018/new-relic-reporting/feed/ 0
Improving WordPress Transients https://10up.com/blog/2018/improving-wordpress-transients/ https://10up.com/blog/2018/improving-wordpress-transients/#comments Mon, 08 Jan 2018 19:29:44 +0000 https://10up.com/?p=18979 Modern websites can be complex, especially when a high traffic site offers advanced features that need more intensive server processing. WordPress has a few tricks up its sleeve to help developers improve performance, but as we’ve written about before, those tricks don’t always scale.

If you’ve been engineering performant sites with WordPress, you’ve probably encountered the Transients API—a basic caching method. What developers may not know is, at scale, the synchronous way WordPress handles transients can lead to performance issues that can result in a poor user experience. That’s where Async Transients comes in, our open-source Composer library for WordPress transients.

Wait, what exactly is the problem here?

Transients are a way of caching data for a set amount of time in WordPress. Unlike storing data in the object cache, transient data is stored only temporarily, with the expectation that it is updated periodically. Transients are always created with a set maximum lifetime, after which they expire and are deleted.

However, as typically implemented, transient expiration can interfere with visitor experiences. If a visitor action requires transient data, WordPress checks to see if it is available. If it isn’t, the data is then fetched to recreate the missing transient. During this process, a visitor would have the suboptimal experience of waiting, potentially for several seconds, while the data is fetched. If 100 visitors all trigger the same transient request at the same time, WordPress will process all 100 requests concurrently. This synchronous data fetching causes increased server load, resulting in poor, slower site performance.

Our solution

Our Async Transients library remedies this issue by automating the transient update process. Instead of transients updating only when they are discovered missing, transient expiration times are monitored and, once expired, re-fetched in the background.

To avoid interruptions for site visitors during these data-fetching periods features requiring transients use slightly outdated data. Once the refreshed transients are fully processed, the data is updated behind the scenes.

The WordPress Transients API offers a simple way to temporarily store cached data in the database; our solution improves upon the feature by removing data-fetching delays and efficiencies—and can be implemented with minimal developer effort.

Find our Async Transients library—for download or collaboration—on GitHub.

]]>
https://10up.com/blog/2018/improving-wordpress-transients/feed/ 1
Countdown to 2018 https://10up.com/blog/2017/countdown-to-2018/ https://10up.com/blog/2017/countdown-to-2018/#respond Thu, 21 Dec 2017 23:14:14 +0000 https://10up.com/?p=18958

With the holidays revving up, 10uppers are taking some time to wind down and recharge before coming back in the new year. We’ll be on break from Friday, December 22nd, through Monday, January 1st, and back at it on Tuesday, January 2nd.

We thought we’d turn last year’s holiday break post into a tradition, so we asked some of our team: what are we doing while we’re away from our keyboards for 11 days?


“Getting settled into our new home!”
Christine Garrison, Good & Welfare Officer | Radford, VA


“Visiting my family in Wisconsin for the whole holiday break. I’m going to freeze!”
Celeste Chapman, Financial Operations Specialist | Atlanta, GA


“I’m spending time with my family, and hoping to get some rest before the twin boys arrive and turn the world upside-down!”
Sarah James, Senior User Experience Designer | Phoenix, AZ


“After Christmas day, my best friend from college and I are driving from Birmingham to New Smyrna Beach, FL in my Miata convertible I bought two months ago to spend a few days at beach.”
Ricky Lee Whittemore, Lead Web Engineer | Jasper, AL


“I’ll be partaking in the time-honored tradition of watching my favorite holiday movies at my local movie house: A Christmas Story and, of course, Die Hard”
Pete Nelson, Senior Web Engineer | Austin, TX


“Spending the holidays with family in Virginia!”
Brandi Morgan, Senior Project Manager | Flagstaff, AZ


“We decided to take a last minute trip to DC, hoping to see snow!”
Alicia Remedios, Accounts Operations Manager | Kingsland, GA


“Getting together with family and doing some remodeling at my parent’s house.”
Alex Waranius, Resourcing Manager | Milwaukee, WI


“I’m going to Disneyland.”
Christopher Lauzon, Senior Web Strategist | Ventura, CA


“I’ll be in Kansas City, Mo all break.”
Veronica Bruce, Financial Operations Manager | Bay Minette, AL


“I hope to have a quiet week visiting with family and friends. I also plan on skiing and playing in the snow.”
Ben Greeley, Lead Web Engineer | Waterville, ME


“Probably balancing homebound time with activities for my 5 year-old son (who’s dying to go mini-golfing…in the rain).”
Melissa Vander Wilt, Senior User Experience Designer | Portland, OR


“I’ll be mostly taking it easy, catching up on some rest and enjoying some uninterrupted family time.
Helen Hou-Sandí, Director of Platform Experience | Jersey City, NJ


“Probably spending most of the break relaxing up at my moms house in the mountains. My son is coming to town, hoping for some serious downtime.”
Adam Silverstein, Lead Web Engineer | Asheville, NC


“I’ll be heading up to a B&B in the San Juan Islands (Washington) for a few days with my wife and hopefully getting in a skiing day or two.”
Adam Edgerton, Associate Director of Client Delivery | Portland, OR

]]>
https://10up.com/blog/2017/countdown-to-2018/feed/ 0
Ads.txt Manager for WordPress https://10up.com/blog/2017/ads-txt-manager-for-wordpress/ https://10up.com/blog/2017/ads-txt-manager-for-wordpress/#respond Mon, 18 Dec 2017 21:52:37 +0000 https://10up.com/?p=18944 We’re making it easier and a bit safer to manage the ads.txt whitelist for publishers using WordPress with our newest plugin: Ads.txt Manager for WordPress. Site administrators can add and edit their site’s ads.txt file from the WordPress admin interface, eliminating the need to upload a new copy of ads.txt with every change or correction, and applying some validation to prevent simple ads.txt mistakes.

But what is ads.txt?

Digital advertising is growing, and with that growth comes greater risk of domain spoofing and other disruptive actions that interfere with the process of programmatically buying and selling ad space. More digital publishers are taking greater control of their available ad space by clearly defining for ad buyers who is authorized to sell their inventory—so buyers know that the publisher’s inventory is available and valuable—through the Interactive Advertising Bureau Tech Lab (IAB)’s Ads.txt Specification.

This ads.txt file is used by digital publishers to prevent unauthorized ad inventory sales and helps buyers trust that they’re getting their money’s worth. If this sounds complicated, it is—especially for those less familiar with the programmatic buying and selling of digital ad space. But it can have major consequences. DigiDay has cited a study that makes this a $3.5 million per day problem. They also have a good overview of ads.txt if you want to dig deeper.

Additional validation

Beyond managing the list of authorized sellers, the plugin performs some basic checks on the contents of the ads.txt file before it saves any changes, helping to prevent publishers from losing advertising revenue as a result of a malformed ads.txt file. In addition to making sure there’s no attempt to add malicious content, the plugin checks the format of the listed domains, and ensures that only variables currently enumerated by the IAB’s specification are used. Because ads.txt is cached for up to 24 hours, a mistake can be especially costly if not caught in advance.

Where next?

10up is already capturing future enhancements on GitHub for the plugin. We plan to introduce real-time validation and expose revisions so that changes can be reviewed or restored. We’ll also continue to incorporate rapidly emerging innovations, such as ads.cert, which takes the protections of ads.txt further by confirming information passing between the buyer and seller at every stage.

Download Ads.txt Manager for WordPress from the official WordPress Plugin repository or GitHub.

]]>
https://10up.com/blog/2017/ads-txt-manager-for-wordpress/feed/ 0