As web developers, we strive to provide the highest fidelity interface and experience for users of our sites and applications as possible. From the use of responsive web design, SASS, CSS3, Flexbox and JavaScript frameworks we exercise every technique and option to bring the latest to our users. With great power comes great responsibility and that means dealing with FOIT, FOUT and providing the perception of performance to our users.

I’m Too Old for This S*!%

Back in the day, Mercury’s late-90s sites and applications utilized “system fonts”, no CSS (it just didn’t exist) and even rudimentary nav image rollovers were done with inline JavaScript. In short, life was simple.

But with the addition of custom font faces (@font-face) in CSS3 and the growth of JavaScript which added sophistication and separation of CSS documents we could build truly beautiful and sophisticated interfaces. What used to look like:

<html>
   <head>
      <title>Hello World</title>
   </head>
<body>
   <p>Hello World</p> 
</body>
</html>

now looks like:

<head>
    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
    <link rel="apple-touch-icon" href="apple-touch-icon.png" />
    <link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-57x57.png" />
    <link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-72x72.png" />
    <link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-76x76.png" />
    <link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114x114.png" />
    <link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-icon-120x120.png" />
    <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144x144.png" />
    <link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon-152x152.png" />
    <meta name="msapplication-TileImage" content="/windows-8-tile.png"/>
    <link rel="stylesheet" href="main.css" />

    <script src="/modernizr-custom.js"></script>
    <script src="/jquery-3.0.0.min.js"></script>
    <script src="/jquery-migrate-1.4.1.min.js"></script>

    <title>Hello World</title>
</head>

<body…>

with even more HTTP requests in the associated CSS sheets:

@font-face {
  font-family: 'MyWebFont';
  src: url('webfont.eot'); /* IE9 Compat Modes */
  src: url('webfont.woff2') format('woff2'), /* Most current browsers */
       url('webfont.woff') format('woff'), /* Recent/modern browsers */
       url('webfont.ttf')  format('truetype'), /* Safari, Android, iOS */
       url('webfont.svg#svgFontName') format('svg'); /* Legacy iOS */
}

HTTP Requests and the Damage Done

As you can see, there’s a price to be paid for web fonts – additional HTTP requests separate from the HTTP request for the web page markup. Font files can be tardy in the chain of HTTP requests because of their size, an effect more pronounced on slow network connections or mobile connectivity – and simply because they come AFTER the initial page request.

An inconvenient truth web designers must deal with every day is to decide whether to show page text before the needed font files arrive, or wait for the font files, showing nothing until the text is ready to render with the required web fonts. Now we have to wrestle with things like FOIT and FOUT.

So What Is FOUT?

FOUT stands for “Flash of Unstyled Text”. FOUT is what happens if web page designers decide to display the page in full before font files arrive. FOUT is actually a special case of FOUC – Flash of Unstyled Content – in which the browser renders the entire web page briefly with default browser styles because the markup has loaded but the CSS sheet that dictates layout of the page has not. After a short time (often less than a second) when the CSS sheet does load the whole page re-flows to take on the layout defined by the CSS. This can be very disorienting to the user and at times give the impression of a broken website.

With FOUT, sooner or later page text will re-arrange into a new form when proper custom fonts have completed their download and the browser re-renders associated page text. Text often pushes around and across lines; at times this is a subtle change if the custom font is close to a default system font or can be extreme if the font is considerably different in composition. Oftentimes the page designer will try to select a “system font” that can be styled to be similar in size, weight, kerning and leading so that when the real font loads the page doesn’t shift that much.

What Is FOIT?

FOIT stands for “Flash of Invisible Text”. FOIT is the phenomenon users get when the page designer chooses to render the layout of the page but wait to place visible text until the custom fonts have loaded. From an information consumption standpoint, this leaves the page unusable for a short time; this design choice can make sense if the fidelity of information presentation is more important than quickest possible consumption. Many consider FOIT to be less jarring than FOUT since the page doesn’t not “change shape at any point” and proponents feel that users are used to waiting for images to download.

