with

[ASAP] A Selective Modulator of Peroxisome Proliferator-Activated Receptor ? with an Unprecedented Binding Mode

Journal of Medicinal Chemistry
DOI: 10.1021/acs.jmedchem.9b01786




with

[ASAP] Structure-Based Bioisosterism Yields HIV-1 NNRTIs with Improved Drug-Resistance Profiles and Favorable Pharmacokinetic Properties

Journal of Medicinal Chemistry
DOI: 10.1021/acs.jmedchem.0c00117




with

[ASAP] Correction to Toggling Preassembly with Single-Site Mutation Switches the Cytotoxic Mechanism of Cationic Amphipathic Peptides

Journal of Medicinal Chemistry
DOI: 10.1021/acs.jmedchem.0c00608




with

[ASAP] Discovery of M-808 as a Highly Potent, Covalent, Small-Molecule Inhibitor of the Menin–MLL Interaction with Strong <italic toggle="yes">In Vivo</italic> Antitumor Activity

Journal of Medicinal Chemistry
DOI: 10.1021/acs.jmedchem.0c00547




with

[ASAP] Correction to Photoactivatable Prolyl Hydroxylase 2 Inhibitors for Stabilizing the Hypoxia-Inducible Factor with Light

Journal of Medicinal Chemistry
DOI: 10.1021/acs.jmedchem.0c00599




with

[ASAP] Design, Synthesis, and Mechanism Study of Benzenesulfonamide-Containing Phenylalanine Derivatives as Novel HIV-1 Capsid Inhibitors with Improved Antiviral Activities

Journal of Medicinal Chemistry
DOI: 10.1021/acs.jmedchem.0c00015




with

[ASAP] Computational Chemistry on a Budget: Supporting Drug Discovery with Limited Resources<subtitle>Miniperspective</subtitle>

Journal of Medicinal Chemistry
DOI: 10.1021/acs.jmedchem.9b02126




with

[ASAP] Discovery of Potent, Selective, and Orally Bioavailable Inhibitors of USP7 with In Vivo Antitumor Activity

Journal of Medicinal Chemistry
DOI: 10.1021/acs.jmedchem.0c00245




with

[ASAP] Optimization of Potent ATAD2 and CECR2 Bromodomain Inhibitors with an Atypical Binding Mode

Journal of Medicinal Chemistry
DOI: 10.1021/acs.jmedchem.0c00021




with

[ASAP] Selective Janus Kinase 2 (JAK2) Pseudokinase Ligands with a Diaminotriazole Core

Journal of Medicinal Chemistry
DOI: 10.1021/acs.jmedchem.0c00192




with

[ASAP] Molecular Basis for Omapatrilat and Sampatrilat Binding to Neprilysin—Implications for Dual Inhibitor Design with Angiotensin-Converting Enzyme

Journal of Medicinal Chemistry
DOI: 10.1021/acs.jmedchem.0c00441




with

[ASAP] Discovery of Selective, Covalent FGFR4 Inhibitors with Antitumor Activity in Models of Hepatocellular Carcinoma

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.9b00601




with

[ASAP] Chimeric Peptidomimetics of SOCS 3 Able to Interact with JAK2 as Anti-inflammatory Compounds

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.9b00664




with

[ASAP] Synthesis of Novel G Factor or Chloroquine-Artemisinin Hybrids and Conjugates with Potent Antiplasmodial Activity

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.9b00669




with

[ASAP] Novel HIV-1 Protease Inhibitors with Morpholine as the P2 Ligand to Enhance Activity against DRV-Resistant Variants

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.0c00043




with

[ASAP] Design, Synthesis, and Pharmacological Evaluation of Second Generation EZH2 Inhibitors with Long Residence Time

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.0c00045




with

[ASAP] Substituted Naphthalenediimide Compounds Bind Selectively to Two Human Quadruplex Structures with Parallel Topology

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.0c00041




with

