graph

Mama's last hug: animal emotions and what they tell us about ourselves / Frans de Waal ; with photographs and drawings by the author

Hayden Library - QL785.27.W33 2019




graph

September 1, 1939: a biography of a poem / Ian Sansom

Dewey Library - PR6001.U4 Z796 2019




graph

Frankenstein 200: the birth, life, and resurrection of Mary Shelley's monster / Rebecca Baumann ; photographs by Jody Mitchell

Dewey Library - PR5397.F73 B384 2018




graph

Evolutionary Economic Geography in China [electronic resource] / by Canfei He, Shengjun Zhu

He, Canfei, author




graph

The Making of the Banlieue [electronic resource]: An Ethnography of Space, Identity and Violence

Slooter, Luuk




graph

Chromatographic detection of low-molecular-mass metal complexes in the cytosol of Saccharomyces cerevisiae

Metallomics, 2020, Advance Article
DOI: 10.1039/C9MT00312F, Paper
Open Access
Trang Q. Nguyen, Joshua E. Kim, Hayley N. Brawley, Paul A. Lindahl
Labile metal pools in the cytosol of yeast, including those of iron, copper, zinc, and manganese, can be detected and characterized using size-exclusion chromatography with online ICP-MS.
To cite this article before page numbers are assigned, use the DOI form of citation above.
The content of this RSS Feed (c) The Royal Society of Chemistry




graph

Graphit: Gedichte / Marcel Beyer

Hayden Library - PT2662.E94 G7 2014




graph

On photography / Walter Benjamin; edited and translated by Esther Leslie

Rotch Library - PT2603.E455 O53 2015




graph

The Red Countess: Select Autobiographical and Fictional Writing of Hermynia Zur Mühlen (1883-1951).

Online Resource




graph

The topography of modernity: Karl Philipp Moritz and the space of autonomy / Elliott Schreiber

Online Resource




graph

Science Podcast - Quantum cryptography, salt's role in ecosystems, and a rundown of stories from our daily news site (31 Jan 2014)

Should we worry more about quantum decryption in the future or the past, how salt's role as a micronutrient may effect the global carbon cycle, and a daily news roundup.




graph

Science Podcast - 100 years of crystallography, linking malaria and climate, and a news roundup (7 Mar 2014)

Celebrating crystallography's centennial; how climate pushes malaria uphill; roundup of daily news with David Grimm.




graph

Crystallography and Crystal Defects, 3rd Edition


 

The classic book that presents a unified approach to crystallography and the defects found within crystals, revised and updated

This new edition of Crystallography and Crystal Defectsexplains the modern concepts of crystallography in a clear, succinct manner and shows how to apply these concepts in the analyses of point, line and planar defects in crystalline materials. 

Fully revised and updated, this book now includes:



Read More...




graph

Political Geography: A Critical Introduction


 

Brings political geography to life—explores key concepts, critical debates, and contemporary research in the field. 

Political geography is the study of how power struggles both shape and are shaped by the places in which they occur—the spatial nature of political power. PoliticalGeography: A Critical Introduction helps students understand how power is related to space, place, and territory, illustrating how everyday life and the world of global conflict



Read More...




graph

Liquid–liquid microextraction of glyphosate, glufosinate and aminomethylphosphonic acid for the analysis of agricultural samples by liquid chromatography

Anal. Methods, 2020, 12,2039-2045
DOI: 10.1039/D0AY00120A, Paper
Javier Marín, Natalia Campillo, Manuel Hernández-Córdoba, Isabel Garrido, José Fenoll, Pilar Viñas
An ion-pair liquid–liquid microextraction procedure followed by LC tandem mass spectrometry allows a reliable and sensitive determination glyphosate, glufosinate y aminomethylphosphonic acid in agricultural samples.
The content of this RSS Feed (c) The Royal Society of Chemistry




graph

Effective methods for the determination of triphenyltin residues in surface water and soil samples by high-performance liquid chromatography with tandem mass spectrometry