How Does Perceived Performance Fit Into the Discussion?

To a significant extent, FOUT and FOIT are not completely avoidable with modern web development technologies and user experience expectations. What is in our control is the use of mitigating techniques to make websites and applications have the appearance of a high level of performance. The term “Perceived Performance” is a measure of how quick a user thinks your site is – and that can often be as important as its true speed.

User Experience with progress bar loading

If you can get enough of a page to load quickly enough that the user can begin to accomplish what they came to your site for, they are typically indifferent to actual time it takes to download all assets. An example is a technique often implemented on long pages of continuously scrolling news stories – if the user can begin to read the first story or two in proper form before the entire page and associated files have downloaded, they consider the page downloaded and usable. By the time they scroll down the page for additional content the remaining material has loaded in the time they spent reading the first story, leaving the user with a high perception of performance.

What Can We Do About FOIT and FOUT?

Frankly, neither FOIT nor FOUT is optimal – what can we do to mitigate the problem?

Critical FOFT

Yes – this is another F-word: Flash of Faux Text. Zach Leatherman initially advocated for the use of a tiny “subsetted” font file (it contains only upper and lowercase characters from A-Z in the “normal” weight) followed by a separate request for the full font file (punctuation, non-alpha characters, different weights etc.). With this technique, the user will then see a quick “flash” between system font and web font much sooner which will be followed by a minor flash when the remainder of the web font loads. This technique is not foolproof but is a major leg up on unchecked FOIT/FOUT.

Critical FOFT with Data URIs

An extension on the Critical FOFT approach in which an inline “data URI” of an encoded set of basic glyphs is included in the page markup (the initial request). Since this request is inline it is blocking (doesn’t wait for later HTTP requests) in that the page will not render until this encoded font has been downloaded along with the rest of the page markup. Here is an example:

@font-face {
font-family: "font-name";
src: url(data: font/opentype;base64,[paste-base64-font-data-here]);
font-style: normal;
font-weight: normal;
}

Use of this technique is not perfect as it will result in a FOIT only in older/downline browsers/devices. Among other resources, Font Squirrel’s webfont generator will provide base 64 output for this purpose.

Further Reading

Use of either variation of Critical FOFT will significantly improve the perceived performance of your web pages and greatly reduce manifestations of both FOIT and FOUT. However, there are plenty of other approaches (more being invented every week) and F-words – I highly recommend Zach Leatherman’s post at https://www.zachleat.com/web/comprehensive-webfonts/.

A lot of women in tech, including myself, don’t like to spend a lot of time talking about being a woman in tech. The topic is controversial, usually uncomfortable, and comes with a negative connotation similar to “oh boy, what is she complaining about now?” Fortunately when you’re like me and work with a company that doesn’t just employ women in IT but empowers them, you can feel confident to speak on an issue that still persists.

Women with computer chip in the background
For an industry that greases the wheels of human progress, it seems counter-intuitive to see such social regression. More and more women have entered the workforce in recent decades, but they’re falling out of techie jobs or appear to be disinterested in entering the area to begin with. Dare I pose the question…Why?

There are a variety of reasons, some of which include:

  1. Education Pipeline
    Not enough women are enrolling in IT degrees such as computer science. For example, only 18 percent of US university computer science (CS) graduates in 2013 were women.
  2. Recruiting and Hiring
    Unconscious gender biases drive the pattern of hiring a man over a woman in the field. Perhaps the same unconscious gender bias that drives parents to discourage women from taking interest in the mathematical or scientific subjects that grooms them for a computer science degree.
  3. Pay and Promoting
    There still is not a single country in the world where women are paid equally to their male counterparts. The US female web developer makes 79 cents to the dollar men make for the same job. In 2009, Dell paid almost $10 million to settle a gender discrimination lawsuit from its employees over equal pay.
    Couple all of that with the fact that women run just 3.6 percent of Fortune 500 companies (and we think that’s a remarkable achievement!)
  4. Retaining
    In the US a quarter of women with IT roles feel stalled in their careers. In 2014, it was recorded that nearly 50% of women in IT roles leave within the first year due to issues with promotion and the hostile, brogrammer culture.