[ASAP] Escaping from Flatland: Substituted Bridged Pyrrolidine Fragments with Inherent Three-Dimensional Character

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.0c00039




with

[ASAP] New Dual CK2/HDAC1 Inhibitors with Nanomolar Inhibitory Activity against Both Enzymes

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.9b00561




with

[ASAP] Selective Covalent Targeting of Mutated EGFR(T790M) with Chlorofluoroacetamide-Pyrimidines

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.9b00574




with

[ASAP] Artemisinin Derivatives with Antimelanoma Activity Show Inhibitory Effect against Human DNA Topoisomerase 1

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.0c00131




with

A BEM syntax with UX in mind

At some point, while working on the MontageJS framework, the question came up what CSS naming convention we should start using. After a long discussion we settled on using the BEM methodology, but changed the syntax a bit. To keep this post short, I won’t go into detail why using BEM is a good idea, but rather explain why we chose a different syntax. Here some examples:

.digit-Progress          /* org-Component */
.digit-Progress-bar      /* org-Component-childElement */
.digit-Progress--small   /* org-Component--variation */

Note: The org- (digit-) prefix is used as a name-space so it wouldn’t conflict with other packages/libraries/frameworks.

Now let’s take a look at the reasons for choosing such a syntax.

Hyphens (-)

The main reason why we’re using a hyphen (-) instead of underscores (_), has to do with the fact that their behavior is different when double-clicking to select text. Try for yourself:

component__element /* underscores */
component-element  /* hyphen */

See how when you’re using underscores it selects the part before and after, in this case the whole component__element. But with hyphens it let’s you select only the part you double-clicked. component OR element. This let’s you quickly edit only the parts you want:

camelCase

Now, what if the component or child element consists of multiple words? We could use underscores like component_name-element_name. It would still be double-clickable, but readability suffers since it’s harder to see what belongs together. Better to use camelCase which groups each part visually: componentName-elementName.

MainComponent

OK, I think we’re getting closer. As a last rule, for the “main” component we use PascalCase. The reason for it is to add emphasis and make it easier to distinguish the main component from a child element. Also when using a namespace, the component moves to the second position, which makes it even more important to have it stick out: org-Component-childElement

–variation

We kept the more commonly used double hyphens (–) for variations. digit-Progress--small. It makes sense, because it pulls the variation (–small) visually more apart and makes it look like it’s something “different” than the default component.


So that’s about it. For more details about this naming convention, take a look at the SUIT framework, which also started to use the same syntax and documented it really well.

In the end, whatever Shade of BEM you choose to cook with probably depends on your personal taste, but thinking about a great UX by improving usability and readability won’t hurt either.




with

Styling with STRINGS

At this year’s CSSConf in Melbourne (AU) I gave a talk called “Styling with STRINGS”. The talk is about how we can use Flexbox, currentColor and __EM__s inside components to quickly style entire Web Apps straight in the browser.

In case of tl:dw here some of the main points:

Layout

When creating mobile “App” layouts, where not the whole page is scrollable, but instead only certain parts. And you have anchored areas like header/footer and a main area that should fill out the available space, then the easiest way is to use Flexbox.

This lets you easily drag around components that are set as flex items and they always position nicely. Using flex: 1; on components makes them stretch out and fill the available space. A good use case is a search input or a title.

Color

If you don’t specify the border-color (initial value) it will be the same value as color.

Furthermore there is a color value called currentColor. As the name indicates, it’s also mapped to the current color value. We can use it as background-color for example. Not that useful when the text should be readable, since now text and background are the same color, but for some components without text it can be quite useful. Like in the example below with the slider thumb.

If a component set should look similar to the “iOS 7” style then currentColor works great. Below all components have no color values at all and only use currentColor. This let’s us change everything by only changing the color value in the root html element.

Size

In a similar way, EMs are mapped to font-size. So if we use EMs to define only the proportions of a component, we can use font-size to scale it up/down. And if we inherit the font-size we could also control everything at once with just a single property in the root or in groups if we go deeper down the DOM tree.