Anal. Methods, 2020, Advance Article
DOI: 10.1039/D0AY00329H, Paper
Gabriel C. dos Santos, Állisson A. da S. Avellar, Rômulo de O. Schwaickhardt, Nelson M. G. Bandeira, Filipe F. Donato, Osmar D. Prestes, Renato Zanella
Monitoring of triphenyltin (TPhT) in the environment, particularly to control its misuse in agriculture, is of great importance because of its high toxicity.
To cite this article before page numbers are assigned, use the DOI form of citation above.
The content of this RSS Feed (c) The Royal Society of Chemistry




graph

Dopamine-modified magnetic graphene oxide as a recoverable sorbent for the preconcentration of metal ions by an effervescence-assisted dispersive micro solid-phase extraction procedure

Anal. Methods, 2020, Advance Article
DOI: 10.1039/D0AY00522C, Paper
Basira Karbalaie, Maryam Rajabi, Bahareh Fahimirad
Nanomagnetic graphene oxide modified with dopamine (GO–Fe3O4–DA) was synthesized via a very simple procedure.
To cite this article before page numbers are assigned, use the DOI form of citation above.
The content of this RSS Feed (c) The Royal Society of Chemistry




graph

Targeted profiling of amino acid metabolome in serum by a liquid chromatography-mass spectrometry method: application to identify potential markers for diet-induced hyperlipidemia

Anal. Methods, 2020, Advance Article
DOI: 10.1039/D0AY00305K, Paper
Xiao-fan Wang, You-xi Zhang, Hai-ying Ma
Targeted profiling of amino acid metabolome in serum by LC-MS: application to identify potential markers for diet-induced hyperlipidemia.
To cite this article before page numbers are assigned, use the DOI form of citation above.
The content of this RSS Feed (c) The Royal Society of Chemistry




graph

Ultrasensitive immunochromatographic strips for fast screening of the nicarbazin marker in chicken breast and liver samples based on monoclonal antibodies

Anal. Methods, 2020, 12,2143-2151
DOI: 10.1039/D0AY00414F, Paper
Xiaoxin Xu, Liqiang Liu, Xiaoling Wu, Hua Kuang, Chuanlai Xu
Nicarbazin is an anticoccidial drug with a residue limit in animal husbandry.
The content of this RSS Feed (c) The Royal Society of Chemistry




graph

Versatile additively manufactured (3D printed) wall-jet flow cell for high performance liquid chromatography-amperometric analysis: application to the detection and quantification of new psychoactive substances (NBOMes)

Anal. Methods, 2020, 12,2152-2165
DOI: 10.1039/D0AY00500B, Paper
Open Access
Hadil M. Elbardisy, Eduardo M. Richter, Robert D. Crapnell, Michael P. Down, Peter G. Gough, Tarek S. Belal, Wael Talaat, Hoda G. Daabees, Craig E. Banks
Additive manufacturing is an emerging technology of vast applicability, receiving significant interest in a plethora of industrial and research domains as it allows the translation of designs produced via computer software, into 3D printed objects.
The content of this RSS Feed (c) The Royal Society of Chemistry




graph

Multi-residue determination of micropollutants in Nigerian fish from Lagos lagoon using ultrasound assisted extraction, solid phase extraction and ultra-high-performance liquid chromatography tandem mass spectrometry

Anal. Methods, 2020, 12,2114-2122
DOI: 10.1039/D0AY00411A, Paper
Idera Fabunmi, Natalie Sims, Kathryn Proctor, Aderonke Oyeyiola, Temilola Oluseyi, Kehinde Olayinka, Barbara Kasprzyk-Hordern
This reports for the first time a simple and robust approach in determining pharmaceuticals in different fish species in Nigeria.
The content of this RSS Feed (c) The Royal Society of Chemistry




graph

The influence of lateral flake size in graphene/graphite paste electrodes: an electroanalytical investigation

Anal. Methods, 2020, 12,2133-2142
DOI: 10.1039/D0AY00169D, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Alejandro García-Miranda Ferrari, Hadil M. Elbardisy, Valentine Silva, Tarek S. Belal, Wael Talaat, Hoda G. Daabees, Craig E. Banks, Dale A. C. Brownson
We report the electroanalytical properties of graphene and graphite paste electrodes comprising varying lateral flake sizes when applied for sensing relevant biomolecules and prominent drugs of abuse.
The content of this RSS Feed (c) The Royal Society of Chemistry




graph

Comparison of surfactant-mediated liquid chromatographic modes with sodium dodecyl sulphate for the analysis of basic drugs

