wit

Rapid on-site and naked-eye detection of common nitro pesticides with ionic liquids

Analyst, 2020, Advance Article
DOI: 10.1039/D0AN00452A, Paper
Kovida, Vikas Sharma, Apurba Lal Koner
Rapid ‘in-field’ detection of environmentally hazardous organophosphorus and nitro-containing pesticides is highly essential due to the lethal effects caused by the inhibition of the activity of acetylcholinesterase (AChE).
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




wit

Core–shell magnetic microporous covalent organic framework with functionalized Ti(IV) for selective enrichment of phosphopeptides

Analyst, 2020, Advance Article
DOI: 10.1039/D0AN00038H, Paper
Fengjuan Ding, Yameng Zhao, Haiyan Liu, Weibing Zhang
We fabricated a core-shell magnetic Ti4+-functionalized covalent organic framework composite to selectively capture phosphopeptides in biosamples. This method is applicable to achieve rapid, selective and efficient phosphopeptide analysis.
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




wit

[ASAP] A Coculture Based Tyrosine-Tyrosinase Electrochemical Gene Circuit for Connecting Cellular Communication with Electronic Networks

ACS Synthetic Biology
DOI: 10.1021/acssynbio.9b00469




wit

[ASAP] Blue-Light-Switchable Bacterial Cell–Cell Adhesions Enable the Control of Multicellular Bacterial Communities

ACS Synthetic Biology
DOI: 10.1021/acssynbio.0c00054




wit

[ASAP] SCRaMbLEing of a Synthetic Yeast Chromosome with Clustered Essential Genes Reveals Synthetic Lethal Interactions

ACS Synthetic Biology
DOI: 10.1021/acssynbio.0c00059




wit

[ASAP] Extending SynBioHub’s Functionality with Plugins

ACS Synthetic Biology
DOI: 10.1021/acssynbio.0c00056




wit

[ASAP] Determinants for Efficient Editing with Cas9-Mediated Recombineering in <italic toggle="yes">Escherichia coli</italic>

ACS Synthetic Biology
DOI: 10.1021/acssynbio.9b00440




wit

[ASAP] Facilitating Protein Expression with Portable 5'-UTR Secondary Structures in <italic toggle="yes">Bacillus licheniformis</italic>

ACS Synthetic Biology
DOI: 10.1021/acssynbio.9b00355




wit

[ASAP] A Chemical Switch System to Modulate Chimeric Antigen Receptor T Cell Activity through Proteolysis-Targeting Chimaera Technology

ACS Synthetic Biology
DOI: 10.1021/acssynbio.9b00476




wit

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

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




wit

[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




wit

[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




wit

[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




wit

[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




wit

[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




wit

[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




wit

[ASAP] A Chemical Switch for Transforming a Purine Agonist for Toll-like Receptor 7 to a Clinically Relevant Antagonist

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




wit

[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




wit

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

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




wit

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

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




wit

[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




wit

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

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




wit

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

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




wit

[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




wit

[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




wit

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

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




wit

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

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




wit

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

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




wit

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

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




wit

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

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




wit

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

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




wit

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.




wit

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.




wit

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.




wit

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, […]




wit

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




wit

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

Rotch Library - N8219.L5 J64 2019




wit

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




wit

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

Rotch Library - N6888.B745 A4 2018




wit

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




wit

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




wit

Khnum, across times witness: Egyptian pavilion

Rotch Library - N6488.I8 V433 2019 E3




wit

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

Rotch Library - TR647.H42 2018




wit

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

Rotch Library - N7267.N45 2019




wit

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




wit

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

Barker Library - NC975.5.K78 A2 2018




wit

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




wit

SunriseSunset: solargraphs from Plum Creek / Bill Wittliff ; foreword by Kate Breakey ; essay by Keith Carter

Dewey Library - TR268.W582 2019




wit

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




wit

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