 He's a data visualizer and designer for NASA's Earth Observatory with 19 years of experience at NASA. He's an expert at creating clear and compelling imagery from satellite data. Many of you have probably seen his collared tutorials who are incredibly just really incredible. He's focusing on producing visualizations that are elegant and easily understandable while accurately representing the underlying data. His imagery has appeared in newspapers and magazines and websites and advertisements and we're actually featured on the logging screen of the original Apple iPhone. So please give a warm welcome to Robert Timmons. Thank you, Irene. So I'm the lead visualizer on NASA's Earth Observatory. And our mission is to share with the public the images, stories and discoveries about climate and the environment that emerge from NASA research. And as you can imagine, that involves quite a few remote sensing images and data sets of the Earth. So we deal with things like temperature, temperature anomaly, vegetation, aerosols, ozone, nitrogen dioxide, carbon dioxide, carbon monoxide, energy flux, clouds and dozens of other data sets. So it's really challenging to show all of these different data sets so that they're all distinct but that they all show the underlying data as accurately as possible. So I've just worked a lot with using color as a representation tool. So today I'll just go over some very basic color theory just enough so you'll understand the terms that I'm talking about. Simple versus perceptual color spaces. Color and visualization, so how to represent numbers with colors. And that's actually mostly a solved problem. So even though that poor use of color is really common, 15, 20 years ago researchers like Cynthia Brewer actually proposed a pretty comprehensive way of using color for representing numbers. And then I'll show some examples that really take advantage of what you can do with precise control of your colors and then just go over a couple tools useful for creating your own palettes. So just to get started, does anybody know what this is? And John Swabish, you can't answer. Good, anything else? It's actually Mars. It is not an artist's impression. It is the first image of the surface of another planet ever taken from space. So July 15, 1965, Mariner 4 flew past Mars. It was actually a replacement mission, the first one it failed. And the tape recorder was a backup tape recorder. So the engineers were concerned about the reliability of their hardware. So while they were waiting for the computers to crunch the numbers, they printed out long strips of papers with the values that had been recorded by the instrument and then transmitted back to Earth, and then colored in the numbers with pastels. So they were doing by hand something that the computer was actually taking longer to do. So they were literally painting by numbers. And so the purpose of data visualization, so pretty much any data visualization, is to illuminate the data and to show patterns and relationships that are otherwise hidden in an impenetrable mass of numbers. So if you go back here, if you would just have that and it was just the numbers, you really wouldn't be able to see the girl in the red dress from the matrix. You just see the numbers. But by color coding them, you can see the patterns that represent the surface of another planet. And so color for this type of spatial data, so where you have an X, a Y, and then a Z, so multi-dimensional data, it doesn't have to be a place on a surface, but that's the type of thing I work with most oftenly. It's one of the most effective and certainly the most common way of conveying that type of information. And then careful use of color can enhance clarity, aid storytelling, and draw a viewer into your data set. But poor use of color can obscure that data or even mislead. So to sort of explain how to do good color, I think you need to understand a little bit of basic color theory. And so this is not really my area of expertise. I know just enough to get myself into trouble. So if you do know a lot about color theory, don't boo too loudly. So just go into some of the ways that our retina detects color and how the cells in our eyes respond to different wavelengths, how that compares to the RGB channels on a monitor, and then describe color spaces based on lightness, saturation, and hue, which is more representative of how we think about color and how our brains process color. And also discuss how these color spaces are perceptually uniform. So no matter which direction you're moving, your changes are going to be equivalent. And that's really important if you want to accurately represent underlying data. So there is an objective reality to color. It's a representation of wavelength. But the colors that we see are tricks of the imagination, and there is no perfectly objective view of color. This is a quote from James Gleick on the Radio Lab podcast a couple years ago. They did one called Ripping the Rainbow, a new one, which is just a fascinating look at the psychology of color and color perception. And I highly recommend it. But what he's meaning by that is that what we see and what our brains are telling us is out there is a construct. It's processing that's going on from the moment that light hits the retina and then continues through the optic nerve and into the brain where we're processing vision. That's not a real reality. It's definitely a constructed reality so that we can interpret it and move through it and react to it appropriately. So we can see that lion that's hiding in the brush, or we can see that bright red piece of fruit that's hanging off of a tree. So this is sort of the basic spectral response of the cones, which are the color sensitive cells in our retinas. And so this is actually a relative contribution. So it's not the exact amount that each of these cells responds to different wavelengths. Or you can also do it sort of proportional to the number of cells because they're not evenly matched between short wavelength, medium wavelength, and long wavelength. But sort of it's assumed that the three types of cones contribute equally to our color perception. And you can see that these are all different shapes. They're all different widths and different heights. And that they're all much broader than the three very narrow frequency bands that you would get from a monitor. So the red, green, and blue primaries in an additive color space. And then these are what these three primaries look like. To a computer, these three color ramps of red, green, and blue are all equal. They all start at 0. They all go to 255. So they're black to full brightness. But because of that really strange and non-linear color response, green is very bright to us. Pure red is actually about 50% gray. And pure blue is even darker than that. So you can't just assume if you put up a pure red, three chips of color, one's red, one's green, one's blue, that we're going to think that those are all equal values because the brightness varies so much. Instead, what you need to be doing is thinking in a hue space or a color space that's built around lightness, hue, and saturation. And by lightness, I mean just purely black to white. Hue is what we colloquially think of when we think about color. So orange, green, blue, purple. Those are hues. And then saturation is just dull to rich. So a dull gray to a blood red. So each of these ramps is controlling the other two characteristics are held constant and just varying lightness, varying hue, and varying saturation. And then there is a color space called CIELCH, which breaks these components down mathematically and is used for translating between different color spaces to translate from film to a computer screen to print. And it's actually based on human perception. So they would measure how people saw little chips of color that filled either two degrees or 10 degrees of their field of vision. And so it's a color standard. And if we use this standard, we can actually build palettes and build color rainbows and stuff that are actually perceptually constant. So they are corresponding to how we see instead of corresponding to simple math and a computer. And so this is what LCH color space looks like. Each of these pinwheels is a constant lightness. And then saturation increases as you move outwards from the center. And hue changes as you move 360 degrees around in a circle. So hue is sort of unique because it wraps in on itself while lightness and saturation have a begin point and an end point. And one of the things you should notice is that color space is extremely lumpy. So there's no such thing as a dark yellow. It just doesn't exist. It's not something we can perceive. And it's something that you need to be aware of when you're trying to represent numbers with colors because you don't want to be changing your numbers that are in an invisible way because you're not conveying any information that way. Another thing that you should notice about this chart is that every step is equal. So if you move out from that center point to the next one, no matter what the lightness is, it's still the same perceived difference. And that's the way that we can build color palettes that change equally in accordance to the data that's underlying. And so one thing I'd like to point out that this is not the same thing as an HSB scale. So HSB is just a direct linear translation of RGB. And it just forms a cylinder. So this is that exact same thing where each of these is, in theory, equal lightness. But you'll notice that they're not actually equally light and that they're perfectly uniform. So there's actually colors that you can specify in HSB that mean nothing because there's no visible difference between them to us. So now that we have those basic definitions, I'd like to talk about using color in visualization. There's a long history of doing this in cartography. It's 100 or 200 years older of a practice than computer science or even before the term data visualization was coined. And the palettes that they've developed are actually based on how we see and similarly to LCH, as opposed to a lot of the modern palettes, which were more built for the convenience of the programmers. Using a color space is more accurate than using an RGB color space, but it's still far from perfect. And then I'll also talk a little bit about sort of the different types of data. So sequential data, which is just high to low, divergent days of data, which is positive and negative, and then qualitative maps, which are to show different categories. So as I mentioned, cartographers have been encoding data with color for a very long time, at least 190 years. This map is from 1823 and it's temperature zones across the whole world. And so even though if you know my work, you know that I'm not a big fan of the rainbow palette, in this particular case, I actually think it works because it's partially quantitative. So you're talking about hot regions and cool regions and that you can assign particular temperatures to that. But it's also partially qualitative because it's not a direct numerical relationship. And the rainbow palette is actually very good at segmenting regions. So you can pretty easily see that around the equator you have the torrid regions and in the poles you have the frigid regions and those zones in between. So I just really encourage you to look at the work that cartographers are doing in print because it is consistently at a very high level, has been done, I wouldn't say in a purely scientific way, but definitely in a research-based way, developed in the late 1800s, refined in the mid-20th century, and continue to be used today, including this map, a bathymetric map of Crater Lake and surrounding the surrounding National Park, where you both get a sense of the depth of the lake and the land cover classification and the topography, as well as some of the roads and the park boundaries and things like that. So it's just looking at maps is probably, you know, contemporary maps are some of the best uses of color and data-vis. So I've mentioned these palettes developed early on for data visualization and computers and the two most common tend to be, or are the grayscale palette and the rainbow palette. So grayscale is just a black-to-white ramp and a rainbow palette is just moving around the edge of that hue saturation and brightness space at full saturation. And they're both pretty flawed as far as accurately representing the patterns and the underlying values, but they're flawed in completely different ways. So with the grayscale palette, your main problem is that surrounding tones affect our perception of the lightness of like small areas of color. So adjacent colors and adjacent brightnesses will affect how we perceive things. And this is something that's physiologically based. You can't really defeat it just because you think you can and you're thinking about it. It's like it is so hardwired in your visual system that you have to understand that it's always happening. So each of these little gray rectangles in the color ramp is the exact same color. They're all 50% gray. But on the left-hand side, surrounded by light, they appear darker. On the right-hand side, surrounded by dark, it appears lighter. And so this is actually the smaller the area, the worse the effects. If you have a really fine detail in a data set, this is a much bigger problem than if you had like wide swashes of color. So with the rainbow palette, the problem is more that it's uneven. So if you have a change from one to two or 11 to 12 or 101 to 102, you want that perceptual change to be equal because it's all just one change. In a rainbow palette, if it's near cyan or yellow, that could appear to be a huge change. But if it's right in the middle of this green area, it would appear like nothing at all is going on. So if you're using the rainbow palette, which my colleagues at NASA do all the time and just are so wetted in that they won't believe me when I present, I'm like, look, it's there. And they're like, oh, but I see more detail. It's like it's not detail that you can see. I mean, it's not really detail in your data, it's just detail that you can see and it's misleading you and they just don't get it. So I try, hopefully you guys will take that out into the world and use better color. But there is a slow revolution happening with a lot of the younger scientists are taking this more seriously, they're taking design more seriously. So I do see at least a little bit of hope. So a few other problems with the rainbow palette is that it varies from dark to light to dark to light to dark again. And so it sort of breaks any natural ordering of the colors. And another problem with it is that it uses up the entire spectrum. So it makes it very, very hard to layer in additional data. So if you wanna show like coastlines or roads or anything like that, you really can use black and white and that's it. There's no other way to add in extra data. So it just dominates everything. So as you can tell, I really hate the rainbow palette. And fortunately I have some improvements that I can suggest. So Colin Ware, a color researcher at University of New Hampshire, I'm not a color researcher, a data visualization researcher at UNH, describes it this way. A kind of spiral in color space that cycles through a variety of hues while continuously increasing in lightness. So you're basically adding a lightness gradient to a change in hue and saturation. So you get the perceptual linearity of a grayscale palette and you get some sort of more discrimination because you're changing in these other color components. One other thing to keep in mind is that our visual system is really driven by lightness. The hue and saturation are more the secondary order effect. So if you have the lightness vary in a way that's perceptually accurate, you can cheat a little bit on the other two to make a palette that's more suited to your dataset or emphasizes or de-emphasizes certain things. So here's another example, showing a palette computed in LCH versus a palette computed in HSB. And you notice the LCH palette has a very nice smooth gradation from pale yellow through aquamarine to blue. HSB starts at the same pale yellow, goes through sort of a bright green that sort of smudges out some of that detail and then has a very quick transition to dark blue. So HSB is better than rainbow, but still you should be working in pure LCH space. And so all of these palettes are applied to what Cynthia Brewer terms as sequential data. So it's data that has a low value to a high value. In this case, this is a map of evaporation in the Idaho high desert. You can see the central pivot irrigation and the areas where there's rivers. You have a lot of vegetation. It's emitting a lot of water into the atmosphere. The more yellow areas are more barren land with very little evaporation going on. So it's just a pretty simple mapping of high values are the dark and highly saturated colors, the dry areas are a light, very pale color. So in addition to sequential, there's two more fundamental data types, divergent data and qualitative data. So divergent data has like a break point in the center. So signifying a difference. So anomaly data, difference of this year's temperature versus the average temperature or profit and loss or positive and negative charge are things that it's appropriate to use a divergent palette for. And then qualitative data is where your data is broken up into discrete classes or categories. So something like land cover or political parties in a European multi-party system where you have like six or seven parties, you would want to use what's called a qualitative palette. So here are some examples of divergent palettes. And they're basically two sequential palettes sliced together with the center point being a light neutral color. You want a neutral color because you don't want to associate the middle values with either of the extremes. And light usually works better because you are often wanting to emphasize your outliers. So it's easier to pick up, our visual systems are better picking up dark saturated colors than they are light pale colors. So that's why you usually construct with a light color in the middle and then move to the more extreme colors on either end. And so here are just two examples of the palettes. And then here's one in use where I actually break that rule I said about using a neutral color. So this is magnetism on the sun. And so the color is representing positive or negative magnetism and the neutral color is yellow because I wanted it to be evocative of the data set. If I used gray, it would just sort of be bland. And this really just helps with an instantaneous read of what you're looking at. Another short digression, red, green color blindness or color deficient vision. So about 8% of males, 5% of the general population are missing some of the cones in their eyes. And that means that they cannot distinguish colors as well as people with a full compliment of all three types of cones. Most common is red, green color blindness. So browns and reds look like green. This screen is actually doing a pretty good job of showing it. So each of these pairs is a full color version and then a version that's simulated by Photoshop to look as it would be to somebody with red, green color blindness. So I'm assuming since I have an audience of about 200 people that maybe five to 10 of you have some degree of color deficient vision. So of the top pair, do any of those look identical to you or can you clearly see the differences? Yeah, so Eric has an issue with, he can't see them. So unfortunately that top palette we had been using on the Earth Observatory for like five, maybe 10 years to show differences of vegetation. And even though one of my colleagues is like, I'm colorblind, I can see nothing. I stuck with it. The bottom palette is from Color Brewer. It is considered to be colorblind safe. And I hope that Eric can see the differences between the low values and the high values. All right, excellent. So you can use Photoshop or a couple other web-based tools to simulate different types of color deficient vision to make sure that your visualizations are readable by as large an audience as possible. So the last type of data is qualitative data. And there you have, you wanna make your colors to be as distinct as possible to segregate out these different classes. I'm showing two different 12 class palettes. These are actually a bit beyond what is reasonable. Like if I were to use this on a real dataset you really wouldn't be able to distinguish some of these colors from one another especially if the fields are small. Good rule of thumb is magical number seven plus or minus two. Even though the research was on a completely different subject it still seems to pretty much hold up. So five to nine categories works. If you have more than that one technique you can try to do is to group like classes together. So in this case, urban areas are all given chains of tones of red even though there's four different classes of urban. And forests are given three different shades of green. So this allows you to sort of have an overview where you can see urban and forest and then you can pick out more details when you look at the whole image more carefully. It was pointed out to me after I used this as an example that this is completely useless for somebody with color division of vision. So the urban and the forest look pretty similar I'm sure. It does, okay. So it can be problematic. So this is just, I left it in here because it sort of underscores the point that you need to be really careful with presentation and accessibility issues sometimes that things that you think are perfect can break down in some cases. So all of what I've gone through so far is what I would consider to be like the basically understood color theory and color and visualization. Cynthia Brewer wrote it down all in the mid 90s. It's in Colin Weir's books. Tufty talks about it. And it's all pretty well understood and it's based on what seems to be pretty decent research. Beyond this, I think some of the things that you can do sort of playing with these colors are to use intuitive or semantically associated colors. Think about the cultural associations of colors when you're doing a visualization. You can carefully match colors to display multiple data sets. Use it to show transition points that aren't diverging data. Use it to separate data from non-data and to separate figure from ground and use it to create a hierarchy for layering multiple data sets together. So here's an example of what I would consider to be a reasonably intuitive palette. On the left is our famous rainbow scale. Gene Feldman has argued with me again incessantly that he's been doing it for 20 years. He knows what he's doing. And not only do you see these really sharp transitions between the equatorial waters and then just north and south of there and then another sharp transition in the North Pacific, then it washes out all the detail in between the Canadian coast and East Asia and then along the coastline you get detail again. So you have those inherent problems in the rainbow palette but also we're talking, this data set is something called ocean color. So it's measuring essentially the amount of vegetation in the ocean. And generally speaking, we don't associate day glow green, bright yellow and bright red with ocean colors. Using a more muted palette that goes from dark blue to pale yellow suits the data set more and I believe is more readable by audiences that don't already have PhDs in your subject matter. And there is a growing amount of research that supports that view. It's not just me hand waving. So there's a good paper that just came out and was just written up, I think the night or Harvard School of Business called Selecting Semantically Resonant Colors for Data Visualization, which is talking about like if you're doing a chart of say sales of different types of fruit, if you color the bars to represent what we, blueberries and tangerines, blue and orange that we can perceive that much more quickly than if we have to cross reference with a key. Another thing is that colors have emotional and socially constructed meanings. So John Nelson put together essentially Google Image Search Quoting where he would take these abstract terms, run a Google Image Search and then blend them all together to come up with sort of the archetypal color for each of these. Notice that this is in English. But so for nature we have green, which is no surprise. Abstract is sort of a blue, business is blue, frightening and dangerous and depressed are red and orange. So I put it out that these are all in English. You know, red is sort of a color of anxiety or danger in Western cultures. In China it's a symbol of good luck. So don't expect these to be universal. So if you still don't believe me on that, here is the famous Iraq's Bloody Telegraphic. Andy Kirk brought it up yesterday, talking about negative space. So Andy Kotgrieve, I think maybe six months ago, did a redesign, making it Iraq, deaths on the decline. We're merely by flipping the orientation and coloring the red blood-like drips into a nice neutral blue. He gave the graph an entirely different message. So obviously some of that is the shape of the data set and how we read it, but a huge component is also the changes in the color. So you can use color to evoke an emotional response in an audience. Another thing that I think is really cool is you can show two equivalent quantities at the same time. So in this case I'm showing net primary productivity, which they're measuring the exact same thing, which is the amount of carbon that's brought out of the atmosphere and into vegetation. So either that same oceanic vegetation we were looking at with ocean color or mostly trees on land. But they're measured in completely different ways by different instruments. So they're not the same data set. And so I could have just brought them together and applied one pallet to the whole data set, but then you wouldn't be able to tell instantaneously which is land and which is ocean. I'd have to put a coastline in or something like that. But what I've done instead is take two color ramps that start and end at the exact same lightness and they have the exact same change in saturation. They just simply have different hues. So you can instantaneously differentiate what's land and what's ocean, but also directly compare between the quantities in say the Amazon rainforest and the equatorial belt in the central specific. So another interesting thing is to do, to indicate a threshold. So this is a map of sea surface temperature. And one interesting thing in the oceans is that as soon as you hit 82 degrees Fahrenheit, you can form sustained hurricanes. So at 82 and above, you get hurricanes that are getting stronger. As soon as they move into cooler water, they start dying. So this color pallet, the lightness is changing uniformly in the entire range. And I simply changed from a blue hue to a pink hue at exactly 82 degrees Fahrenheit. So you can see again instantaneously where you have a risk of hurricane formation and then where you're not gonna get any hurricanes. And you can see in the western Pacific why that's such a hotbed of really intense cyclones. And if you don't believe me on the lightness being equal, that's the same map converted to grayscale and Photoshop. So it preserves the underlying structure of the data. Andy also talked about nothing and the importance of showing no data. You can use color to differentiate data from no data really easily. So on the left is a globe put together by my colleagues at NOAA, where all of the water is colored, it's a much lighter color than anything that's considered to be a valid part of the dataset. But it's on the same color spectrum essentially. So it's just a lighter yellow on a beige to green scale. So it seems like it's on the same continuum. So you actually have to work hard to differentiate what's land from what's water. If all you do is just switch that to a neutral gray, which is sort of off of that continuum, it becomes relatively easy to make that differentiation. And that's because our brains and eyes actually do something called pre-attentive processing with color. So before we're even consciously aware of it, the eye is segmenting these two categories into colored and non-colored. So we just can glance at the image and you can see where the valid data is and where it's irrelevant because we're measuring vegetation, which isn't growing in the middle of the ocean. There's also some sort of surprising things that I found using color. In this case, I was trying to map the world's hottest places. So this is a map that's the maximum land surface temperature that occurred over the course of seven years in any given area. So every single pixel you see, except for Antarctica, which I should have colored to no data because it wasn't measured, but is on the scale. Every pixel you see is relatively warm for that area. So I didn't wanna do the traditional blue, yellow, red palette. I wanted everything to look warm. So I chose to use a desaturated yellow to rich red because the very brightest areas and darkest areas of the hottest regions sort of stand out a little bit, even though they're small regions. So you can see parts of Australia, parts of Iran, parts of Northern China are where these really hot areas are. And it worked pretty well as a global map. But when I zoomed in to show Northern China in particular, I got what I consider to be this very strange optical effect that is very strong to me personally, where in this image, what do you think the hottest areas are? Just glancing at it. Yeah, so it looks like those bright areas are the hottest ones. They're actually about 30 or 40 degrees C cooler than the sun-facing areas of those dunes on the right. So even though I'm using that exact same color palette that I used here, because of the structure, because they're these smaller areas with well-defined boundaries, they pop out, they pop into the foreground, and they look warmer. So I couldn't use that palette and had to switch back to the more traditional one, where you can clearly see that not only are they cooler, but you can see that that's a completely different structure. So that's all irrigated areas with vegetation, as opposed to the un-vegetated surfaces that are surrounding it. And I could probably even tweak this palette a little bit more, just to make some of the, even those sort of medium blues are super warm. Like even the hottest areas in this image are about 70 degrees C, which is literal cook and egg on it. And so the final thing that I'm gonna talk about that I think you can do with color is use it to create a hierarchy. So Ben Schneiderman has his famous mantra of overview first, zoom and filter, then details on demand. And he was referring specifically to interactive data visualization. But I think it works for static visualization too, where you give an overall picture, and then as you look at an image and study it more carefully, you can get more and more information out of it. And the way you do that is by layering. And color is an important part of that. So this is a mid-century USGS map of Chattanooga, Tennessee. And the underlying terrain is sort of these mellow earth tones, light, desaturated, and that shows all the topography. And then they've laid the street grid and buildings on top of that. So it segregates itself into two different layers. And you can start to see how the two are related. So how does the topography govern how the street grid is built? How does the river interact with the topography? So again, this is an example from cartography where they've just been doing this for so long and have been thinking about it so seriously that they've really come up with some of those local optimums that Mike was talking about yesterday. So I'll end with just a handful of tools that you can use. Color Brewer, the NASA color tool, and chroma.js. Color Brewer is the easiest. It's the most widespread. So she just gives you a tool which has sequential palettes, divergent palettes, and qualitative palettes. And then you can pick the number of categories you need. It'll show an example on the sort of sample map. And then it'll give you a list of RGB values that you can use to create a palette. These are really common. They're very well-designed. And it's pretty easy because you're just picking from a menu. If you want some more control, the NASA color tool gives you basically direct access to that CIE LCH space. So the pinwheels I showed are actually pulled directly from the site. It's just a little bit trickier because you have to build your own palettes. You have to go through sequentially and move the hue, pick your hue, pick your color, move to the next hue, pick your next color, and then import that into Photoshop sort of by hand. And then finally, Gregor Eisch, or Eisch, I'm not sure on the correct pronunciation, built a series of tools called chroma.js, which do interpolation in CIE LCH space. There's a bunch of different front-ends for this. This one is on viz4net slash lab slash multi-hue. You can actually specify colors by name. And there's a few other flavors. If you just search on chroma.js, you'll find a variety of just different interfaces that expose his underlying code. So one last thing I'd like to say, and this is a quote from Donald Norman, aesthetics matter, attractive things work better. So everything that I've said right now is based at least a little bit on research and on human vision. When I talk to my colleagues at NASA, they're often calling me an artist. And that's something I actually am somewhat uncomfortable with because I feel like they think that then I'm using my opinion to construct graphics and I'm really trying to do things that are as accurate as possible. But on the other hand, I do think that creating something that's attractive is a tool to make our visualizations more effective. So in addition to color, I think it's important to use all the other standard design tools to make coherent visualizations. So careful use of line, grouping things together, typography, and things like that. So just to sum up, color has long been used to denote numerical values, especially in cartography. When you're choosing colors, I think it's best to do that in a perceptual color space. For data visualization, use a palette that is based on lightness but also varies in hue and saturation. Remember that certain types of data should have a divergent or qualitative palette applied. Try to use intuitive colors when possible, build a hierarchy and combine it with other design principles. Here's a list of selected resources and thank you very much.