Anal. Methods, 2020, Advance Article
DOI: 10.1039/D0AY00526F, Paper
N. Pankajkumar-Patel, E. Peris-García, M. J. Ruiz-Angel, M. C. García-Alvarez-Coque
A comprehensive overview of the performance of MLC, HSLC and MELC for the analysis of basic compounds.
To cite this article before page numbers are assigned, use the DOI form of citation above.
The content of this RSS Feed (c) The Royal Society of Chemistry




graph

Miniaturized QuEChERS method for determination of 97 pesticide residues in wine by ultra-high performance liquid chromatography coupled to tandem mass spectrometry

Anal. Methods, 2020, Accepted Manuscript
DOI: 10.1039/D0AY00744G, Paper
Gabrieli Bernardi, Magali Kemmerich, Martha B Adaime, Osmar Damian Prestes, Renato Zanella
A miniaturized sample preparation method was developed and validated for the multiresidue determination of 97 pesticide residues in wine samples. The proposed extraction procedure is based on QuEChERS acetate method...
The content of this RSS Feed (c) The Royal Society of Chemistry




graph

Identification of Gentiana rigescens from different geographical origins based on HPLC and FTIR fingerprints

Anal. Methods, 2020, 12,2260-2271
DOI: 10.1039/D0AY00309C, Paper
Yanli Zhao, Tianjun Yuan, Lihua Wu, Ji Zhang, Zhitian Zuo, Yuanzhong Wang
Gentiana rigescens is a traditional Chinese medicine with efficacy in liver protection, as a cholagogic, anti-hyperglycemic, and anti-hypertension agent, and in relieving spasms and pain.
The content of this RSS Feed (c) The Royal Society of Chemistry




graph

Ion chromatography for monitoring [NTf2]− anion contaminants in pure and saline water

Anal. Methods, 2020, 12,2244-2252
DOI: 10.1039/D0AY00337A, Paper
Coby J. Clarke, Liem Bui-Le, Jason Hallett
An optimized ion chromatography method for quantifying highly polarizable [NTf2] anions in high salinity wastewater is presented.
The content of this RSS Feed (c) The Royal Society of Chemistry




graph

Detection of radium at the attogram per gram level in copper by inductively coupled plasma mass spectrometry after cation-exchange chromatography

Anal. Methods, 2020, 12,2272-2278
DOI: 10.1039/D0AY00512F, Paper
Mélodie Bonin, Dominic Larivière, Pavel P. Povinec
In this study, a new method was developed for the separation and isolation of radium from metallic copper.
The content of this RSS Feed (c) The Royal Society of Chemistry




graph

Dispersive micro-solid phase extraction based on graphene/polydopamine composite for the extraction of pyrethroids in water samples

Anal. Methods, 2020, Accepted Manuscript
DOI: 10.1039/D0AY00562B, Paper
Qinqin Xu, Kexin Qiao, Chen Yan, Zikai Liu, Runhua Lu, Wenfeng Zhou
In this study, a simple, rapid, precise, and environmentally friendly microextraction named dispersive micro-solid phase extraction based on graphene/polydopamine composite as sorbent was investigated for the analysis of four pyrethroids...
The content of this RSS Feed (c) The Royal Society of Chemistry




graph

Advances in computer graphics : 36th Computer Graphics International Conference, CGI 2019, Calgary, AB, Canada, June 17-20, 2019 : proceedings / Marina Gavrilova, Jian Chang, Nadia Magnenat Thalmann, Eckhard Hitzer, Hiroshi Ishikawa (eds.)

Computer Graphics International (36th : 2019 : Calgary, Alta)




graph

A primer on process mining: practical skills with Python and Graphviz / Diogo R. Ferreira

Online Resource




graph

Demographic determinants of testing incidence and COVID-19 infections in New York City neighborhoods [electronic resource] / George J. Borjas

Cambridge, Mass. : National Bureau of Economic Research, 2020




graph

Western Australia looking west / [photographer:] Richard Woldendorp ; [commentaries by] Geoffrey Bolton ... [et al]

Woldendorp, Richard, 1927-




graph

Ibn Khaldun : an intellectual biography / Robert Irwin

Irwin, Robert, 1946- author




graph

