Chloe Yan
46 followers · 37 following · 2730 views
on the atlas — 271
- Recent Design21 savers
- The most successful email I ever wrote | Derek Sivers3 savers
- Subframe – The best way to build UI, fast.4 savers
- Arithmetical hierarchy2 savers
- consumed.today14 savers
- My website is a shifting house ... | Laurel Schwulst2 savers
- PamPam | Create simple interactive maps2 savers
- Invisible Details of Interaction Design33 savers
- Design Spells9 savers
- Animations on the web12 savers
- The Basics10 savers
- The Rage of Research -14 savers
- Brewster Kahle1 savers
- About – Skin Series1 savers
- TypoTab — Write 10x Faster. Instantly Anywhere.1 savers
- you have all these rules, and you think they'll save you3 savers
- nothing will change your life more than saying what you actually want to say5 savers
- 50 things I know - by Sasha Chapin - Sasha's 'Newsletter'29 savers
- Effect.app — Online Image & Video Effects4 savers
- group chats rule the world9 savers
- Mackenzie Child2 savers
- Jason Silberman1 savers
- Conductor6 savers
- How we built the v0 iOS app - Vercel2 savers
- What is the autoclosure attribute? - free Swift example code and tips1 savers
- StumbleUpon - Wikipedia1 savers
- the digital spaces we want3 savers
- TypeScript: Documentation - The Basics2 savers
- Rhythm Sunlight Generator1 savers
- Adam - AI Powered CAD2 savers
- The online home of Maxime's work3 savers
- animation(minimumInterval:paused:) | Apple Developer Documentation1 savers
- orderFrontRegardless() | Apple Developer Documentation1 savers
- monospacedDigit() | Apple Developer Documentation1 savers
- depression handbook | writing11 savers
- Argus - Trailblaze the Internet of Games2 savers
- NSLock | Apple Developer Documentation1 savers
- variableLength | Apple Developer Documentation1 savers
- Sandbox SDK3 savers
- 4Dviews - Volumetric video capture technology1 savers
- TIME—SYSTEMS1 savers
- On Returning to Routine1 savers
- scale | Apple Developer Documentation1 savers
- TnvMadhav | How to Take Screenshots of Views in SwiftUI1 savers
- Gal Shir | Boutique Brand Design3 savers
- contentShape(_:eoFill:) | Apple Developer Documentation1 savers
- MAKE MY DRIVE FUN10 savers
- Internet Roadtrip2 savers
- How to Create Luck6 savers
- Radio Garden2 savers
- touching computers - by Spencer Chang - spencer's paradoxes4 savers
- Sublime6 savers
- Inside Framer's Magic Motion4 savers
- On social energy - by Max Langenkamp - Unruly Sun2 savers
- Understanding Moments2 savers
- making the work you're meant to - by Nix 🕊8 savers
- Yjs Shared Editing2 savers
- to be loved is to be changed - by Ava - bookbear express11 savers
- Sacred4 savers
- Jordana:. Texts from the Attic | by Lapka | Medium2 savers
- friends shape your identity - by Ava - bookbear express5 savers
- it's okay to care too much - by Ava - bookbear express8 savers
- Don’t sacrifice the wrong thing - by Henrik Karlsson21 savers
- Creating Daylight | The Shadows | basement.studio3 savers
- Chaitin's constant - Wikipedia2 savers
- Searching For My City - by Humphrey Obuobi - Reboot5 savers
- Real life - by Kasra - Bits of Wonder8 savers
- in praise of uselessness - by Ava - bookbear express15 savers
- all these things that I've done - by Nix 🕊8 savers
- direct your intensity well - by Nix 🕊 - starting from nix5 savers
- another year - by Ava - bookbear express6 savers
- Unknown unknowns - by Eli Qian - Nonlinear3 savers
- on compatibility - by Nix 🕊 - starting from nix9 savers
- How to Do Great Work80 savers
- i wish we’d grown up on the same advice - by vincent huang61 savers
- There’s no speed limit56 savers
- AI 202755 savers
- sparkly people and how to find them - by Anson Yu53 savers
- Milan Cvitkovic52 savers
- Things You Learn Dating Cate Hall - by Sasha Chapin52 savers
- How can we develop transformative tools for thought?52 savers
- Taste is a guide for what is worthwhile49 savers
- finding the right people - by Nicole - startingfromnix49 savers
- Conviction is the Scarcest Resource: Essays About Gaining Real Conviction45 savers
- Andy Matuschak44 savers
- crushes are often just misplaced ambition - by Isabel42 savers
- To Enjoy UWaterloo40 savers
- Andrej's advice for success39 savers
- Nadia Asparouhova | Mapping out the tribes of climate37 savers
- Godly — The Best Web Design Inspiration36 savers
- how to avoid half-heartedness - by Ava - bookbear express36 savers
- Everything I know about good system design36 savers
- How to be More Agentic - by Cate Hall - Useful Fictions33 savers
- Notes on “Taste” — Are.na33 savers
- look what the cat brought in - by Anson Yu32 savers
- The Pudding31 savers
- A Brief History & Ethos of the Digital Garden31 savers
- Ink & Switch30 savers
- Stripe Press — Ideas for progress30 savers
- you like books and think they are your friends - by Ava30 savers
highlights — 872
Then there’s a gush of unceasing wonder when I realize I’ve now loaded a full new programming language into my brain and can fluidly manipulate concepts and compute things in a new realm of intellectual space. But that comes after, and is seemingly inexhaustible river of questions and just emotion that to me characterizes falling in love with a question but almost being driven mad because of it.
The Rage of Research -i think the Box is especially problematic for me because i often feel the need to prove to myself that i’m working hard and spending my time well, and legible proxies are an easy way to convince myself of that. this also results in being Serious and suppressing the sillier / more child-like parts of myself
you have all these rules, and you think they'll save youI know now there’s a different way to live.
nothing will change your life more than saying what you actually want to sayI learned that even as people fail me they can heal me. They can teach me how to tell, and telling saves.
nothing will change your life more than saying what you actually want to sayArt and morals are… one. Their essence is the same. The essence of both of them is love.
nothing will change your life more than saying what you actually want to sayI never, ever wanted to be misunderstood
nothing will change your life more than saying what you actually want to saypaused If the schedule should stop generating updates.
animation(minimumInterval:paused:) | Apple Developer Documentationpeople who enjoy life don't fixate on what the meaning of life is
depression handbook | writingask your body what it wants to do. Does it want to cry, shake, moan, dance, etc? If you let it express emotion, you get some control back.
depression handbook | writingnever try to fight your body—it gives you the rawest, true datapoints
depression handbook | writingSometimes distraction is what’s right for you.
depression handbook | writingIt’s hard to feel depressed when you are in the midst of doing things
depression handbook | writingUnlocking a lock from a different thread can result in undefined behavior.
NSLock | Apple Developer Documentationacademia, for all its bureaucracy and busywork, still leaves space for wonder if you know where to look.
On Returning to RoutineDefines the content shape for hit testing.
contentShape(_:eoFill:) | Apple Developer DocumentationThe modifier applies to all members of the group — and not to the group itself.
Group | Apple Developer Documentationclockwise is not actually clockwise! It is effectively anti-clockwise for our purposes.
Drawing a Shape with Paths and Arcs in SwiftUI | lukecsmith.co.ukI believe reality is wider and more generous than our estimates. And that wonder always outpaces certainty.
Taha Hossain, Founder & Creative Director at Daybreak StudioView is a function of a state
SwiftUI View Lifecyclesynchronize its drawing to the refresh rate of the display.
CADisplayLink | Apple Developer Documentationuse simultaneousGesture() with the gesture that would otherwise not be executed
How to make two gestures recognize at the same time using simultaneousGesture() - a free SwiftUI by Example tutorialSwiftUI treats colors as View instances
Color | Apple Developer DocumentationLove is beyond an emotion, it is a generator, because it multiplies itself and self-renews. The heart is rewired. Priorities reorganise and you are no longer a closed system.
some parts of you only emerge for certain people - by majathe right presence can feel like destiny: whole inner continents, hidden selves and latent worlds, begin to surface, shaping you into someone you hadn’t yet met.
some parts of you only emerge for certain people - by majain high-energy emotional states, such as falling in love, grief, awe, psychedelics, deep meditation, the brain becomes molten, its patterns loosened, more open to reorganisation. The person we focus on in these states becomes like a mold for the cooling metal, shaping how our thoughts settle, what habits crystallise, what identities take hold.
some parts of you only emerge for certain people - by majato hold someone so they can grow into the silhouette your love sketches for them, and to feel your own edges soften and bend beneath the steady pressure of their gaze.
some parts of you only emerge for certain people - by majaWatchpoints need to be set each time you launch your app, as they are not persistent like breakpoints
Mastering Xcode Watchpoints: Advanced Debugging Technique | by Priyank Gandhi | Mediumproperty wrapper type that updates a property while the user performs a gesture and resets the property back to its initial state when the gesture ends.
GestureState | Apple Developer DocumentationsizeThatFits(proposal:subviews:cache:) reports the size of the composite layout view. placeSubviews(in:proposal:subviews:cache:) assigns positions to the container’s subviews.
Layout | Apple Developer Documentationto align views that do not share the same direct parent.
Alignment - SwiftUI Field GuideWhen SwiftUI renders a view hierarchy, it recursively evaluates each child view: The parent view proposes a size to the child views it contains, and the child views respond with a computed size.
Laying out a simple view | Apple Developer DocumentationA vertical scroll view has infinite space vertically. So it can stretch all the way beyond the bounds of the screen. And so what a vertical scroll view does is really cool. It proposes the width it got proposed, so let’s say 320 or something. And it proposes nil for the height
A Day in the Life of a SwiftUI View — Chris EidhofWhen we propose the entire safe area, a resizable image says, OK, fine, I’ll take it.
A Day in the Life of a SwiftUI View — Chris EidhofIt’s going to propose that all the way back up. And as these nodes are all layout agnostic, it will go all the way to the body and to the MyAsyncImage.
A Day in the Life of a SwiftUI View — Chris EidhofSo we can call a different version of the task modifier and pass in the identity.
A Day in the Life of a SwiftUI View — Chris EidhofonAppear runs when my view first appears, and onChange(of:) whenever this URL changes. In fact, this is so popular that people have been writing extensions that combine the two, so onAppear and onChange(of:). And in fact, even Apple saw this. And as of iOS 17, we can write onChange(of:initial:).
A Day in the Life of a SwiftUI View — Chris EidhofWhen the proxy value specified by the id parameter changes, the identity of the view — for example, its state — is reset.
id(_:) | Apple Developer Documentationthe render tree is persistent. It doesn’t throw away these nodes. It invalidates them, which means it needs to re-execute the view tree.
A Day in the Life of a SwiftUI View — Chris Eidhoftask and onAppear work exactly the same. They start executing the closure the moment the view appears on screen. And then if the body is re-executed, that task or that onAppear is not going to be executed again.
A Day in the Life of a SwiftUI View — Chris EidhofAnd so SwiftUI knows there will always be either an image or a progress view, never both, never neither. This is all statically encoded into the type system.
A Day in the Life of a SwiftUI View — Chris EidhofYou cannot write onAppear on an if/else. So we need some kind of wrapper. It doesn’t really matter what you use here.
A Day in the Life of a SwiftUI View — Chris Eidhofthe view tree is ephemeral, while the render tree is persistent.
Behind the scenes of UI: Part 2 - SwiftUIview values in SwiftUI are transient and can be recreated whenever the state changes. Direct manipulation of the view tree isn't possible in SwiftUI. Instead of mutating the view tree directly as in UIKit, we modify the state, prompting SwiftUI to calculate a new view graph from this state.
Behind the scenes of UI: Part 2 - SwiftUIThe variable viewer lists the variables available in the current execution context.
Stepping through code and inspecting variables to isolate bugs | Apple Developer DocumentationWhen your app pauses at a breakpoint, hover over a variable in your source code to view its current value. If the variable is an image or other type that isn’t expressible as text, click the Quick Look button at the upper-right to see a preview of the variable.
Stepping through code and inspecting variables to isolate bugs | Apple Developer DocumentationBreakpoint actions can execute AppleScripts or shell scripts to perform helpful debugging tasks like taking a screenshot or saving some app data for analysis.
Setting breakpoints to pause your running app | Apple Developer Documentationuse breakpoint actions to log messages and to perform debugger commands that print variable values to the console.
Setting breakpoints to pause your running app | Apple Developer DocumentationThe debugger pauses when the app or your code calls the symbol you specify.
Setting breakpoints to pause your running app | Apple Developer DocumentationYou write an in-out parameter by placing the inout keyword right before a parameter’s type. An in-out parameter has a value that’s passed in to the function, is modified by the function, and is passed back out of the function to replace the original value.
Functions | DocumentationUsing generics, by writing struct VerticalShapes and var shapes: [S], makes an array whose elements are some specific shape type, and where the identity of that specific type is visible to any code that interacts with the array. Using an opaque type, by writing var shapes: [some Shape], makes an array whose elements are some specific shape type, and where that specific type’s identity is hidden. Using a boxed protocol type, by writing var shapes: [any Shape], makes an array that can store elements of different types, and where those types’ identities are hidden.
Opaque and Boxed Protocol Types | Documentation