REMs work the same except that they are tied to the root html element only. We could use it to control the spacing of the components by using REMs for margin/padding.

I wrote about this in more detail in the Sizing (Web) Components post.

All together

Now if we combine this all and test it in an example application, we can easily design many variations right from the DevTools/inspector in a quick and easy way.

Feel free to play around with the CSSConf App yourself or check out the source on GitHub.

How to save?

You might wonder how you can save the changes made in the DevTools/inspector without having to manually copy them over into your CSS file. In Chrome there is a feature called Workspaces. It let’s you map a URL to a local folder. Once that is setup, all CSS changes will automatically be saved to your local disc. Here a post that explains how to setup Workspaces. It’s advised to use version control like Git, so that you can always discard all changes if you went too far and wanna start over.

Conclusion

Admittedly it is somewhat in between of being useful for production and just a “hack”. Especially the currentColor. But the main point of the talk is best told by this quote:

“Creators need an immediate connection” — Bret Victor

The examples I used are just the closest I could get using CSS alone and still keep code clean. I hope we keep that principle alive and improve on it.


ps. Artist of the puppet master illustration: Unknown.

pss. Here all the other videos from CSSConf.




with

Contextual styling with custom properties

Something I’ve been wanting for a long time, define different regions like a footer section, or side bar and not have to deal with all the contextual styling hassle. A.k.a. “Now that this button is used on a dark background, the button needs to change its colors too. Where should the styles live?”. Here an old post about struggling with contextual styling.

So then the other day I was doing some experiments with using custom properties for Atom’s UI. Turns out, using custom properties might make contextual styling a bit easier. For the rest of the post, let’s switch to a more simple example. A page where the main area is light, but then has a dark hero and footer section. Like this:

In the past, I probably would’ve created variations like Button--dark or overwrote it with header .Button {…}. Depends a bit on the project. Here another approach: Create themes with a set of variables, then apply the theme to the different areas.

1. Default theme

First let’s define our default theme with a bunch of variables.

[data-theme="default"] {
  --fg:         hsl(0,0%,25%);
  --border:     hsl(0,0%,75%);
  
  --bg:         hsl(0,0%,95%);
  --button-bg:  hsl(0,0%,99%);
  --input-bg:   hsl(0,0%,90%);
}

Then we create some components where we use the variables defined above.

[data-theme] {
  color: var(--fg);
  background-color: var(--bg);
}

.Button {
  color: var(--fg);
  border: 1px solid var(--border);
  background-color: var(--button-bg);
}

.Input {
  color: var(--fg);
  border: 1px solid var(--border);
  background-color: var(--input-bg);
}

And lastly we add the [data-theme="default"] attribute on the body so that our components will pick up the variables.

<body data-theme="default">

If you wonder why use data-theme attributes over classes? Well, no specific reason. Maybe with attributes, it’s a hint that only one theme should be used per element and is more separated from your other classes.

At this point we get this:

See the Pen Contextual styling with custom properties (1/3) by simurai (@simurai) on CodePen.

2. Dark theme

But our designer wants the hero and footer to be dark. Alright, let’s define another theme region.

[data-theme="dark"] {
  --fg:         hsl(0,10%,70%);
  --border:     hsl(0,10%,10%);
  
  --bg:         hsl(0,0%,20%);
  --button-bg:  hsl(0,0%,25%);
  --input-bg:   hsl(0,0%,15%);
}

And add the theme attribute to the header and footer.

<header data-theme="dark">
<footer data-theme="dark">

Which gives us this:

See the Pen Contextual styling with custom properties (2/3) by simurai (@simurai) on CodePen.

The reason why this works is that custom properties cascade and can be overridden on nested elements, just like normal properties.

3. Hero theme

A few months pass and our designer comes back with a redesigned hero section. “To make it look fresh” with a splash of color.

No problem! Just like with the dark theme, we define a new “hero” theme.