[ASAP] Advanced Liquid Chromatography of Polyolefins Using Simultaneous Solvent and Temperature Gradients

Analytical Chemistry
DOI: 10.1021/acs.analchem.0c01095




graph

Vanessa Bryant sues LA County sheriff for taking unauthorised photographs of Kobe’s crash site

Vanessa is seeking damages in the wake of revelations that eight sheriff’s department deputies took graphic photos of the scene and shared them with others.




graph

A Companion to Photography


 

The study of photography has never been more important. A look at today's digital world reveals that a greater number of photographs are being taken each day than at any other moment in history. Countless photographs are disseminated instantly online and more and more photographic images are earning prominent positions—and garnering record prices—in the rarefied realm of top art galleries.

Reflecting this dramatic increase in all things photographic



Read More...




graph

[ASAP] Room Temperature Graphene Mid-Infrared Bolometer with a Broad Operational Wavelength Range

ACS Photonics
DOI: 10.1021/acsphotonics.0c00028




graph

[ASAP] Colloidal Quantum-Dots/Graphene/Silicon Dual-Channel Detection of Visible Light and Short-Wave Infrared

ACS Photonics
DOI: 10.1021/acsphotonics.0c00247




graph

Iconography of Security

Molly Wilson and Eileen Wagner battle the age old Christmas issues of right and wrong, good and evil, and how the messages we send through iconography design can impact the decisions users make around important issues of security. Are you icons wise men, or are they actually King Herod?


Congratulations, you’re locked out! The paradox of security visuals

Designers of technology are fortunate to have an established visual language at our fingertips. We try to use colors and symbols in a way that is consistent with people’s existing expectations. When a non-designer asks a designer to “make it intuitive,” what they’re really asking is, “please use elements people already know, even if the concept is new.”

Lots of options for security icons

We’re starting to see more consistency in the symbols that tech uses for privacy and security features, many of them built into robust, standardized icon sets and UI kits. To name a few: we collaborated with Adobe in 2018 to create the Vault UI Kit, which includes UI elements for security, like touch ID login and sending a secure copy of a file. Adobe has also released a UI kit for cookie banners.

Activity log from the Vault Secure UI Kit, by Adobe and Simply Secure.
Cookie banner, from the Cookie Banner UI Kit, by Adobe.

Even UI kits that aren’t specialized in security and privacy include icons that can be used to communicate security concepts, like InVision’s Smart Home UI Kit. And, of course, nearly every icon set has security-related symbols, from Material Design to Iconic.

Key, lock, unlock, shield, and warning icons from Iconic.
A selection of security-related icons from Material Design.
Security shields from a selection of Chinese apps, 2014. From a longer essay by Dan Grover.

Many of these icons allude to physical analogies for the states and actions we’re trying to communicate. Locks and keys; shields for protection; warning signs and stop signs; happy faces and sad faces. Using these analogies helps build a bridge from the familiar, concrete world of door locks and keyrings to the unfamiliar, abstract realm of public- and private-key encryption.

flickr/Jim Pennucci
GPG Keychain, an open-source application for managing encryption keys. Image: tutsplus.com

When concepts don’t match up

Many of the concepts we’re working with are pairs of opposites. Locked or unlocked. Private or public. Trusted or untrusted. Blocked or allowed. Encouraged or discouraged. Good or evil. When those concept pairs appear simultaneously, however, we quickly run into UX problems.

Take the following example. Security is good, right? When something is locked, that means you’re being responsible and careful, and nobody else can access it. It’s protected. That’s cause for celebration. Being locked and protected is a good state.

“Congratulations, you’re locked out!”

Whoops.

If the user didn’t mean to lock something, or if the locked state is going to cause them any inconvenience, then extra security is definitely not good news.

Another case in point: Trust is good, right? Something trusted is welcome in people’s lives. It’s allowed to enter, not blocked, and it’s there because people wanted it there. So trusting and allowing something is good.

“Good job, you’ve downloaded malware!”

Nope. Doesn’t work at all. What if we try the opposite colors and iconography?

That’s even worse. Even though we, the designers, were trying both times to keep the user from downloading malware, the user’s actual behavior makes our design completely nonsensical.

