Dan Hollick Profile Banner
Dan Hollick Profile
Dan Hollick

@DanHollick

Followers
19,858
Following
309
Media
851
Statuses
4,235

design @raycastapp - tweets about design systems and tools. Framer course:

JHB → OSL→ LDN
Joined September 2009
Don't wanna be here? Send us removal request.
Explore trending content on Musk Viewer
Pinned Tweet
@DanHollick
Dan Hollick
2 years
Do you just click different blending modes until it sort of looks right? Well, that probably won't change after you read this but at least you probably won't use Lighten or Darken again. (you should bookmark this thread and use it as a reference)
Tweet media one
88
8K
30K
@DanHollick
Dan Hollick
2 years
Morse code is designed so that you can decode it with this binary tree. I just assumed people memorised every letter. 🤯
242
6K
43K
@DanHollick
Dan Hollick
2 years
Ever wondered how a QR code works? No, me neither but it's low-key fascinating. (Warning, there is some extremely nerdy shit here.👇 )
Tweet media one
253
9K
35K
@DanHollick
Dan Hollick
2 years
WCAG 3 will use a new color contrast method called APCA (Advanced Perceptual Contrast Algorithm). It's a big improvement over the current system but there are a lot of changes to get your head around. 🧵
Tweet media one
55
1K
5K
@DanHollick
Dan Hollick
3 years
I had no idea how touch screens worked until today.
Tweet media one
Tweet media two
Tweet media three
Tweet media four
24
585
4K
@DanHollick
Dan Hollick
11 months
The way this works is super fucking clever
Tweet media one
@shuding_
Shu
11 months
Depth-based blur in CSS. (Chrome preferred)
Tweet media one
Tweet media two
Tweet media three
Tweet media four
52
558
7K
18
328
4K
@DanHollick
Dan Hollick
1 year
How does a Large Language Model like ChatGPT actually work? Well, they are both amazingly simple and exceedingly complex at the same time. Hold on to your butts, this is a deep dive ↓
51
470
3K
@DanHollick
Dan Hollick
3 years
💡Have you ever wondered why the WCAG colour contrast ratio doesn't always seem to work?💡 Well it actually has to do with how we calculate colour contrast and is super interesting. Hold on to your butts, this is a 🧵
Tweet media one
24
767
3K
@DanHollick
Dan Hollick
2 months
If you think about it, it's only 0.025 cents per pixel. Basically free.
Tweet media one
89
54
3K
@DanHollick
Dan Hollick
2 months
I accidentally made something cool as hell. (Twitter compression is going to really struggle here)
71
76
2K
@DanHollick
Dan Hollick
1 year
Absolutely obsessed with this polar coordinate colour palette generator.
17
244
2K
@DanHollick
Dan Hollick
2 years
Why can't you just draw a few black lines on a barcode and spoof the scanner? Well, the last digit in a barcode is actually there to do some clever error checking.
Tweet media one
Tweet media two
Tweet media three
Tweet media four
9
221
2K
@DanHollick
Dan Hollick
2 years
For the absolute nerds who made it here, a fun fact: Perhaps the coolest thing about QR codes is that Denso Wave, the company that invented them, never exercised their patent and released the technology for free!
5
111
2K
@DanHollick
Dan Hollick
11 months
Excited to finally share what I've been working on. Introducing Detax, a comprehensive suite of automated tax avoidance and money laundering tools. Our goal is to revolutionise the financial fraud industry by bringing it into the 21st century.
69
168
2K
@DanHollick
Dan Hollick
2 years
Niche tweet, but have you ever been messing around with an icon and wondered how SVG path data works? It's actually quite simple.
Tweet media one
21
272
2K
@DanHollick
Dan Hollick
3 years
TIL that when you convert a colour from RGB to HSL you're actually doing some geometry. 🤯
Tweet media one
Tweet media two
Tweet media three
Tweet media four
9
230
2K
@DanHollick
Dan Hollick
1 year
Why is making a dark mode greyscale so hard to get right? Well, of course it has to do with the weird way humans perceive colour and contrast. 👇
31
216
1K
@DanHollick
Dan Hollick
9 months
This website is a copywriter's wet dream.
6
192
1K
@DanHollick
Dan Hollick
2 years
Apparently, to maximise engagement, I'm supposed to link the original tweet here and encourage you to retweet it.
@DanHollick
Dan Hollick
2 years
Ever wondered how a QR code works? No, me neither but it's low-key fascinating. (Warning, there is some extremely nerdy shit here.👇 )
Tweet media one
253
9K
35K
12
241
1K
@DanHollick
Dan Hollick
2 years
Design interviews are a trip.
Tweet media one
18
141
1K
@DanHollick
Dan Hollick
2 years
Also, I'm an idiot and made an error in that graphic. •-• should be R •-- should be W
Tweet media one
22
112
1K
@DanHollick
Dan Hollick
1 year
If you're lucky, you get 2/3.
Tweet media one
14
162
1K
@DanHollick
Dan Hollick
2 years
The Quick Response code was invented by a subsidiary of Toyota to track parts across the manufacturing process. Barcodes were proving inadequate - they can only be read at certain angles and didn't store much data relative to their size The QR code solves those issues and more
Tweet media one
5
70
1K
@DanHollick
Dan Hollick
4 months
On our work slack we started a thread of our favourite technical/interactive blog posts, so I thought I'd share some of my favourites here. In no particular order👇
9
94
1K
@DanHollick
Dan Hollick
1 year
Ever heard of a shader but too afraid to ask what it even means at this point? Lets fuck around and find out 👇
23
181
1K
@DanHollick
Dan Hollick
10 days
A lot of people have asked how we built this hero. I think you might be a bit disappointed with how simple it is but lets take a look anyway 👇
55
105
2K
@DanHollick
Dan Hollick
2 years
The most distinctive thing about a QR code are these cube shapes, called Finder Patterns, that help your reader detect the code. The smaller fourth cube, the Alignment Pattern, orientates the code so it can be at any angle and the reader will still know which way is up.
Tweet media one
6
30
1K
@DanHollick
Dan Hollick
1 year
Why are some typefaces harder to read than others at the same font-size? Well, it has a lot to do with x-height but of course it's a bit more complicated than that: ↓
Tweet media one
7
126
992
@DanHollick
Dan Hollick
2 years
It's also designed so the most common letters are closer to the root. So. Fucking. Clever.
11
20
986
@DanHollick
Dan Hollick
2 years
You've probably never noticed but every QR code has these alternating black and white dots called the Timing Pattern. These tell the reader how big a single module is and how big the whole QR code is - known as the version. Version 1: Smallest Version 40: Biggest
Tweet media one
Tweet media two
4
20
982
@DanHollick
Dan Hollick
1 year
2023 edition
Tweet media one
Tweet media two
Tweet media three
Tweet media four
@DanHollick
Dan Hollick
2 years
I feel like I make diagrams for a living.
Tweet media one
Tweet media two
Tweet media three
Tweet media four
27
33
842
10
57
925
@DanHollick
Dan Hollick
2 years
There are 8 standard patterns which are applied one by one. The pattern that achieves the best result is used and that info is stored so the reader can unapply the mask.
Tweet media one
4
24
898
@DanHollick
Dan Hollick
2 years
I feel like I make diagrams for a living.
Tweet media one
Tweet media two
Tweet media three
Tweet media four
27
33
842
@DanHollick
Dan Hollick
2 years
When a mask is applied to the code anything that falls under the dark part of the mask is inverted. A white area becomes black and black area becomes white.
2
17
809
@DanHollick
Dan Hollick
11 months
@shuding_ I just spent the last 20mins figuring out how this works. I think I got it?
Tweet media one
11
39
798
@DanHollick
Dan Hollick
2 years
It's amazing how small tweaks can compound in UI design. Fiddling with just three properties changes the feel of something drastically.
14
63
801
@DanHollick
Dan Hollick
2 years
This stores three crucial pieces of information: - Mask. - Error correction level - Error correction format. I know these sound super fucking boring but they are actually pretty interesting.
Tweet media one
4
18
780
@DanHollick
Dan Hollick
4 months
I spent a totally reasonable amount of time on this graphic.
@raycastapp
Raycast
4 months
The Mac turns 40 today 🎂 To celebrate, we're giving away Raycast Pro with GPT-4 for one year to 40 people. Simply retweet this tweet and follow @raycastapp to enter. Winners will be announced by the end of the week.
Tweet media one
65
1K
838
31
26
796
@DanHollick
Dan Hollick
2 years
Information about the format is stored in these two strips near the Finder patterns. It's stored twice so its readable even when QR code is partially obscured. (You'll notice that this is a recurring theme.)
Tweet media one
1
17
768
@DanHollick
Dan Hollick
2 years
This is pretty amazing - If your code is outdoors you can choose a higher redundancy level to make sure it still functions when obscured. (try it)
Tweet media one
4
18
745
@DanHollick
Dan Hollick
2 years
It's a bummer that Figma doesn't natively support color styles pointing to other color styles. I do this all the time in my code projects and it's super ergonomic.
Tweet media one
Tweet media two
24
41
752
@DanHollick
Dan Hollick
2 years
First, error correction - what is it? Essentially, it dictates how much redundant information is stored in the code to ensure it remains readable even when part of it is missing.
Tweet media one
2
19
731
@DanHollick
Dan Hollick
2 years
Finally we get to the actual data. Weirdly, the data starts at the bottom-right corner and winds back up like pictured. It almost doesn't matter where it starts because it can be read at any angle.
Tweet media one
3
21
681
@DanHollick
Dan Hollick
23 days
Super clever use of clip-path and image masks here
Tweet media one
@raunofreiberg
rauno
23 days
Blur reveal
20
24
773
4
41
694
@DanHollick
Dan Hollick
2 years
A bunch of you are new here so you might not know that I tweet about more than QR codes. Here are some other popular threads about how stuff works 👇
Tweet media one
Tweet media two
Tweet media three
Tweet media four
9
68
672
@DanHollick
Dan Hollick
2 years
Second, the mask - what's that? Well, QR readers work best when there are the same amount of white and black areas. But the data might not play ball so a mask is used to even things out.
Tweet media one
2
14
665
@DanHollick
Dan Hollick
2 years
There is still a bunch of left over space after our data. This is where the error correction information is stored so that it can be read if partially obscured. The way this works is actually really really complex so I'll leave that out. That's basically it!
Tweet media one
12
14
664
@DanHollick
Dan Hollick
2 years
SVG viewbox is surprisingly unintuitive but if you visualise it like this it starts to make sense:
Tweet media one
Tweet media two
Tweet media three
Tweet media four
1
65
645
@DanHollick
Dan Hollick
2 years
Put simply, blending modes are a way of creating a new colour based on two input colours. Hierarchy matters to the way we work out the new colour so the input colours are split into background and foreground.
Tweet media one
2
34
622
@DanHollick
Dan Hollick
2 years
Every. Single. Time.
Tweet media one
12
69
629
@DanHollick
Dan Hollick
2 years
The first chunk of information here tells the reader what mode the data was encoded in and the second tells it the length. In our case each character takes up 8 bit chunks, otherwise known as bytes, and there are 24 of them.
Tweet media one
2
19
613
@DanHollick
Dan Hollick
3 years
Have you ever noticed that line-height ruins your design system's spacing? Here's what's going on🧵:
Tweet media one
9
144
625
@DanHollick
Dan Hollick
2 years
Stumbled across this rather delightful gradient interaction
2
48
595
@DanHollick
Dan Hollick
9 months
What makes a shadow look realistic? Well, there are essentially two parts to a shadow: the fully occluded part (Umbra), and the partially occluded part (Penumbra). Ideally, you need at least two layers of drop shadow to mimic these.
Tweet media one
8
63
600
@DanHollick
Dan Hollick
9 months
Spent last Friday making a Macbook keyboard in Figma. Amazed at what I get to call 'work'
Tweet media one
15
18
593
@DanHollick
Dan Hollick
4 months
Back on my colour bullshit
Tweet media one
14
18
565
@DanHollick
Dan Hollick
1 year
Curious how this spotlight effect works? Well, cleverly, it uses the css property 'mask-image' to mask the linear gradient in the background.
@DanHollick
Dan Hollick
1 year
Turned this Tailwind UI spotlight effect into a Framer component. Here's the remix link:
8
26
299
5
57
535
@DanHollick
Dan Hollick
10 months
No one does interactive posts quite like @nandafyi
3
63
529
@DanHollick
Dan Hollick
2 years
Gradients are the best way to explain perceptually uniform color spaces
Tweet media one
6
44
483
@DanHollick
Dan Hollick
3 years
I've never really considered how the pen tool works. Turns out, it relies on Bezier Curves and how they work is super interesting🧵:
7
66
454
@DanHollick
Dan Hollick
1 year
Really like this spotlight hover effect on the new tailwind UI template, so I had a crack at doing it myself. Note: that weird banding is from the screen capture.
7
15
447
@DanHollick
Dan Hollick
2 years
Darken compares each colour's RGB value and selects the darkest value - creating a new colour.
Tweet media one
1
9
401
@DanHollick
Dan Hollick
11 months
This is going to save us a lot of time.
5
16
406
@DanHollick
Dan Hollick
2 years
Why do people use Spacer components? Personally, I prefer using Auto Layout wrappers and controlling spacing with gaps but there might be a use case I'm overlooking? Made some pros and cons below 👇
Tweet media one
14
26
400
@DanHollick
Dan Hollick
2 years
Let's start with Darken and Lighten These are the simplest blending modes and the produce a fairly predictable darkening or lightening.
Tweet media one
Tweet media two
2
18
382
@DanHollick
Dan Hollick
2 years
Tweet media one
4
16
385
@DanHollick
Dan Hollick
2 years
Next up are Multiply and Screen. Although they produce similar results, you can think of these as more elegant versions of Darken and Lighten that result in a bit more contrast. When you have Screen and Multiply, there is no good reason to use Lighten or Darken.
Tweet media one
Tweet media two
3
12
363
@DanHollick
Dan Hollick
4 years
Becoming sort of obsessed with making flows and specs in @figmadesign lately.
Tweet media one
Tweet media two
10
17
376
@DanHollick
Dan Hollick
5 years
I built an internal @figmadesign plugin that fetches data from the TIDAL api and populates our designs. A real time saver.
14
30
365
@DanHollick
Dan Hollick
2 years
Lighten does exactly the same thing but it selects the lightest value.
Tweet media one
1
10
354
@DanHollick
Dan Hollick
2 years
Screen is actually similar to Multiply but it inverts both the inputs and the result, which is why the result is always lighter. Again, we need to normalise the values between 0 and 1 to work this out.
Tweet media one
2
7
346
@DanHollick
Dan Hollick
2 years
Did you know these are called Boolean Operations? That's because they use booleans to determine which part of the shapes should be visible. Let me explain 👇
Tweet media one
8
33
341
@DanHollick
Dan Hollick
2 years
Multiply does exactly what you'd think, it simply multiplies each channel together. Because the values are normalised between 0 and 1 the product is always darker than the original.
Tweet media one
2
8
320
@DanHollick
Dan Hollick
1 year
Turns out @rogie 's noise plugin is a great mesh gradient generator. Granted you need to know how to write a fragment shader.
2
31
330
@DanHollick
Dan Hollick
21 days
Experimenting with some new @raycastapp wallpapers
Tweet media one
Tweet media two
Tweet media three
Tweet media four
17
6
319
@DanHollick
Dan Hollick
2 years
I've been playing around with color scales with unevenly spaced tones. Clusters of tones at the top, bottom and middle to provide more options for Bg and text. Anyone ever played around with this before?
Tweet media one
Tweet media two
14
20
314
@DanHollick
Dan Hollick
2 years
Found a cool way to demonstrate the conversion from RGB cube to HSL cylinder.
5
42
310
@DanHollick
Dan Hollick
1 year
Turned this Tailwind UI spotlight effect into a Framer component. Here's the remix link:
8
26
299
@DanHollick
Dan Hollick
2 years
Overlay, Soft Light and Hard Light are known as contrast blending modes because they make the lights lighter and the darks darker. These are the most versatile blending mode, especially for images.
Tweet media one
Tweet media two
2
9
285
@DanHollick
Dan Hollick
2 years
Overlay is interesting. If the background value is light (> 127.5 ) then it applies Screen at half strength making the foreground lighter. If the background value is dark it applies Multiply at half strength making the foreground darker.
Tweet media one
1
13
280
@DanHollick
Dan Hollick
2 years
The last pair of darkening/lightening modes are Color Burn and Color Dodge. They have a pronounced step so they can produce quite harsh results compared to the previous modes.
Tweet media one
Tweet media two
1
8
275
@DanHollick
Dan Hollick
2 months
Turn this off. You're welcome.
Tweet media one
12
18
288
@DanHollick
Dan Hollick
1 year
Have you ever looked at a @framer site and thought "how the hell did they do that?" I've got something for you:
14
23
283
@DanHollick
Dan Hollick
2 years
Color Burn works by inverting the background, dividing it by the foreground and inverting the result.
Tweet media one
2
6
258
@DanHollick
Dan Hollick
2 years
A fingerprint sensor actually works a lot like a touch screen, just at a much smaller scale.
Tweet media one
Tweet media two
Tweet media three
Tweet media four
3
40
259
@DanHollick
Dan Hollick
2 years
Color Dodge is similar but we invert the foreground divide the background by it.
Tweet media one
1
6
248
@DanHollick
Dan Hollick
3 years
Something I learnt while diving deep on line height is that there are subtle differences between: line-height: 100% line-height: normal (css) line-height: Auto (Figma) (Very short 🧵 this time, I promise)
Tweet media one
6
34
245
@DanHollick
Dan Hollick
2 years
If you're excited to test out APCA, I've got good news: I put together an APCA plugin for Figma.🎉
Tweet media one
6
33
234
@DanHollick
Dan Hollick
2 years
tl:dr WCAG 3 will make your life easier as a designer. It isn't out yet but you can (and should) use APCA now. @MyndexResearch has a great tool here:
6
24
229
@DanHollick
Dan Hollick
6 months
Fridays are for experiements
Tweet media one
15
8
230
@DanHollick
Dan Hollick
4 years
Evernote: Don't forget to make a shopping list. Trello: Ensure you drag this item to "complete" Notion: Mustn't forget to do your budget this month. Roam: It's 3am, you wanna make your own personal internet bro? #roamcult
3
27
229
@DanHollick
Dan Hollick
2 years
Soft Light is the most complicated of the standard blending modes. It produces similar results to Overlay but is more subtle. Multiply the inverted foreground by the squared background and add it to two times the product of the foreground and background. Simple.
Tweet media one
2
8
221
@DanHollick
Dan Hollick
2 years
Here's what they mean: 15 - 🚫 Minimum for non-text elements 30 - ⚠️ Absolute min for any text 45 - ‼️ Min for large text (the old 3:1) 60 - ❗Min for body text (the old 4.5:1) 75 - ✅ Preferred level for body text
Tweet media one
Tweet media two
2
13
226
@DanHollick
Dan Hollick
3 years
As a designer, you might not know that there are actually two different ways to implement pagination: Cursor vs Offset. The UI you design can influence which one your devs use or vice versa. Here's how they work 🧵:
Tweet media one
6
34
221
@DanHollick
Dan Hollick
2 years
Whenever I hit a problem with React its because I don't have a solid understanding of how it really works. Here's a brief explainer:
Tweet media one
Tweet media two
10
31
218
@DanHollick
Dan Hollick
2 years
Hard Light is exactly the same as Overlay except it uses the foreground layer. If the foreground is > 127.5 then apply Screen at half strength, else apply Multiply at half strength.
Tweet media one
1
8
211