Bryce Harrington

Bryce Harrington

About Bryce Harrington

Bryce Harrington is a Senior Open Source Developer at the Samsung Open Source Group focusing on Open Source Graphics. Prior to Samsung, he lead Canonical, Ltd.'s Ubuntu X.org team, and focused on stabilization of the graphics and input infrastructures for the Ubuntu distribution. Bryce began his career in the aerospace industry as a spacecraft propulsions engineer at The Aerospace Corporation, Hughes Space and Communications and TRW. Later, he joined the Open Source Development Labs as a Senior Performance Engineer working on NFSv4 testing and development of automated test systems. He is a founder and developer of the Inkscape project and serves as Chairman of the Inkscape Board. Bryce has a BS-AE from USC and an MS-AE from Caltech.

  • Projects

    Cairo, Wayland
  • Role

    Senior Open Source Developer

Posts by Bryce Harrington

  • December 8, 2017 - Bryce Harrington

    Introduction to Projective Transformation

    The Italian city of Florence is home to the Uffizi Gallery, one of the most famous art museums in the world, with a particular emphasis on Renaissance art, including my favorite event in all of art history: the discovery of perspective. Today we’re so surrounded by artwork that uses perspective that we hardly notice it. In fact, it’s the *non-*perspective art that looks weird to us today, but prior to the 1400’s it simply didn’t exist. Drawing and painting differ from other art forms like sculpture, architecture, or theater, in that they represent life and the world via a flat two-dimensional surface. With sculpture, artists essentially make a 3D copy of a physical object measured in three dimensions; with a drawing or painting, you’re challenged with flattening reality down to just two. Indeed, the earliest artists resorted to just showing front or profile views of their subject. Sometimes depth is […]

    Read More
  • December 6, 2017 - Bryce Harrington

    Introducing Cairo GL ES v3

    A while back, I landed a change to update Cairo’s GL backend to support OpenGL ES version 3.0. In this blog post I’ll describe what this is, what makes it important, and what future steps can be taken. What is Cairo? Cairo is a drawing library that provides high quality 2D rendering of vector graphics. It’s claim to fame is a focus on making what you see on the screen identical to what gets printed on the printer. It’s raison d’être is to create SVG and PDF files with fancy graphics and nicely anti-aliased text. Cairo provides a stable, well-tested, well-documented API for applications to build against; historically, the list of applications and products using Cairo is impressively long. Rendering performance is also important to Cairo, which it addresses by making provisions for ‘rendering backends.’ The backends tap into platform-specific underlying 2D graphics systems as output targets; the win32 backend […]

    Read More
  • August 2, 2017 - Bryce Harrington

    Better Attachment Handling with Mutt

    The Mutt email client is famed for its extensive configuration options, but since it’s text-based, certain things are more challenging to do when compared to its graphical brethren. Viewing attachments is one such annoyance; fortunately, as with most things, Mutt is extensively configurable! By default, Mutt does fine with most plain text documents, and depending on your installation may also handle HTML documents in some fashion. Attachments that Mutt doesn’t recognize can of course be downloaded and viewed manually, but we can do better. To tell Mutt that it should handle a new attachment type, or its “MIME type”, we associate it with Mutt’s “auto_view” parameter. For example, add this to your ~/.muttrc (and restart Mutt):

    Note: if you plan to add a number of file types, you may wish to put these in their own config file (e.g. ~/.mutt/auto-views), and include a line in ~/.muttrc like the following: […]

    Read More
  • The X.org Foundation is a non-profit governance entity charged with overseeing core components of the open source graphics community. X.org had been structured as a legal (non-profit) corporate entity registered in the state of Delaware for some years, which provided tax deduction on donations and other such benefits. Unfortunately, being a non-profit is not cheap and entails various administrative tasks – filing annual reports, maintaining a bank account, dealing with donations and expenses, and so on – so the overhead of being an independent non-profit was deemed not worth the benefits, and in 2016 the members voted to join Software in the Public Interest (SPI). Joining SPI made a lot of sense; primarily, it would relieve X.org of administrative burdens while preserving the benefits of non-profit status. The costs of being in SPI are offset by the savings of not having to pay the various fees required to upkeep the […]

    Read More
  • July 18, 2017 - Bryce Harrington

    Introduction to GPG Encryption and git-crypt

    While Open Source prides itself on open transparency, there are certain things that must be kept secret like team credentials or personal information.  GNU’s OpenPGP (GPG) encryption tool set coupled with git-crypt can be invaluable for sharing such information privately with colleagues. For people unfamiliar with GPG it can seem a bit intimidating to start with, but it needn’t be! This article is a step-by-step introduction to getting set up with your own GPG key. Install GPG Since GPG has become pretty ubiquitous it should be straightforward to install via the usual method for your operating system. debian/ubuntu:

    OSX (using ports):

    etc. Create Your Own GPG Key Easy enough! The following command will ask for the info needed to make the key. Pick RSA with a key length of 4096 bits, and be very careful to set a unique GPG password that you’re not using anywhere else (but pick one you can remember!):

    […]

    Read More
  • November 3, 2016 - Bryce Harrington

    Compose Key Support in Weston

    I recently added support to Weston for compose sequences via the configured compose key. This is now available in all of the Weston clients. What are “compose sequences”? Let’s say I need to write to someone named Zoë, but I don’t have an “ë” key on my keyboard. I can create the letter using separate key strokes:

    The first key, RAlt (the Alt key on the right side of the keyboard), is the compose key (also called the Multi-key). It signals that a compose sequence is beginning. The next key is double-quote, constructed by holding one of the Shift keys while pressing the single-quote key. Third we type the letter e. This completes the sequence. Or, more correctly, the system finds a match for this sequence in a table of available sequences, and thus considers it finished. The entry in the table indicates that the ‘ë’ symbol should be […]

    Read More
  • October 27, 2016 - Bryce Harrington

    The Basics of Input Methods in Weston

    Wayland provides an optional protocol, zwp_input_method, for defining alternate ways of sending keystrokes and mouse activity to clients. This could be things such as an onscreen keyboard or a popup for building Korean characters. The design of the protocol allows for different kinds of input methods to be made available via modular plugins, allowing them to be coded as discrete client applications, separate from the compositor’s core. The Wayland project maintains a reference compositor named Weston that provides implementations of the various protocols for demonstrative purposes, including two implementations of the zwp_input_method protocol. One input method, weston-keyboard, manages an on-screen keyboard that pops up at the bottom of the screen, similar to on-screen keyboards typically seen on touch-based mobile devices. The other input method, weston-simple-im, enables a compose key functionality. The user can configure which input method to use via their weston.ini file. No more than one input method can […]

    Read More
  • September 20, 2016 - Bryce Harrington

    What’s New in Wayland and Weston 1.12?

    The 1.12 release of the Wayland core protocol and its reference compositor Weston will be later today; this post will give an overview of the major changes since the last release. New Features and Improvements to Wayland The Wayland core protocol documentation has received numerous refinements to improve its clarity and consistency. Along with this, many blank areas of the protocol documentation have been fleshed out. A new wl_display_add_protocol logger API provides a new, interactive way to debug requests; along with this are new APIs for examining clients and their resources. This is analogous to using WAYLAND_DEBUG=1, but more powerful since it allows run time review of log data such as through a UI view. There have been improvements to how the protocol XML scanner handles version identification in protocol headers. This enables better detection and fallback handling when compositors and clients support differt versions of their protocols. New Features […]

    Read More
  • July 6, 2016 - Bryce Harrington

    Wayland’s Upcoming Idle Behavior Inhibition

    The Inhibited Wayland Desktop – Part 2 This article is part two of a two part series on screen inhibition in Wayland. Part 1 can be read here. In the first part of this blog series, I drilled into how screensaving, screen power management, and locking are designed to work in the Wayland protocol and how Weston implements the functionality. Now it’s time to take a look at the newly-proposed idle behavior inhibition. Idle inhibition enables client applications to disable the idle behavior from being triggered while the application is running. For compositors that support this protocol extension, clients can make an API call to create an ‘inhibitor object’ associated with one of their surfaces. The inhibition request lasts for this object’s lifetime, so if the client exits, crashes, deletes the inhibit object or the surface, or otherwise becomes invalid, the screensaver will be restored to its normal state. The […]

    Read More
  • June 23, 2016 - Bryce Harrington

    Introducing Wayland Screen Inhibition

    The Inhibited Wayland Desktop – Part 1 This article is part one of a two part series on screen inhibition in Wayland. Picture this: you’re giving a presentation where you’re digging deep into some fascinating detail, when suddenly, your screensaver pops on.  Quickly, you rush back to your laptop to tap the keyboard or wave the mouse to hide the pictures of your cat and bring your presentation back. Now, where were you?  You’ve lost your train of thought, to the audience’s bemusement and to the detriment of your presentation. Or, imagine this: you’re watching a movie on your cell phone or tablet while on battery power, and you’re constantly frustrated when the screen dims or goes black every 5 minutes. I’m sure many of you have had problems just like these, and the generally accepted solution for these issues is to temporarily inhibit power saving mode as well as […]

    Read More