Researchers from Google and UC Berkeley identified this problem in a 2016 USENIX paper analyzing connection security indicators. They pointed out that, when somebody clicks through a warning to an “insecure” website, the browser will show a “neutral or positive indicator” in the URL bar – leading them to think that the website is now safe. Unlike our example above, this may not look like nonsense from the user point of view, but from a security standpoint, suddenly showing “safe/good” without any actual change in safety is a pretty dangerous move.

The deeper issue

Now, one could file these phenomena under “mismatching iconography,” but we think there is a deeper issue here that concerns security UI in particular. Security interface design pretty much always has at least a whiff of “right vs. wrong.” How did this moralizing creep into an ostensibly technical realm?

Well, we usually have a pretty good idea what we’d like people to do with regards to security. Generally speaking, we’d like them to be more cautious than they are (at least, so long as we’re not trying to sneak around behind their backs with confusing consent forms and extracurricular data use). Our well-intentioned educational enthusiasm leads us to use little design nudges that foster better security practices, and that makes us reach into the realm of social and psychological signals. But these nudges can easily backfire and turn into total nonsense.

Another example: NoScript

“No UX designer would be dense enough to make these mistakes,” you might be thinking.

Well, we recently did a redesign of the open-source content-blocking browser extension NoScript, and we can tell you from experience: finding the right visual language for pairs of opposites was a struggle.

NoScript is a browser extension that helps you block potential malware from the websites you’re visiting. It needs to communicate a lot of states and actions to users. A single script can be blocked or allowed. A source of scripts can be trusted or untrusted. NoScript is a tool for the truly paranoid, so in general, wants to encourage blocking and not trusting. But:

“An icon with a crossed-out item is usually BAD, and a sign without anything is usually GOOD. But of course, here blocking something is actually GOOD, while blocking nothing is actually BAD. So whichever indicators NoScript chooses, they should either aim to indicate system state [allow/block] or recommendation [good/bad], but not both. And in any case, NoScript should probably stay away from standard colors and icons.”

So we ended up using hardly any of the many common security icons available. No shields, no alert! signs, no locked locks, no unlocked locks. And we completely avoided the red/green palette to keep from taking on unintended meaning.

Navigating the paradox

Security recommendations appear in most digital services are built nowadays. As we move into 2020, we expect to see a lot more conscious choice around colors, icons, and words related to security. For a start, Firefox already made a step in the right direction by streamlining indicators for SSL encryption as well as content blocking. (Spoilers: they avoided adding multiple dimensions of indicators, too!)

The most important thing to keep in mind, as you’re choosing language around security and privacy features, is: don’t conflate social and technical concepts. Trusting your partner is good. Trusting a website? Well, could be good, could be bad. Locking your bike? Good idea. Locking a file? That depends.

Think about the technical facts you’re trying to communicate. Then, and only then, consider if there’s also a behavioral nudge you want to send, and if you are, try to poke holes in your reasoning. Is there ever a case where your nudge could be dangerous? Colors, icons, and words give you a lot of control over how exactly people experience security and privacy features. Using them in a clear and consistent way will help people understand their choices and make more conscious decisions around security.


About the author

Molly Wilson is a designer by training and a teacher at heart: her passion is leveraging human-centered design to help make technology clear and understandable. She has been designing and leading programs in design thinking and innovation processes since 2010, first at the Stanford d.school in Palo Alto, CA and later at the Hasso-Plattner-Institut School of Design Thinking in Potsdam, Germany. Her work as an interaction designer has focused on complex products in finance, health, and education. Outside of work, talk to her about cross-cultural communication, feminism, DIY projects, and visual note-taking.

Molly holds a master’s degree in Learning, Design, and Technology from Stanford University, and a bachelor’s degree magna cum laude in History of Science from Harvard University. See more about her work and projects at http://molly.is.

Eileen Wagner is Simply Secure’s in-house logician. She advises teams and organizations on UX design, supports research and user testing, and produces open resources for the community. Her focus is on information architecture, content strategy, and interaction design. Sometimes she puts on her admin hat and makes sure her team has the required infrastructure to excel.

She previously campaigned for open data and civic tech at the Open Knowledge Foundation Germany. There she helped establish the first public funding program for open source projects in Germany, the Prototype Fund. Her background is in analytic philosophy (BA Cambridge) and mathematical logic (MSc Amsterdam), and she won’t stop talking about barbershop music.