[data-theme="hero"] {
  --fg:         hsl(240,50%,90%);
  --border:     hsl(240,50%,10%);
  
  --bg:         hsl(240,33%,30%);
  --button-bg:  hsl(240,33%,40%);
  --input-bg:   hsl(240,33%,20%);
}
<header data-theme="hero">

And here is that fresh hero:

See the Pen Contextual styling with custom properties (3/3) by simurai (@simurai) on CodePen.

It’s also not limited to colors only, could be used for sizes, fonts or anything that makes sense to define as variables.

Benefits

Using these theme “regions” lets your components stay context un-aware and you can use them in multiple themes. Even on the same page.

  • Developers can add components, move components around, without having to know about in what context (theme) they live. The markup for the components stays the same.
  • Design systems authors can create new components without worrying about where they get used, the variables used in components stay the same.
  • Designers can define new theme regions, or change existing ones, without having to make changes to a component’s HTML or CSS, it stays the same.

Less time to talk about who, how and where, more time to talk about the weather. ☔️????

Concerns

Yeah, right. The big question: But does it scale? Can this be used for all use cases.

Ok, I’m pretty sure it doesn’t fit all situations. There are just too many to find a single solution for them all. And I’m actually not sure how well it scales. I guess it works great in these simple demos, but I have yet to find a larger project to test it on. So if you have used (or plan to use) this approach, I’m curious to know how it went.

A concern I can imagine is that the list of variables might grow quickly if themes have totally different characteristics. Like not just a bit darker or lighter backgrounds. Then you might need to have foreground and border colors for each component (or group of components) and can’t just use the general --fg and --border variables. Naming these variables is probably the hardest part.

Update I

@giuseppegurgone made an interesting comment:

in suitcss projects I used to define component level custom props, theme variables and then create themes by mapping the former to the latter suitcss-toolkit

So if I understood it correctly, by mapping theme variables to component variables, you could avoid your theme variables from growing too much and you can decide for each component how to use these theme variables.

Update II

If it’s too early to use custom properties in your project, @szalonna posted an example how to do something similar in SCSS.




with

Unlock Your Team’s Potential With Teamstack

Teamstack is a password manager for your whole team. Running in the cloud it allows you to manage your tools and resources, and seamlessly scale your teams’ access, from a single, easy-to-use control panel. Teamstack is powerful, and secure with multi-factor authentication, single sign-in, SAML and form-based authentication. It works with desktop and mobile apps, […]




with

The matter of photography in the Americas / Natalia Brizuela and Jodi Roberts ; with contributions by Lisa Blackmore, Amy Sara Carroll, Marianela D'Aprile, María Fernanda Domínguez, Heloisa Espada, Rachel Price, Diana Ruiz, Tatiane Santa Ro

Rotch Library - TR184.B75 2018




with

Library of light: encounters with artists and designers / Jo Joelson

Rotch Library - N8219.L5 J64 2019




with

Legacy of the masters: painting and calligraphy of the Islamic world from the Shavleyan family collection / Will Kwiatkowski ; with contributions by John Seyller

Rotch Library - N6260.K87 2019




with

For your pleasure: Johannes Brus, photoworks and sculptures / with an essay by Clément Chéroux

Rotch Library - N6888.B745 A4 2018




with

Gordon Parks: the new tide, early work, 1940-1950 / Philip Brookman ; with essays by Maurice Berger, Sarah Lewis, Richard J. Powell, Deborah Willis ; series editor, Peter W. Kunhardt, Jr

Rotch Library - TR647.P37 2018




with

T.C. Cannon: at the edge of America / edited by Karen Kramer ; with contributions by heather ahtone, Sherwin Bitsui, Caitlin Cooper, Frank Buffalo Hyde, Trevor Fairbrother, Santee Frazier, Joy Harjo, Joan Naviyuk Kane, Karen Kramer, Deana McCloud, America

Rotch Library - NX512.C36 A4 2018




with

Dialogues with solitudes / Dave Heath ; [editors: Diane Dufour, Pierre Hourquet, with Julie Héraut]