It’s disheartening to admit that still being very young in my career as an IT professional, I’ve witnessed or experienced all of those firsthand. Taking away the textbook and statistics, what’s it like being an IT professional from her perspective? Cue the finger snaps from my female readers.

The most common challenge is the dichotomy between being blocked for being too aggressive versus knocked for not being aggressive enough. Plenty of women, myself included, feel they have to walk a constant tightrope in monitoring and adjusting their professional behavior so that they can succeed, or even be taken seriously, in ways that most men probably couldn’t even dream of.

  • Analyzing whether your email was concise or curt.
  • Gauging if/when you should back down (or even participate) in an office debate.
  • Determining if/when to cut in with your idea during a meeting.

All of these hesitations are out of fear that we’ll damage one of the male egos in the room, and God forbid, the one that can influence our pay or promotion. Such actions are frowned on for women, and usually praised as confidence and leadership for men.

To bridge the gap, it won’t just take action from our male colleagues (though I have a to-do list for them as well.) We have to be an active participant in our own uprising, and stop the behavior that permeates this brogrammer / male-dominant culture. Starting with something as simple as our professional writing, stop giving in to the societal pull to sound less direct than you’d like out of fear of seeming pushy, bossy, or, worst of all, shrill. No more of these:

  • “I’m sorry…” – We have to stop apologizing for asking people to do things, particularly when it’s something that’s part of their job.
  • “I may be wrong but . . .” – Don’t lessen the impact of what you say before you say it.
  • “Does this make sense?” – Trust that what you wrote makes sense. Don’t openly question in email whether or not your thinking is sensical.
  • “Just…” – We need to stop using this word as a way to weaken a request or our opinion.

As for our day-to-day office interactions, 

Avoid being too easily offended. There is a line to be crossed, but don’t take yourself or the office too seriously.

Play to your strengths, even when they are stereotypes, whether it’s listening, emotional aptitude, or empathy. These are all good qualities in a leader.

Get a Sponsor. Start building relationships with your boss and other senior leaders from the beginning, and pay particular attention to cultivate those relationships with the individuals who believe in you and publicly support you—they are going to be your best advocates.

As for the men out there, changing women’s roles in the workplace can’t happen without a change in behavior from their male colleagues and partners.

Be an Advocate. If you see female colleagues get interrupted in meetings, interject and say you’d like to hear them finish. Openly ask women to contribute to the conversation. Look for opportunities to acknowledge women when their ideas are implemented, both publicly and to higher ups. Women are less likely to toot their own horns, so help make sure your colleagues get the credit they deserve.

Recruit & Promote Women. Know that some of the most promising candidates won’t come to you: Men will apply for jobs when they meet 60% of the hiring criteria while women wait until they meet 100%. So go after them, finding qualified candidates using LinkedIn and references. Make sure you’re helping to give the women who are already a part of your organization an opportunity to rise.

Share the Office Housework. Changing gender stereotypes about duties isn’t just for the home front. Don’t fall into the trap of expecting women to take on stereotypical support roles like note taker or party planner.

Above all, understand that your actions can help set the tone for other men in the office. Be aware of your subtle biases when it comes to gender. You may not realize it about yourself – or others who work with you.

The truth is…if women start gaining more ground in the workforce, it doesn’t mean men have to lose out. The zero sum game mentality, implying someone always has to lose — which has also permeated our marketplace, in more areas than this — has got to go. If we tackle issues like diversity, innovation, businesses with strong, robust strategies, and overall value creation should skyrocket.