More articles by Molly Wilson & Eileen




graph

A Modern Typographic Scale

Rob Weychert reaches for the top notes to sing us a song of typographic scale. A little attention to scale and to the mathematics will help you to hit a high note with your designs this Christmas and beyond.


I’ve been studying music theory this year. While some of its core concepts were already familiar to me, much of their specifics were not. Or so I thought. A funny thing happened when I was learning the major scales.

While playing through a song I had written some years before, I started picking it apart to see how it correlated with the theory I was learning. I had composed the melody without any thought to what the specific notes were, but as I started to transcribe them, a pattern quickly emerged: all the B’s and E’s were flat and the rest of the notes were natural. Lo and behold, long before my music theory studies began, I had written a song in B♭ major. My ears already knew how the major scales worked even if my brain didn’t. (If you know how “do re mi fa so la ti do” is supposed to sound tonally, then your ears know, too.)

When music is composed to a scale, it sounds “right” to us. And just as our ears appreciate harmony and melody with a rational basis, our eyes can appreciate the same concepts applied to spatial relationships.

Have you ever struggled with sizing type in a design project, especially when you need more than just one or two sizes? Have you ever despaired at the number of ad-hoc type sizes on your site spiraling out of control over time? It could be that you’ve been composing the typographic equivalent of a cacophonous symphony. And the first thing any composer will tell you to do is to get that thing on a scale.

Meet the typographic scale

You don’t need to know music theory to work with a typographic scale. You only need to know that a scale is a range of values with an established mathematic relationship. For a typographic scale, that relationship is frequently a steady interval between type sizes. Depending on what you need your type to do, the interval might be fixed (e.g. each size is two pixels bigger than the size before it) or it might be proportional (e.g. each size is twice as big as the size before it). I personally rarely find fixed intervals useful, so I’ll be focusing on proportional intervals.

The most important thing to understand about proportional intervals is thankfully not complicated: The bigger the intervals are, the more drastic the size differences will be in your scale. If your layout calls for contrast, a bigger interval might be the way to go. If you’re aiming for something more nuanced, go smaller. But keep these things in mind:

  • There is such a thing as too much nuance: if a size on your scale is virtually indistinguishable from the sizes adjacent to it, it defeats the purpose of using a scale.
  • On the flip side, too much contrast renders the sizes’ proportional relationship moot. At a certain point, massive display type is arguably more graphic than textual.
  • More is less. The more sizes you use, the less they’ll mean.
A small interval (left, 1.1) offers a smoother range of sizes; a large interval (right, 1.8) offers more contrast.

Setting up the scale variables

The quickest way to get a scale up and running when working on the web is to drop its values into some CSS variables. The naming convention I typically use begins with --scale0, which is the body text size. The size below it is --scale-1 (as in “scale minus one”), the size above it is --scale1, and so on. Keeping the names relative to each other like this helps me move around the scale intuitively as I use it. If, say, --scale4 isn’t big enough for my h1, I can move up to --scale5 or --scale6, and I always know exactly how many steps away from the body text I am. Here’s a first pass at a simple set of scale variables using an interval of 1.5:

:root {
  --scale-2: 7.1px;  /* 10.7 ÷ 1.5 */
  --scale-1: 10.7px; /* 16 ÷ 1.5   */
  --scale0: 16px;    /* body text  */
  --scale1: 24px;    /* 16 × 1.5   */
  --scale2: 36px;    /* 24 × 1.5   */
}

I can use these variables with any CSS property that accepts a numeric value, like so:

p { font-size: var(--scale0); }

Rooting around in rems

I’m off to a good start. However, those px values are a little too absolute for my liking. If I convert them to rems, it’ll give my scale more flexibility. rem stands for “root em.” 1rem is equivalent to the html element’s text size, which in most browsers defaults to 16px. Crucially, though, users can adjust that size in their browser settings, and using rems in my CSS will respect those preferences.

:root {
  --scale-2: 0.4rem;  /* 0.7rem ÷ 1.5 */
  --scale-1: 0.7rem;  /* 1rem ÷ 1.5   */
  --scale0: 1rem;     /* body text    */
  --scale1: 1.5rem;   /* 1rem × 1.5   */
  --scale2: 2.25rem;  /* 1.5rem × 1.5 */
}