Rotch Library - TR647.H42 2018




with

Under the palm trees: modern Iraqi art with Mohamed Makiya and Jewad Selim / Ahmed Naji

Rotch Library - N7267.N45 2019




with

Mary Corse: a survey in light / Kim Conaty ; with contributions from Robin Clark, Michael Govan, Alexis Lowry, and David Reed

Rotch Library - N6537.C663 A4 2018




with

Belonging: a German reckons with history and home / Nora Krug

Barker Library - NC975.5.K78 A2 2018




with

Picture industry: a provisional history of the technical image 1844-2018 / edited, with an introduction by Walead Beshty ; foreword by Maja Hoffmann, Tom Eccles

Rotch Library - TR350.P53 2018




with

Trouble with women artists: reframing the history of art / Laure Adler & Camille Viéville ; translated from the French by Kate Robinson

Rotch Library - N8354.A3513 2019




with

Bestowing beauty: masterpieces from Persian lands-selections from the Hossein Afshar collection / edited by Aimée Froom ; with essays by Walter B. Denny, Aimée Froom, Melanie Gibson, and David J. Roxburgh; and contributions by Robert Hillenbrand

Rotch Library - N7280.B47 2019




with

Indian life and people in the 19th century: company paintings in the TAPI Collection / J.P. Losty ; with an introduction by John Keay

Rotch Library - ND2048.L67 I53 2019




with

Hot, cold, heavy, light: 100 art writings, 1988-2018 / Peter Schjeldahl ; edited with an introduction by Jarrett Earnest

Rotch Library - N7445.2.S35 2019




with

Shirin Neshat: I will greet the sun again / organized by Ed Schad ; Shirin Neshat in conversation with Glenn Lowry ; with essays by Godfrey Cheshire, Layla S. Diba, Farzaneh Milani, and Ed Schad

Rotch Library - TR647.N4454 2019




with

Painting with fire: Sir Joshua Reynolds, photography, and the temporally evolving chemical object / Matthew C. Hunter

Online Resource




with

Gauguin: portraits / edited by Cornelia Homburg, Christopher Riopelle ; with contributions by Elizabeth C. Childs [and five others]

Rotch Library - ND553.G27 A4 2019




with

Designs for different futures / Kathryn B. Hiesinger & Michelle Millar Fisher, Emmet Byrne, Maite Borjabad López-Pastor & Zoë Ryan ; with Andrew Blauvelt, Colin Fanning, and Orkan Telhan ; contributions by Juliana Rowen Barton [and 24 o

Rotch Library - NK1397.D483 2019




with

UH PRESS TITLES HONORED WITH 2019 KA PALAPALA PO‘OKELA AWARDS

[See the original post on the UH Press website.] At the 2019 Ka Palapala Po‘okela awards presentation on December 13, we were delighted that seven of our titles were selected as honorees. These included: • Pathway of the Birds: The Voyaging Achievements of Māori and Their Polynesian Ancestors, by New Zealand author Andrew Crowe, won in two categories: Illustrative […]




with

How the fiddle flows [videorecording] / Streaming Fiddles Media in co-production with the National Film Board of Canada. --




with

Last Maori Wars : two accounts of the conflicts in new zealand during the 1860s-the last maori war... in new zealand with a sketch of the new zealand war.

Whitmore George S author




with

Nine coins: Nueve monedas / by Carlos Pintado ; translated from Spanish by Hilary Vaughn Dobel ; with an introduction by Richard Blanco

Hayden Library - PQ7392.P58 N564 2015




with

The white islands: Las islas blancas / Marjorie Agosín ; translated by Jacqueline Nanfito ; with an afterword by Michal Held-Delaroza

Hayden Library - PQ8098.1.G6 A2 2016




with

Albina and the dog-men: a fantastical novel / Alejandro Jodorowsky ; translated from the Spanish by Alfred MacAdam ; with illustrations by François Boucq

Hayden Library - PQ7298.2.O3 A6513 2016