Another benefit of the relative nature of rems: I tend to use larger text sizes on large viewports and smaller text sizes on small viewports. Rather than adjusting dozens or hundreds of typographic CSS declarations per breakpoint, I can shift the whole scale up or down merely by adjusting the font-size on the html element:

html { font-size: 100%; }     /* 1rem = 16px */

@media screen and (min-width: 25em) {
  html { font-size: 112.5%; } /* 1rem = 18px */
}

Calculating with calc()

My scale is coming along. Its variables’ intuitive names make it easy for me to use, and its rem values respect the user’s browser preferences and allow me to easily shift the size of the entire scale at different viewport sizes. But my setup still isn’t optimized for one very important adjustment: the interval, which is currently 1.5. If 1.5 isn’t quite working for me and I want to see how an increase or decrease will affect the scale, I need to do the math all over again for every step in the scale every time I adjust the interval. The bigger the scale, the more time that will take. It’s time to put down the abacus and get calc() involved.

:root {
  --int: 1.5;
  --scale0: 1rem;
  --scale-1: calc(var(--scale0) / var(--int));
  --scale-2: calc(var(--scale-1) / var(--int));
  --scale1: calc(var(--scale0) * var(--int));
  --scale2: calc(var(--scale1) * var(--int));
}

My interval now has its very own variable, called --int. calc() determines each scale size by multiplying the preceding size by --int. Now that every size is ultimately dependent on --scale0’s value, --scale0 must appear first in the list. Since the sizes smaller than --scale0 are going down rather than up, their values require division rather than multiplication.

Scaling the scale

I can now quickly and easily tweak my scale’s interval by adjusting --int until the proportions are just right, but if I want to add more sizes to the scale, I need to add more variables and calc() values. This isn’t too big of a deal, but if I want to double or triple the number of sizes, it’s kind of a headache. Luckily, this is the sort of thing Sass is really good at. In the following code, adjusting the first four Sass variables at the top of :root will quickly spin up a set of CSS variables like the scale above, with any interval (proportional or fixed) and any number of scale sizes:

:root {
  $interval: 1.5;    // Unitless for proportional, unit for fixed
  $body-text: 1rem;  // Must have a unit
  $scale-min: -2;    // Unitless negative integer
  $scale-max: 2;     // Unitless positive integer

  --int: #{$interval};
  --scale0: #{$body-text};

  @if $scale-min < 0 {
  // Generate scale variables smaller than the base text size
    @for $i from -1 through $scale-min {
      @if type-of($interval) == number {
        @if unitless($interval) {
          --scale#{$i}: calc(var(--scale#{$i + 1}) / var(--int));
        } @else {
          --scale#{$i}: calc(var(--scale#{$i + 1}) - var(--int));
        }
      }
    }
  }
  @if $scale-max > 0 {
    // Generate scale variables larger than the base text size
    @for $i from 1 through $scale-max {
      @if type-of($interval) == number {
        @if unitless($interval) {
          --scale#{$i}: calc(var(--scale#{$i - 1}) * var(--int));
        } @else {
          --scale#{$i}: calc(var(--scale#{$i - 1}) + var(--int));
        }
      }
    }
  }
}

Go forth and scale

Typographic scales have been an indispensable part of my work for many years, and CSS variables and calc() make setup, adjustments, and experimentation easier than ever. I hope you find these techniques as useful as I do!


About the author

Rob Weychert is a Brooklyn-based designer. He helps shape the reading experience at ProPublica and has previously helped make books at A Book Apart, games at Harmonix, and websites at Happy Cog. In his free time, he obsesses over music and film. Despite all this, he is probably best known as a competitive air guitarist.

More articles by Rob




graph

Clearer than truth: the polygraph and the American Cold War / John Philipp Baesler

Dewey Library - JK468.L5 B34 2018




graph

From domination to coloring [electronic resource] : Stephen Hedetniemi's graph theory and beyond / Gary Chartrand, Teresa W. Haynes, Michael A. Henning, Ping Zhang.

Cham, Switzerland : Springer, [2019]




graph

Cryptography and coding [electronic resource] : 10th IMA International Conference, Cirencester, UK, December 19-21, 2005 : proceedings / Nigel P. Smart (ed.)

Berlin : Springer, [2005]




graph

Cryptography and coding [electronic resource] : 11th IMA International Conference, Cirencester, UK, December 18-20, 2007 : proceedings / Steven D. Galbraith (ed.)

Berlin ; New York : Springer, [2007]




graph

Applying graph theory in ecological research / Mark R.T. Dale (University of Northern British Columbia)

Dale, Mark R. T. (Mark Randall Thomas), 1951- author




graph

Perovskite : crystallography, chemistry and catalytic performance / Jinghua Zhang and Huan Li, editors




graph

152 JSJ GraphQL and Relay with Nick Schrock and Joe Savona

02:25 - Nick Shrock Introduction

02:40 - Joe Savona Introduction

02:49 - Facebook and Open Source

04:10 - GraphQL and Relay Overview

  • React for Your Data” / Component-based Data Fetching

06:11 - Unique to React? Passing Down Through the Hierarchy

10:09 - Queries

  • Tooling
    • Graphical
  • Pulling Definitions

14:13 - Why Do I Care? (As Someone Not Working at Facebook)

15:21 - Building Applications with GraphQL and Relay

19:01 - GraphQL and Building Backends

21:42 - Drivers and Client Software

  • Synthesize => Code Generation
  • Flux
  • Container Classes

30:58 - Reusing Components

31:50 - Data Management

34:25 - Open Source

36:40 - Reflecting Backend Constraints? (Optimizing the Backend)

43:02 - Relationships => Logs

46:24 - Security

47:16 - Replacing REST (Adopting New Technology)

  • “The Progressive Disclosure of Complexity”

52:14 - What You Wouldn’t Use GraphQL or Relay For

  • Games

Picks

Another Eternity by Purity Ring (Jamison)
JT Olds: What riding a unicycle can teach us about microaggressions (Jamison)
OCReMix (AJ)
Duet Display (Chuck)
Summoners War (Chuck)
Thinking, Fast and Slow by Daniel Kahneman (Joe)
Learning a new language (Joe)

Other People: What Kind of Man (Nicolas Jaar remix) - Florence & the Machine (Nick)
Boosted Boards (Nick)
The Onion: Succession Of Terrible Events Fails To Befall 33-Year-Old Riding Longboard To Digital Media Job (Nick)




graph

JSJ 246 GraphQL and Apollo with Uri Goldshtein

On today's episode, Charles Max Wood and Aimee Knight discuss GraphQL and Apollo with Uri Goldshtein. Uri is a core developer at Meteor Development Group, and is an expert with GraphQL and Apollo.




graph

JSJ 257 Graphcool with Johannes Schickling

On today's JavaScript Jabber Show, Charles, Aimee, and AJ discuss Graphcool with Johannes Schickling. Johannes is based in Berlin, Germany and is the founder of Graphcool, Inc. He also founded Optonaut, an Instagram for VR, which he sold about a year ago. Tune in to learn more about GraphQL and see what's in store for you!




graph

JSJ 384: FaunaDB: Support for GraphQL and Serverless Development with Evan Weaver

Sponsors

  • Sentry– use the code “devchat” for $100 credit 

Panel

  • Charles Max Wood

  • AJ O’Neal

  • Joe Eames

  • Aimee Knight

With Special Guest: Evan Weaver

Episode Summary

Evan Weaver is the CEO and cofounder of FaunaDB, a serverless database and a great way to get started with GraphQL. Evan talks about what went into building the FaunaDB and his background with Twitter. FaunaDB arose from trying to fix Twitter’s scalability issues, and the panel discusses scalability issues encountered in both large and small companies. They talk about the difference between transient and persistent data. They discuss how to develop locally when using a serverless database and the importance of knowing why you’re using something. Evan talks about how developing locally works with FaunaDB. He addresses concerns that people might have about using FaunaDB since it is not backed by a tech giant. Evan talks about some of the services FaunaDB offers and talks about the flexibility of its tools. He talks about how to get started with FaunaDB and what the authentication is like. Finally, Evan talks about some well known companies that are using FaunaDB and what they are doing with it. 

Links

Follow DevChat on Facebook and Twitter

Picks

Charles Max Wood:

Aimee Knight:

Joe Eames:

Evan Weaver