<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Sam Henri Gold: The Blog</title><description>Sit back and enjoy the ride.</description><link>https://samhenri.gold/</link><item><title>Thoughts and Feelings around Claude Design</title><link>https://samhenri.gold/blog/20260418-claude-design/</link><guid isPermaLink="true">https://samhenri.gold/blog/20260418-claude-design/</guid><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I tried &lt;a href=&quot;https://www.anthropic.com/news/claude-design-anthropic-labs?utm_source=samhenri%2Egold&quot;&gt;Claude Design&lt;/a&gt; yesterday and I have a theory for how this whole thing shakes out.&lt;/p&gt;
&lt;p&gt;As product teams scaled and design needed to justify itself inside engineering orgs, it was pushed toward systematization — and Figma invented its own primitives to make that work: components, styles, variables, props, and so on. Some concepts are borrowed from programming, some aren’t, and the whole thing doesn’t neatly map onto anything. Guidance evolves, migrations pile up, and if you want to automate any of it you’re stuck with a handful of shoddy plugins. The beast is hairy enough that entire design roles now specialize in wrangling the system itself.&lt;/p&gt;
&lt;p&gt;There’s always been a tense push-pull between Figma and code over what the source of truth should be. Figma won over Sketch partially by staking its claim there — their tooling would be canonical.&lt;/p&gt;
&lt;p&gt;That victory had a hidden cost. By nature of having a locked-down, largely-undocumented format that’s painful to work with programmatically, Figma accidentally excluded themselves from the training data that would have made them relevant in the agentic era. LLMs were trained on code, not Figma primitives, so models never learned them. As code becomes easier for designers to write and agents keep improving, the source of truth will naturally migrate back to code. And all the baroque infrastructure Figma had to introduce over the past decade will look nuts by comparison. Why fuss around in a lossy approximation of the thing when you can work directly in the medium where it will actually live? If we want to make pottery, why are we painting watercolors of the pot instead of just throwing the clay?&lt;/p&gt;
&lt;p&gt;At work, we’ve spent quite a bit of time back-porting design changes made directly in code back to Figma and it is not fun. I can’t share that file, but for a fair comparison, this is Figma’s own design system file for their product. I have to assume it was built by the most competent design system team you can find. And yet…&lt;/p&gt;
&lt;figure role=&quot;figure&quot; aria-label=&quot;The Figma variables panel showing 946 color variables organized into nested groups like &amp;#x22;bg/desktopBackgrounded,&amp;#x22; with a single selected variable revealing eight mode-specific values: Light, Dark, FigJam-Light, FigJam-Dark, DevMode-Light, DevMode-Dark, Slides-Light, and Slides-Dark.&quot; class=&quot;md-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./assets/CleanShot 2026-04-18 at 13.41.58@2x.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption&gt;The Figma variables panel showing 946 color variables organized into nested groups like &quot;bg/desktopBackgrounded,&quot; with a single selected variable revealing eight mode-specific values: Light, Dark, FigJam-Light, FigJam-Dark, DevMode-Light, DevMode-Dark, Slides-Light, and Slides-Dark.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure role=&quot;figure&quot; aria-label=&quot;A modal footer component open to its variant property editor, showing 12 variants with a dropdown full of values like &amp;#x22;DS Library Swap,&amp;#x22; &amp;#x22;QA Plugin,&amp;#x22; &amp;#x22;Growth Stepper,&amp;#x22; and &amp;#x22;Sharing Actions.&amp;#x22; The right panel lists eight props like &amp;#x22;Border,&amp;#x22; &amp;#x22;Second CTA,&amp;#x22; and &amp;#x22;Helper Text&amp;#x22;&quot; class=&quot;md-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./assets/CleanShot 2026-04-18 at 13.41.22@2x.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption&gt;A modal footer component open to its variant property editor, showing 12 variants with a dropdown full of values like &quot;DS Library Swap,&quot; &quot;QA Plugin,&quot; &quot;Growth Stepper,&quot; and &quot;Sharing Actions.&quot; The right panel lists eight props like &quot;Border,&quot; &quot;Second CTA,&quot; and &quot;Helper Text&quot;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure role=&quot;figure&quot; aria-label=&quot;The effect styles panel for a slider component, showing a style named &amp;#x22;light/elevation-300-tooltip.&amp;#x22; Expanding it reveals its entire definition: a 0.5px drop shadow at 30% black. It has its own named style because that’s the only way to document what CSS variable it corresponds to.&quot; class=&quot;md-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./assets/CleanShot 2026-04-18 at 13.40.44@2x.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption&gt;The effect styles panel for a slider component, showing a style named &quot;light/elevation-300-tooltip.&quot; Expanding it reveals its entire definition: a 0.5px drop shadow at 30% black. It has its own named style because that’s the only way to document what CSS variable it corresponds to.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure role=&quot;figure&quot; aria-label=&quot;A combo input component with 16 variants. Its children in the layers panel are named things like &amp;#x22;Default, Default, Close Button=False&amp;#x22; and &amp;#x22;Default, Focused, Close Button=True&amp;#x22;&quot; class=&quot;md-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./assets/CleanShot 2026-04-18 at 13.39.51@2x.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption&gt;A combo input component with 16 variants. Its children in the layers panel are named things like &quot;Default, Default, Close Button=False&quot; and &quot;Default, Focused, Close Button=True&quot;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;These are Figma’s own files. Built by their own team. This is the gold standard.&lt;/p&gt;
&lt;p&gt;Imagine debugging a color that looks wrong. You check the component. The component uses a variable. The variable is aliased to another variable. That variable references a mode. The mode is overridden at the instance level. The instance lives inside a nested component with a library swap applied. At this point, you’re either considering picking up code or moving to the countryside and becoming a sheep farmer because one more minute of this will make you lose your goddamn mind.&lt;/p&gt;
&lt;p&gt;So as the source of truth shifts back to code, Figma is left in an odd spot: holding a largely manual, pre-agentic system that nobody in their right mind would design from scratch today.&lt;/p&gt;
&lt;p&gt;I think design tooling forks into two distinct shapes from here — and there’s almost a clock resetting between Figma and every other tool competing to answer the same question they answered in 2016: who can help me, a designer, get my ideas out fastest?&lt;/p&gt;
&lt;p&gt;Spoiler: it’s not Figma Make. Figma Make feels like it primarily benefits people who have already drunk the Kool-Aid — it reads from Figma styles, component libraries, and proprietary props (or, as I like to call them, Prop Props), and it’s the only tool in this new landscape still pretending the design file is canonical. It’s the tool for people who want to (or have no choice but to) stay inside the system.&lt;/p&gt;
&lt;p&gt;Claude Design is the first of those two tools, and takes the opposite bet. There’s an Arts and Crafts principle called &lt;a href=&quot;https://www.metmuseum.org/essays/the-arts-and-crafts-movement-in-america?utm_source=samhenri%2Egold&quot; title=&quot;The Met Museum: The Arts and Crafts Movement in America&quot;&gt;“truth to materials”&lt;/a&gt; — the idea that a thing should be honest about what it is and how it’s made, rather than masquerading as something else. Figma ended up being the opposite of this: a set of extremely rigid schemas with a free-form “just vibes, man” costume over the top. Like a Type-A personality physically incapable of relaxing, forced to perform chill while internally screaming that your frames aren’t nested and your tokens are detached and nothing is on the grid. Claude Design, for all its roughness, is at least honest about what it is: HTML and JS all the way down.&lt;/p&gt;
&lt;figure role=&quot;figure&quot; aria-label=&quot;A Gustav Stickley lamp table, circa 1902. The joinery is exposed, not hidden. The wood is the wood.&quot; class=&quot;md-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./assets/n10390-24-blywf-web-crop.jpg&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption&gt;A Gustav Stickley lamp table, circa 1902. The joinery is exposed, not hidden. The wood is the wood.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;And it has a massive structural advantage: its sibling is Claude Code. Eventually, I can see Claude Design just dumping things directly into Claude Code and vice versa. Claude Design’s onboarding already lets you import your repos. The feedback loop between design and implementation — which has been a source of friction since the beginning of time — becomes a single conversation.&lt;/p&gt;
&lt;p&gt;The other tool that emerges from this moment will have no expectation of code at all. It’ll be a pure exploration environment — somewhere to drop rectangles, stack layer styles, fuss with blend modes and gradients, and go completely nuts, unconstrained by systems or prompting conventions. Maybe it’s an iPad app with Pencil support where you just quickly sketch a bunch of rectangles. &lt;a href=&quot;https://signalvnoise.com/posts/2420-launch-draft-for-ipad?utm_source=samhenri%2Egold&quot; title=&quot;Launch: Draft for iPad&quot;&gt;37signals could do something really funny right now&lt;/a&gt;. Or maybe it goes in the opposite direction — something more like Photoshop that goes all-in on high-fidelity compositing and lets our imaginations run wild, now that we’re no longer beholden to the ceiling of what you can do with CSS effects. Doesn’t it seem &lt;em&gt;kinda weird&lt;/em&gt; how for 90% of its life, Figma’s only layer effect was a drop shadow or a blur?&lt;/p&gt;
&lt;p&gt;Figma’s Sketch moment is rapidly approaching. And if you said that sentence to a Victorian child, they would probably have a stroke.&lt;/p&gt;
&lt;h3 id=&quot;post-script&quot;&gt;Post Script&lt;/h3&gt;
&lt;p&gt;The following are messages meant only for the teams behind Sketch and Figma. If neither apply to you, you can skedaddle.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To Figma:&lt;/strong&gt; I can see a world where this post does numbers in the Figma internal Slack. If that’s the case and you’re reading this from Figma: this wouldn’t have happened if you hired me last year when I was interviewing. Your loss, big dawg.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To Sketch:&lt;/strong&gt; GET YOUR HEADS OUTTA YOUR ASSES AND GIVE EM HELL. ADD PARTICLE EFFECTS. ADD DEBOSSING EFFECTS. MESH TRANSFORMS. FUCK IT, ADD METAL SHADERS. GO NUTS. STOP &lt;a href=&quot;https://www.sketch.com/blog/part-of-your-world-why-we-re-proud-to-build-a-truly-native-mac-app/?utm_source=samhenri%2Egold&quot;&gt;COASTING OFF OF BEING MAC NATIVE&lt;/a&gt;. QUIT DRINKING COCOA AND GET THIRSTY FOR BLOOD.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To mom:&lt;/strong&gt; Sorry for cursing.&lt;/p&gt;
&lt;h3 id=&quot;post-post-script&quot;&gt;Post-Post Script&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://x.com/jonnyburch/status/2045593324396920994?utm_source=samhenri%2Egold&quot;&gt;@jonnyburch on Twitter&lt;/a&gt; shared a link to &lt;a href=&quot;https://jonnyburch.com/life-after-figma/?utm_source=samhenri%2Egold&quot; title=&quot;Life after Figma is coming (and it will be glorious)&quot;&gt;their blog post&lt;/a&gt; with similar thoughts, it’s quite good if you wanna go deeper.&lt;/p&gt;</content:encoded></item><item><title>“This Is Not The Computer For You”</title><link>https://samhenri.gold/blog/20260312-this-is-not-the-computer-for-you/</link><guid isPermaLink="true">https://samhenri.gold/blog/20260312-this-is-not-the-computer-for-you/</guid><pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There is a certain kind of computer review that is really a permission slip. It tells you what you’re allowed to want. It locates you in a taxonomy — student, creative, professional, power user — and assigns you a product. It is helpful. It is responsible. It has very little interest in what you might become.&lt;/p&gt;
&lt;p&gt;The MacBook Neo has attracted a lot of these reviews.&lt;/p&gt;
&lt;p&gt;The consensus is reasonable: $599, A18 Pro, 8GB RAM, stripped-down I/O. A Chromebook killer, a first laptop, a sensible machine for sensible tasks. “If you are thinking about Xcode or Final Cut, this is not the computer for you.” The people saying this are not wrong. It is also not the point.&lt;/p&gt;
&lt;p&gt;Nobody starts in the right place. You don’t begin with the correct tool and work sensibly within its constraints until you organically graduate to a more capable one. That is not how obsession works. Obsession works by taking whatever is available and pressing on it until it either breaks or reveals something. The machine’s limits become a map of the territory. You learn what computing actually costs by paying too much of it on hardware that can barely afford it.&lt;/p&gt;
&lt;p&gt;I know this because I was running Final Cut Pro X on a 2006 Core 2 Duo iMac with 3GB RAM and 120GB of spinning rust. I was nine. I had no business doing this. I did it every day after school until my parents made me go to bed.&lt;/p&gt;
&lt;p&gt;The machine came as a hand-me-down from my nana. She’d wiped it, set it up in her kitchen in Massachusetts. It was one software update away from getting the axe from Apple. I torrented Adobe CS5 the same week. Downloaded Xcode and dragged buttons and controls around in Interface Builder with no understanding of what I was looking at. I edited &lt;code&gt;SystemVersion.plist&lt;/code&gt; to make the “About this Mac” window say it was running Mac OS 69, which is the s*x number, which is very funny. I faked being sick to watch WWDC 2011 — Steve Jobs’ last keynote — and clapped alone in my room when the audience clapped, and rebuilt his slides in Keynote afterward because I wanted to understand how he’d made them feel that way.&lt;/p&gt;
&lt;p&gt;I knew the machine was wrong for what I wanted to do with it. I didn’t care. Every limitation was just the edge of something I hadn’t figured out yet. It was green fields and blue skies.&lt;/p&gt;
&lt;p&gt;I thought about all of this when I opened the Neo for the first time.&lt;/p&gt;
&lt;p&gt;What Apple put inside the Neo is the complete behavioral contract of the Mac. Not a Mac Lite. Not a browser in a laptop costume. The same macOS, the same APIs, the same Neural Engine, the same weird byzantine AppKit controls that haven’t meaningfully changed since the NeXT era. The ability to disable SIP and install some fuck-ass system modification you saw in a YouTube tutorial. All of it, at $599.&lt;/p&gt;
&lt;p&gt;They cut the things that are, apparently, not the Mac. MagSafe. ProMotion. M-series silicon. Port bandwidth. Configurable memory. What remains is the Retina display, the aluminum, the keyboard, and the full software platform. I held it and thought, “yep, still a Mac.”&lt;/p&gt;
&lt;p&gt;Yes, you will hit the limits of this machine. 8GB of RAM and a phone chip will see to that. But the limits you hit on the Neo are resource limits — memory is finite, silicon has a clock speed, processes cost something. You are learning physics. A Chromebook doesn’t teach you that. A Chromebook’s ceiling is made of web browser, and the things you run into are not the edges of computing but the edges of a product category designed to save you from yourself. The kid who tries to run Blender on a Chromebook doesn’t learn that his machine can’t handle it. He learns that Google decided he’s not allowed to. Those are completely different lessons.&lt;/p&gt;
&lt;p&gt;Somewhere a kid is saving up for this. He has read every review. Watched the introduction video four or five times. Looked up every spec, every benchmark, every footnote. He has probably walked into an Apple Store and interrogated an employee about it ad nauseam. He knows the consensus. He knows it’s probably not the right tool for everything he wants to do.&lt;/p&gt;
&lt;p&gt;He has decided he’ll be fine.&lt;/p&gt;
&lt;p&gt;This computer is not for the people writing those reviews — people who already have the MacBook Pro, who have the professional context, who are optimizing at the margin. This computer is for the kid who doesn’t have a margin to optimize. Who can’t wait for the right tool to materialize. Who is going to take what’s available and push it until it breaks and learn something permanent from the breaking.&lt;/p&gt;
&lt;p&gt;He is going to go through System Settings, panel by panel, and adjust everything he can adjust just to see how he likes it. He is going to make a folder called “Projects” with nothing in it. He is going to download Blender because someone on Reddit said it was free, and then stare at the interface for forty-five minutes. He is going to open GarageBand and make something that is not a song. He is going to take screenshots of fonts he likes and put them in a folder called “cool fonts” and not know why. Then he is going to have Blender and GarageBand and Safari and Xcode all open at once, not because he’s working in all of them but because he doesn’t know you’re not supposed to do that, and the machine is going to get hot and slow and he is going to learn what the spinning beachball cursor means. None of this will look, from the outside, like the beginning of anything. But one of those things is going to stick longer than the others. He won’t know which one until later. He’ll just know he keeps opening it.&lt;/p&gt;
&lt;p&gt;That is not a bug in how he’s using the computer. That is the entire mechanism by which a kid becomes a developer. Or a designer. Or a filmmaker. Or whatever it is that comes after spending thousands of hours alone in a room with a machine that was never quite right for what you were asking of it.&lt;/p&gt;
&lt;p&gt;I was that kid.&lt;/p&gt;
&lt;p&gt;He knows it’s probably not the right tool. It doesn’t matter. It never did.&lt;/p&gt;
&lt;p&gt;The reviews can tell you what a computer is for. They have very little interest in what you might become because of one.&lt;/p&gt;</content:encoded></item><item><title>Introducing WireView, an app mostly for me</title><link>https://www.youtube.com/watch?v=ZQ9XTSt5Hms</link><guid isPermaLink="true">https://www.youtube.com/watch?v=ZQ9XTSt5Hms</guid><pubDate>Sun, 22 Feb 2026 00:00:00 GMT</pubDate><source url="https://www.youtube.com/watch?v=ZQ9XTSt5Hms">Introducing WireView, an app mostly for me</source></item><item><title>How I QA iOS Apps</title><link>https://samhenri.gold/blog/20250923-qa-ios-apps/</link><guid isPermaLink="true">https://samhenri.gold/blog/20250923-qa-ios-apps/</guid><pubDate>Tue, 23 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I started designing, building, and testing iOS apps, I over-indexed on the happy path. Which would be fine if everyone used your app exactly as intended, with your exact phone model and your exact system settings and your exact same physical/cognitive abilities. However, scientists have recently discovered that humans are different. And they will use your software in novel, inane ways. As the designer/developer, it’s your responsibility to save them from themselves.&lt;/p&gt;
&lt;p&gt;I’ve spent a lot of time on small teams where I was the only person checking for visual quality assurance (VQA) and general bugs. As such, I’ve developed a Sixth Sense (1999) for where and how apps tend to break. Cole Sear sees dead people, I see race conditions. They’re equally scary. Since a rising tide lifts all boats, I’m sharing the checklist I run through in my mind when testing apps and filing bugs.&lt;/p&gt;
&lt;p&gt;The long and short of my list is to &lt;strong&gt;interrupt everything&lt;/strong&gt;. Rotate, background, swipe, tap too fast, switch modes, change accessibility settings, toggle obscure preferences. Be the &lt;a href=&quot;https://en.wikipedia.org/wiki/Chaos_engineering&quot; title=&quot;Chaos engineering - Wikipedia&quot;&gt;chaos monkey&lt;/a&gt;. Even dip into adversarial testing — if you were trying to break this app, how would you go about it? If you spot some common bug, what can you do in the app to make it &lt;strong&gt;even worse&lt;/strong&gt;? E.g. if you notice a certain list view causes the phone to get a little warm, can you stress it enough to get the phone so hot that it throttles?&lt;/p&gt;
&lt;p&gt;Some notes to set the stage:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I’m a designer, but these are not design critiques or new features you should add — these are strictly ways to stress-test what you already have&lt;/li&gt;
&lt;li&gt;This is written without assuming you have access to the source code. These are all bugged states and errors that users can encounter just running your production app on their phones&lt;/li&gt;
&lt;li&gt;This barely touches on accessibility, which is a whole other thing to audit for. For more info, I suggest checking out:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://mobilea11y.com&quot;&gt;mobilea11y&lt;/a&gt;, which focuses on accessible development practices, and&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://applevis.com/developers&quot;&gt;AppleVis&lt;/a&gt;, which focuses on users with low vision. It’s a good place to see what users expect, care about, and appreciate from the products they use.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;This is not AI-written, I just really like using em dashes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;navigation-and-transitions&quot;&gt;Navigation and Transitions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Can I get a race condition between programatic NavigationPath updates and my own back swipe gestures?
&lt;ul&gt;
&lt;li&gt;Rapidly push → pop → push the same route; pop with edge-swipe while an async load starts&lt;/li&gt;
&lt;li&gt;Can I push a new screen in the middle of a transition?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;In sheets, try to get the sheet dismissal drag gesture to conflict with gestures within the sheet (scrolling or panning or magnifying)&lt;/li&gt;
&lt;li&gt;In a NavigationSplitView, deselect a sidebar item and see how the main content pane reacts to having no selection. Does it update? Does it show an empty state? Is it just blank?&lt;/li&gt;
&lt;li&gt;In a sidebar app, can we get it to forget state/lose focus?
&lt;ul&gt;
&lt;li&gt;i.e. in an outline view, can you get it to forget what’s selected and what sections are collapsed?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;In a tab bar app, check if tapping the tab bar does the expected behavior of pushing you to the tab’s root view (or scroll to the top if you’re already there)
&lt;ul&gt;
&lt;li&gt;It’s not system behavior but common enough that users expect it&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;onAppear&lt;/code&gt; / &lt;code&gt;task&lt;/code&gt; duplication
&lt;ul&gt;
&lt;li&gt;Navigate to a view then immediately go back and forward again rapidly&lt;/li&gt;
&lt;li&gt;Open/close sheets and modals repeatedly&lt;/li&gt;
&lt;li&gt;Try to pull-to-refresh multiple times before first one completes&lt;/li&gt;
&lt;li&gt;Switch tabs rapidly while data is loading&lt;/li&gt;
&lt;li&gt;Background/foreground app while loading screens are visible&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;input-and-forms&quot;&gt;Input and Forms&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Try to break focus state
&lt;ul&gt;
&lt;li&gt;Tap a text field → rotate device → check if keyboard still there&lt;/li&gt;
&lt;li&gt;Fill a form field → submit → see if focus advances properly&lt;/li&gt;
&lt;li&gt;Using an external keyboard, hit Tab repeatedly&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Keyboard dismissal
&lt;ul&gt;
&lt;li&gt;Can I scroll to dismiss a keyboard?&lt;/li&gt;
&lt;li&gt;Does the keyboard stay up even when I don’t want it to?&lt;/li&gt;
&lt;li&gt;Does the keyboard ever cover elements that I need to access?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TextField/TextEditor jank
&lt;ul&gt;
&lt;li&gt;Paste a big chunk of text and see if the app starts to choke&lt;/li&gt;
&lt;li&gt;Check if it uses the right &lt;a href=&quot;https://developer.apple.com/documentation/swiftui/view/textcontenttype(_:)-ufdv&quot;&gt;&lt;code&gt;textContentType&lt;/code&gt;&lt;/a&gt; (especially during onboarding like OTPs, user’s name, email, etc)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Data loss on app background
&lt;ul&gt;
&lt;li&gt;Start typing in a form, switch apps, then return. Did the in-flight value survive?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;system-integration&quot;&gt;System Integration&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;How does the app work in iPhone landscape?
&lt;ul&gt;
&lt;li&gt;This is one of the easiest things to try and the source loads of UI bugs. I’m serious, flip your phone to landscape and double tap the home indicator to open the Type to Siri interface.&lt;/li&gt;
&lt;li&gt;Check for truncation, form inputs, transition bugs&lt;/li&gt;
&lt;li&gt;Try rotating in different app states (i.e. in a modal sheet)&lt;/li&gt;
&lt;li&gt;If the app uses NavigationSplitView, a bunch of bugs will almost always pop up in iPhone landscape&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run on an iPhone SE
&lt;ul&gt;
&lt;li&gt;Trigger the double height status bar (in-call or personal hotspot)&lt;/li&gt;
&lt;li&gt;Check if your minimum size constraints actually work (or if they need to get added)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Screwing with refreshable
&lt;ul&gt;
&lt;li&gt;Can I get the refresh to stall if I leave the view? Dismissing the sheet, changing tabs, pushing a new screen, backgrounding the app&lt;/li&gt;
&lt;li&gt;Same thing with rotating — what happens if I refresh and rotate? Or refresh while the keyboard is up?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;In a scroll view, tap the status bar repeatedly to jump to the top. Does the scroll-to-top lurch if you keep tapping it while it’s animating?&lt;/li&gt;
&lt;li&gt;During first launch, what happens if the user declines granting the app permission for something? Can you handle that gracefully?&lt;/li&gt;
&lt;li&gt;If you app sends push notifications, have you &lt;a href=&quot;https://stackoverflow.com/questions/69453299/ios-15-enabling-configure-in-app-option-for-notifications&quot; title=&quot;Stack Overflow: Enabling Configure in App option for notifications&quot;&gt;told the system&lt;/a&gt; where your notification preferences are in the app?&lt;/li&gt;
&lt;li&gt;Long press everything that looks remotely interactive
&lt;ul&gt;
&lt;li&gt;Check if context menus appear where expected (and don’t where they shouldn’t)&lt;/li&gt;
&lt;li&gt;Sometimes the system flips the order of context menu items based on if the menu is presented above or below the presenting element. Make sure this is the right behavior for your menus and, if not, check out the &lt;a href=&quot;https://developer.apple.com/documentation/swiftui/view/menuorder(_:)&quot;&gt;menuOrder&lt;/a&gt; APIs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Drag and drop
&lt;ul&gt;
&lt;li&gt;Can I drag things from the app? Is it vending the right kind of data?&lt;/li&gt;
&lt;li&gt;Does the app have drop destinations where I’d expect them to?
&lt;ul&gt;
&lt;li&gt;E.g. a file in a documents app or an asset from Photos getting dropped into a photo picker element&lt;/li&gt;
&lt;li&gt;The composer in the Twitter app had a nasty drag/drop bug for ages were it wouldn’t resolve any images (the intent was clearly to attach an image to a tweet) but instead it would insert the local file URL wherever your cursor was and you’d get a tweet like: &lt;code&gt;Hey have you ever noticed how file:///var​/mobile​/Library​/SMS​/Attachments​/02​/02​/9AEC5611​-5B71​-44D1​/Untitled.heicwhen you try to drag an image on a tweet it breaks?&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Time and locale shenanigans
&lt;ul&gt;
&lt;li&gt;Simulate someone reconnecting to the network after landing from a flight by changing the timezone while the app is running. Does the app handle relative timestamps correctly?&lt;/li&gt;
&lt;li&gt;Toggle 24-hour time and check if the app respects that preference&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://support.apple.com/guide/iphone/change-the-language-and-region-iphce20717a3/ios&quot; title=&quot;Change the language and region on iPhone - Apple Support&quot;&gt;“Language &amp;#x26; Region” setting screen&lt;/a&gt; gives you a lot of levers to pull to see where an app hard-codes assumptions
&lt;ul&gt;
&lt;li&gt;I personally have the date format set to ISO YYYY-MM-DD instead of the US default MM/DD/YY. I see a lot of apps that don’t respect that setting&lt;/li&gt;
&lt;li&gt;Switch the “Start Week On” setting between Sunday/Monday&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Use your app through &lt;a href=&quot;https://support.apple.com/en-us/120421&quot; title=&quot;iPhone Mirroring: Use your iPhone from your Mac - Apple Support&quot;&gt;iPhone Mirroring&lt;/a&gt;! This catches a lot of extra issues around text input, pasteboards, and gesture handling.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;performance-and-stress&quot;&gt;Performance and Stress&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Can I trigger ForEach identity issues?
&lt;ul&gt;
&lt;li&gt;In a list, rapidly delete multiple items in random order&lt;/li&gt;
&lt;li&gt;Add items then immediately sort/filter&lt;/li&gt;
&lt;li&gt;Reorder items quickly then background the app&lt;/li&gt;
&lt;li&gt;Do a row update (favorite/bookmark/edit) and quickly scroll&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Beyond identity issues, how does the app handle scrolling a list super fast?
&lt;ul&gt;
&lt;li&gt;Long press the scroll indicator and fling it to the bottom to scrub the scroll view&lt;/li&gt;
&lt;li&gt;With an infinite scroll view, test how this works if you grab the scroll indicator and keep it pressed against the bottom&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Use the app with Low Power Mode enabled
&lt;ul&gt;
&lt;li&gt;See where things become unbearably slow&lt;/li&gt;
&lt;li&gt;Look for behaviors that can/should get disabled for low power&lt;/li&gt;
&lt;li&gt;Apple has a good (but old) &lt;a href=&quot;https://developer.apple.com/library/archive/documentation/Performance/Conceptual/EnergyGuide-iOS/LowPowerMode.html&quot; title=&quot;React to Low Power Mode on iPhones&quot;&gt;tech note&lt;/a&gt; about reacting to low power mode&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;This is tricky to test, but check how your app handles network conditions that float in and out
&lt;ul&gt;
&lt;li&gt;I depend on the New York City subway to get around. In stations, I have full cell bars. In the tunnels, I have no signal at all. Is your app able to handle this gracefully?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;accessibility&quot;&gt;Accessibility&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Repeat everything on this list with Reduce Motion, Reduce Transparency, Increase Contrast.
&lt;ul&gt;
&lt;li&gt;Then do it again with all three turned on&lt;/li&gt;
&lt;li&gt;Then do it again with all three turned on but in dark/light mode (whichever you normally don’t use)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Check if custom colors respond to dark mode/increased contrast correctly. These are really visible with brand colors/palettes&lt;/li&gt;
&lt;li&gt;Try using the Bold Text accessibility option and see how your app reacts. Is everything relatively bolder? Or is everything the same font weight now?
&lt;ul&gt;
&lt;li&gt;Bold Text should make everything proportionally bolder, not flatten all weights into one mushy medium&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Add the &lt;strong&gt;Text Size&lt;/strong&gt; control to your Control Center, then set it to only adjust your app.
&lt;ul&gt;
&lt;li&gt;See where your layout starts to break&lt;/li&gt;
&lt;li&gt;Look for areas where they don’t respond to the new font size (either they’re hard-coded or you’re not observing &lt;code&gt;traitCollectionDidChange&lt;/code&gt; — these will become apparent when you force quit the app and relaunch it)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is all to say: your app will break. Users will find ways to torture it that you never imagined. They’ll rotate mid-animation, background during critical saves, and somehow end up with seventeen modal sheets stacked on top of each other. They’ll be on a train that goes underground every three minutes with 5% battery remaining and every accessibility setting cranked to eleven. They’ll long-press buttons you forgot were even there.&lt;/p&gt;
&lt;p&gt;The good news is you can find these bugs first. The better news is that it’s oddly satisfying when you do. Each crash prevented is a one-star review avoided, every &lt;a href=&quot;https://mbbischoff.com/software-paper-cuts/&quot; title=&quot; Software Paper Cuts · mb bischoff&quot;&gt;paper cut&lt;/a&gt; smoothed is a user who doesn’t bounce. Happy hunting.&lt;/p&gt;</content:encoded></item><item><title>I’ve Been Writing Your Conspiracy Theories for Over Twenty Years. I’m Done.</title><link>https://samhenri.gold/blog/20250808-conspiracy/</link><guid isPermaLink="true">https://samhenri.gold/blog/20250808-conspiracy/</guid><pubDate>Fri, 08 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You probably don’t know me, but you know my greatest hits: &lt;em&gt;“Birds aren’t real,”&lt;/em&gt; &lt;em&gt;“5G causes cancer,”&lt;/em&gt; &lt;em&gt;“JFK’s head just did that.”&lt;/em&gt; I’ve been freelance-writing conspiracy theories since 2001 (the industry really took off that year). Back then, this was an art. I’d spend months researching, building off of preexisting foundations, photoshopping red arrows onto the grainiest JPEGs I could find.&lt;/p&gt;
&lt;p&gt;Back then you could even get out into the real world. I remember standing in the fountain of Washington Square Park, handing out flyers about sawdust in naan bread.&lt;/p&gt;
&lt;p&gt;The goal was distraction from the real conspiracies, plots, and schemes; but the artistry was to push each theory to its breaking point—stress-testing the limits of human gullibility. On a good day, your theory would escape the forums and make it onto the third hour of the &lt;em&gt;Today&lt;/em&gt; show. But that took time. You had to earn it.&lt;/p&gt;
&lt;p&gt;Now, any random tweet gets read once and accepted as gospel. &lt;em&gt;“The holes in Crocs are for NSA foot recognition.”&lt;/em&gt; People read that now and just nod. &lt;em&gt;“Yeah that tracks.”&lt;/em&gt; It’s impossible for people now to tell honest, salt-of-the-earth paranoia from bland, cookie-cutter fear-mongering.&lt;/p&gt;
&lt;p&gt;And don’t get me started on the mass-produced AI theory-slop. It’ll spew something like &lt;em&gt;“Steven Spielberg is two Jews in a trench coat”&lt;/em&gt; and then call itself robo-Goebbels or whatever. Sure, it has the mouthfeel of a conspiracy theory, but where’s the structure or payoff? Where’s the feverish internal logic? Where’s the nuanced dance, the elegant line-toeing, the gentle flirtation with Hitler? It doesn’t get the craft, and it certainly has no soul. At least the robots aren’t trying to sell you anything.&lt;/p&gt;
&lt;p&gt;Verizon once paid me handsomely to spread the 5G brain-melting rumor. Not because 5G melts brains (it singes the inner ear canal, at most), but because their engineers needed six more months for rollout. Last week, Taco Bell emailed to ask if I’d “just ask questions” about Chipotle guacamole being mostly puréed frogs. I used to carefully fabricate inconsistencies that would blossom into full-blown psychosis. Now I just log into a burner account, half-heartedly fire off &lt;em&gt;“Did you know? AirPods subliminally program obedience to the DMV”&lt;/em&gt;, watch it trend, then get a thank-you Edible Arrangement from Bose.&lt;/p&gt;
&lt;p&gt;I miss the simpler times, the passionate industry, the heartfelt, honest lies—cryptid sightings, alien autopsies—hell, some of you still think the Earth’s round. I’m done with all of it. You’re on your own now. Good luck figuring out what’s real anymore.&lt;/p&gt;</content:encoded></item><item><title>Things That Is Wood</title><link>https://samhenri.gold/blog/20241226-wood/</link><guid isPermaLink="true">https://samhenri.gold/blog/20241226-wood/</guid><pubDate>Thu, 26 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, I made a &lt;a href=&quot;https://hachyderm.io/@samhenrigold/113716837691650543&quot;&gt;social media post&lt;/a&gt; asking why we eat some wood (almonds) and not other wood (teak, mahogany). This raised some questions, so I figured a slightly longer form medium would be appropriate to address some questions and concerns about what wood we can and cannot eat. What follows is my non-comprehensive list of things that is edible wood and things that is inedible wood.&lt;/p&gt;
&lt;h2 id=&quot;edible-wood&quot;&gt;Edible Wood&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Anything hard and dry, tastes good&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Almonds&lt;/li&gt;
&lt;li&gt;Pine nuts (literally from pine trees but somehow okay??)&lt;/li&gt;
&lt;li&gt;Most nuts, actually. (The clear exception is, of course, Grape-Nuts.)&lt;/li&gt;
&lt;li&gt;Cinnamon&lt;/li&gt;
&lt;li&gt;Coconut&lt;/li&gt;
&lt;li&gt;A little bit of sawdust&lt;/li&gt;
&lt;li&gt;All beans (coffee, black, cocoa, vanilla, rice&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;)&lt;/li&gt;
&lt;li&gt;Bay leaves (we don’t eat them but we let them swim in our soup?)&lt;/li&gt;
&lt;li&gt;Cloves (nature’s wooden nails we eat)&lt;/li&gt;
&lt;li&gt;Nutmeg (the grated cheese of the wood world but only for desserts)&lt;/li&gt;
&lt;li&gt;Maple syrup (tree juice we decided was fine)&lt;/li&gt;
&lt;li&gt;Cardamom (tiny wood pellets that make chai taste good&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;)&lt;/li&gt;
&lt;li&gt;Bamboo shoots (baby wood that’s somehow okay. Less ethical than eating veal because all baby cows go to hell anyway)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;inedible-wood&quot;&gt;Inedible wood&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Anything hard and dry, doesn’t taste good.&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Trees (too woody to eat)&lt;/li&gt;
&lt;li&gt;Cedar planks (forbidden, but decent gum feel)&lt;/li&gt;
&lt;li&gt;Mahogany (cannot eat, it is the inner-flesh of a nice Volvo)&lt;/li&gt;
&lt;li&gt;A lot of sawdust&lt;/li&gt;
&lt;li&gt;IKEA table (technically edible but frowned upon due to woke)&lt;/li&gt;
&lt;li&gt;Guitar (music wood that society has deemed “too important” to eat)&lt;/li&gt;
&lt;li&gt;Baseball bat (sport wood, would be a waste to eat)&lt;/li&gt;
&lt;li&gt;Pencil (wood we write with instead of eat, for some reason)&lt;/li&gt;
&lt;li&gt;Book (smart wood, possibly made of pencil (which makes it wood))&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope this helps clarify my position. Thank you for your attention.&lt;/p&gt;
&lt;p&gt;God bless America,&lt;/p&gt;
&lt;p&gt;Sam&lt;/p&gt;
&lt;hr&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;For the purposes of this article, rice is a bean and a bean is a wood. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;I thought this was the sweater stuff but it turns out I was thinking of cashmere. &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>Your app doesn&apos;t need a chat feature</title><link>https://lickability.com/blog/your-app-doesnt-need-a-chat-feature/?utm_source=samhenri%2Egold</link><guid isPermaLink="true">https://lickability.com/blog/your-app-doesnt-need-a-chat-feature/?utm_source=samhenri%2Egold</guid><pubDate>Tue, 07 May 2024 00:00:00 GMT</pubDate><source url="https://lickability.com/blog/your-app-doesnt-need-a-chat-feature/?utm_source=samhenri%2Egold">Your app doesn&apos;t need a chat feature</source></item><item><title>Our Apple Sports design critique</title><link>https://lickability.com/blog/apple-sports/?utm_source=samhenri%2Egold</link><guid isPermaLink="true">https://lickability.com/blog/apple-sports/?utm_source=samhenri%2Egold</guid><pubDate>Wed, 27 Mar 2024 00:00:00 GMT</pubDate><source url="https://lickability.com/blog/apple-sports/?utm_source=samhenri%2Egold">Our Apple Sports design critique</source></item><item><title>Designing Mastodon’s reply safety features</title><link>https://lickability.com/blog/designing-mastodons-reply-safety-features/?utm_source=samhenri%2Egold</link><guid isPermaLink="true">https://lickability.com/blog/designing-mastodons-reply-safety-features/?utm_source=samhenri%2Egold</guid><pubDate>Thu, 07 Dec 2023 00:00:00 GMT</pubDate><source url="https://lickability.com/blog/designing-mastodons-reply-safety-features/?utm_source=samhenri%2Egold">Designing Mastodon’s reply safety features</source></item><item><title>Hey man, do you wanna come to my poetry reading?</title><link>https://samhenri.gold/blog/20231111-hey-man-do-you-wanna-come-to-my-poetry-reading/</link><guid isPermaLink="true">https://samhenri.gold/blog/20231111-hey-man-do-you-wanna-come-to-my-poetry-reading/</guid><pubDate>Sat, 11 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey man, do you wanna come to my poetry reading?&lt;/p&gt;
&lt;p&gt;You’ll love the venue, it’s got peeling lead paint, rusted pipes, the whole post-industrial vibe. It’s in the basement of an operational kill shelter, you’ll know it when you see it.&lt;/p&gt;
&lt;p&gt;I know you’re on the Upper West Side; it’s super easy to get to from there — just stay on the M train after the last stop in Queens, wait for it to turn around beyond the station, tuck and roll out to the emergency exit there. Then it’s just a brisk, eastward walk for 5, 10, maybe 25 minutes.&lt;/p&gt;
&lt;p&gt;Doors close at 8 PM sharp but it only gets going around 9:30. You should arrive by 7 so you can get a metal folding chair at the front of the stage. By “stage,” I mean a large, thrifted oriental area rug. It really gets the allergies going. It’s very avant-garde, very now.&lt;/p&gt;
&lt;p&gt;For their open mic nights, there’s an $8 cover charge. They’re either cash-only or cashless depending on the moon phase. I think we’re in waning crescent, so it should be…cashless? I think? Which is good, you do NOT want to be carrying that much cash in that area.&lt;/p&gt;
&lt;p&gt;Between you and me, I would use the bathroom before you leave. There’s only one unisex toilet in the entryway and the sliding bolt doesn’t fully match up to the hole drilled into the door.&lt;/p&gt;
&lt;p&gt;They normally card people, but only to check your address and then cross-check your Zestimate. They won’t let you in if they think you’re a product of generational wealth.&lt;/p&gt;
&lt;p&gt;I don’t know if you drink, but there’s a bar in the back. I can forward you the link to their menu — it’s exclusively a QR code but the basement gets no reception, so download it beforehand. Their specialty cocktail is an old fashioned (but instead of bourbon, they’ll sub it with vodka without asking. And instead of bitters, they will just use even more simple syrup.) They do have wine, but only white wine. Vinegar. White wine vinegar.&lt;/p&gt;
&lt;p&gt;What am I performing? Doesn’t really matter. I’ll speak in a whisper too quiet for proper venues. The death-shrieks of the dogs upstairs are too horrific to pay attention to me anyway.&lt;/p&gt;</content:encoded></item><item><title>Plussing your iOS app</title><link>https://lickability.com/blog/plussing-your-ios-app/?utm_source=samhenri%2Egold</link><guid isPermaLink="true">https://lickability.com/blog/plussing-your-ios-app/?utm_source=samhenri%2Egold</guid><pubDate>Mon, 28 Aug 2023 00:00:00 GMT</pubDate><source url="https://lickability.com/blog/plussing-your-ios-app/?utm_source=samhenri%2Egold">Plussing your iOS app</source></item><item><title>Deleting Your SeatGeek Account Without Asking Support</title><link>https://samhenri.gold/blog/20230611-seatgeek/</link><guid isPermaLink="true">https://samhenri.gold/blog/20230611-seatgeek/</guid><pubDate>Sun, 11 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Look at this absolute roach motel they want you to go through to delete your account. That’s &lt;a href=&quot;https://www.nirandfar.com/cancel-new-york-times/&quot;&gt;New York Times&lt;/a&gt;-level bonkos.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://seatgeek.com/account/delete/&quot;&gt;https://seatgeek.com/account/delete/&lt;/a&gt;. You’re welcome. I haven’t seen this linked anywhere in their account settings, but the iOS app links to it &lt;a href=&quot;https://developer.apple.com/support/offering-account-deletion-in-your-app/&quot;&gt;because they have to&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Ranking Proposed Names for NSSegmentedControl</title><link>https://www.youtube.com/watch?v=SM1c1wL62so</link><guid isPermaLink="true">https://www.youtube.com/watch?v=SM1c1wL62so</guid><pubDate>Fri, 13 Jan 2023 00:00:00 GMT</pubDate><source url="https://www.youtube.com/watch?v=SM1c1wL62so">Ranking Proposed Names for NSSegmentedControl</source></item><item><title>“So what do you call a phone that&apos;s bigger than plus size?”</title><link>https://www.youtube.com/watch?v=npO4N_ptp5g</link><guid isPermaLink="true">https://www.youtube.com/watch?v=npO4N_ptp5g</guid><pubDate>Sun, 08 Jan 2023 00:00:00 GMT</pubDate><source url="https://www.youtube.com/watch?v=npO4N_ptp5g">“So what do you call a phone that&apos;s bigger than plus size?”</source></item><item><title>Why I Liquidated My Assets and Invested in GapCash</title><link>https://samhenri.gold/blog/20230102-gap-cash/</link><guid isPermaLink="true">https://samhenri.gold/blog/20230102-gap-cash/</guid><pubDate>Mon, 02 Jan 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As a savvy investor, I’ve always been on the lookout for the next big thing. I’ve dabbled in stocks, real estate, and even cryptocurrency, but nothing has ever quite captured my attention like GapCash.&lt;/p&gt;
&lt;p&gt;For those who don’t know, GapCash — issued by the Gap clothing company — is legal tender in all Gap retail locations, of which there are at least a baker’s dozen. And let me tell you, this is the investment opportunity of a lifetime.&lt;/p&gt;
&lt;p&gt;For starters, Gap has a long history of success. They’ve been around for decades, and their brand is known and trusted by consumers all over the world. Plus, their clothes are stylish, comfortable, and affordable — what’s not to love?&lt;/p&gt;
&lt;p&gt;But the real reason I’m so bullish on GapCash is because of the potential for massive returns. Think about it: if you had invested in $AAPL back in its early days, you could have made a fortune. Haven’t thought of it like that, have you? And I believe GapCash has the same potential.&lt;/p&gt;
&lt;p&gt;In fact, I’m so confident in the future of GapCash that I’ve liquidated all of my assets and invested every last penny in GapCash. And I’m not the only one — I’ve heard that many other smart investors are doing the same. @warnenbuffet211 assured me of it.&lt;/p&gt;
&lt;p&gt;So if you want to get in on the ground floor of the next big thing, I highly recommend investing in GapCash. Trust me, you won’t regret it.&lt;/p&gt;
&lt;center&gt;∗ ∗ ∗&lt;/center&gt;
&lt;p&gt;&lt;strong&gt;Update January 2023:&lt;/strong&gt; My wife left me.&lt;/p&gt;</content:encoded></item><item><title>Ordering Fancy Foods: A Guide for Stupid Americans</title><link>https://samhenri.gold/blog/20220724-fancy-foods-guide/</link><guid isPermaLink="true">https://samhenri.gold/blog/20220724-fancy-foods-guide/</guid><pubDate>Sun, 24 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, I was at a restaurant where the menu was mostly French. There was a dish I wanted to order (Oeufs en meurette), but I didn’t know how to pronounce it so I had to do that thing where I said the familiar syllables super loud and the mystery syllables in basically a murmur (“I’ll have the OOFS EN M&lt;small&gt;eurphme&lt;/small&gt;ETTE”).&lt;/p&gt;
&lt;p&gt;I had to do that twice so the waiter could hear it and it was utterly humiliating. This can’t be the only time a dumb American has to do this song and dance, so I figured I’d compile a list of common fancy words and their proper pronunciations for my fellow idiots.&lt;/p&gt;

























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Fancy Word&lt;/th&gt;&lt;th&gt;Pronounce Like…&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Sauvignon blanc&lt;/td&gt;&lt;td&gt;Southern young blonde&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Le Pain Quotidien&lt;/td&gt;&lt;td&gt;The Pan Quarter Dan&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Crème brûlée&lt;/td&gt;&lt;td&gt;Cream broole&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Roux&lt;/td&gt;&lt;td&gt;Rocks&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Sommelier&lt;/td&gt;&lt;td&gt;Smiley&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Soupçon&lt;/td&gt;&lt;td&gt;SoupCon (like the convention)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Plat du jour&lt;/td&gt;&lt;td&gt;Plate DiGiorno&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Al dente&lt;/td&gt;&lt;td&gt;Alf Donkey&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Baguette&lt;/td&gt;&lt;td&gt;Breddit&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Aïoli&lt;/td&gt;&lt;td&gt;Açaí&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Açaí&lt;/td&gt;&lt;td&gt;Aïoli&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Croque monsieur&lt;/td&gt;&lt;td&gt;Crotch monster&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;My hope is that you’ll put this guide to good use when ordering in the future. If you don’t, I’ll knock the oui oui out of you.&lt;/p&gt;</content:encoded></item><item><title>A Gist Apart</title><link>https://samhenri.gold/blog/20220413-a-gist-apart/</link><guid isPermaLink="true">https://samhenri.gold/blog/20220413-a-gist-apart/</guid><pubDate>Wed, 13 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Something something web design. You get the idea.&lt;/p&gt;</content:encoded></item><item><title>Heavy-Duty Data Transfer</title><link>https://samhenri.gold/blog/20220410-heavy-duty-data/</link><guid isPermaLink="true">https://samhenri.gold/blog/20220410-heavy-duty-data/</guid><description>It&apos;s 2022. Why are we still using fiber?!</description><pubDate>Sun, 10 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Every waking minute, even when I’m in private, someone comes up and asks me, “Sam, how fast can we possibly move data from one place to another?” I’m tired of it. I just want to eat alone. But because I am kind, funny, hot, but mostly kind, I will run through the math. Just for you.&lt;/p&gt;
&lt;p&gt;The current fastest (recorded) data transfer speed is &lt;a href=&quot;https://www.tomshardware.com/news/japan-breaks-internet-speed-record-at-319-terabits-per-second&quot;&gt;319 terabits/second over 3,001 kilometers&lt;/a&gt;, or slightly faster than a South Korean internet connection, by using optical fibers.&lt;/p&gt;
&lt;p&gt;These fibers are tiny. Teeny tiny. Teeny &lt;em&gt;weeny&lt;/em&gt; tiny. I’ll be blunt: if I can’t see my internet pipes with m’own peepers, I simply cannot trust that data. So our ideal data transfer must be visible. Preferably, I should be able to construct this infrastructure using standard household materials – nothing more than a dozen baulks of wood harvested from ship hulls and the remains of homes of a nearby pillaged town. Since the internet is everywhere and yet nowhere, we must adapt our new data transfer system to any arbitrary location. This contraption would have to be mobile.&lt;/p&gt;
&lt;p&gt;As it turns out, medieval engineers of the 12th century — probably Byzantine or Islamic — had already solved this problem with the invention of the counterweight trebuchet.&lt;/p&gt;
&lt;p&gt;A modern counterweight trebuchet can theoretically yeet a &lt;a href=&quot;https://en.wikipedia.org/wiki/Trebuchet#Reconstructed_counterweight_trebuchets&quot;&gt;100 kg projectile 200 meters with a 6,000 kg counterweight&lt;/a&gt;. Assuming we use solely 1 TB micro SD cards (250 milligrams), our trebuchet can handle 400,000 cards before snapping in half like a darn-tootin’ toothpick. 400 petabytes!&lt;/p&gt;
&lt;p&gt;Math time! So to make our lives easier, we’ll normalize all units to gigabytes and meters. This is the fastest optical speed:&lt;/p&gt;
&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;
  &lt;mfrac&gt;
    &lt;mrow&gt;
      &lt;mn&gt;39&lt;/mn&gt;&lt;mo separator=&quot;true&quot;&gt;,&lt;/mo&gt;&lt;mn&gt;875&lt;/mn&gt;
      &lt;mspace width=&quot;0.22em&quot;&gt;&lt;/mspace&gt;
      &lt;mtext&gt;gigabytes per second&lt;/mtext&gt;
    &lt;/mrow&gt;
    &lt;mrow&gt;
      &lt;mn&gt;3&lt;/mn&gt;&lt;mo separator=&quot;true&quot;&gt;,&lt;/mo&gt;&lt;mn&gt;001&lt;/mn&gt;&lt;mo separator=&quot;true&quot;&gt;,&lt;/mo&gt;&lt;mn&gt;000&lt;/mn&gt;
      &lt;mspace width=&quot;0.22em&quot;&gt;&lt;/mspace&gt;
      &lt;mtext&gt;m&lt;/mtext&gt;
    &lt;/mrow&gt;
  &lt;/mfrac&gt;
  &lt;mspace width=&quot;0.22em&quot;&gt;&lt;/mspace&gt;
  &lt;mo form=&quot;infix&quot;&gt;=&lt;/mo&gt;
  &lt;mspace width=&quot;0.22em&quot;&gt;&lt;/mspace&gt;
  &lt;mfrac&gt;
    &lt;mrow&gt;
      &lt;mn&gt;0.0132889037&lt;/mn&gt;
      &lt;mspace width=&quot;0.22em&quot;&gt;&lt;/mspace&gt;
      &lt;mtext&gt;gigabytes per second&lt;/mtext&gt;
    &lt;/mrow&gt;
    &lt;mrow&gt;
      &lt;mn&gt;1&lt;/mn&gt;
      &lt;mspace width=&quot;0.22em&quot;&gt;&lt;/mspace&gt;
      &lt;mtext&gt;m&lt;/mtext&gt;
    &lt;/mrow&gt;
  &lt;/mfrac&gt;
&lt;/math&gt;
&lt;p&gt;And our projected trebuchet:&lt;/p&gt;
&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;
  &lt;mfrac&gt;
    &lt;mrow&gt;
      &lt;mn&gt;400&lt;/mn&gt;&lt;mo separator=&quot;true&quot;&gt;,&lt;/mo&gt;&lt;mn&gt;000&lt;/mn&gt;&lt;mo separator=&quot;true&quot;&gt;,&lt;/mo&gt;&lt;mn&gt;000&lt;/mn&gt;
      &lt;mspace width=&quot;0.22em&quot;&gt;&lt;/mspace&gt;
      &lt;mtext&gt;gigabytes&lt;/mtext&gt;
    &lt;/mrow&gt;
    &lt;mrow&gt;
      &lt;mn&gt;200&lt;/mn&gt;
      &lt;mspace width=&quot;0.22em&quot;&gt;&lt;/mspace&gt;
      &lt;mtext&gt;m&lt;/mtext&gt;
    &lt;/mrow&gt;
  &lt;/mfrac&gt;
  &lt;mspace width=&quot;0.22em&quot;&gt;&lt;/mspace&gt;
  &lt;mo form=&quot;infix&quot;&gt;=&lt;/mo&gt;
  &lt;mspace width=&quot;0.22em&quot;&gt;&lt;/mspace&gt;
  &lt;mfrac&gt;
    &lt;mrow&gt;
      &lt;mn&gt;2&lt;/mn&gt;&lt;mo separator=&quot;true&quot;&gt;,&lt;/mo&gt;&lt;mn&gt;000&lt;/mn&gt;&lt;mo separator=&quot;true&quot;&gt;,&lt;/mo&gt;&lt;mn&gt;000&lt;/mn&gt;
      &lt;mspace width=&quot;0.22em&quot;&gt;&lt;/mspace&gt;
      &lt;mtext&gt;gigabytes&lt;/mtext&gt;
    &lt;/mrow&gt;
    &lt;mrow&gt;
      &lt;mn&gt;1&lt;/mn&gt;
      &lt;mspace width=&quot;0.22em&quot;&gt;&lt;/mspace&gt;
      &lt;mtext&gt;m&lt;/mtext&gt;
    &lt;/mrow&gt;
  &lt;/mfrac&gt;
&lt;/math&gt;
&lt;p&gt;If we fling it ~200 m and the bundle spends about &lt;strong&gt;6.4 seconds&lt;/strong&gt; in the air, that’s roughly &lt;strong&gt;62.6 million GB/s&lt;/strong&gt; for those few glorious seconds.&lt;/p&gt;
&lt;p&gt;To account for speed, I’ll make some assumptions about our MicroSD payload. The bundled payload’s diameter is 6 feet and we’ve maxed out the payload at 400K cards (100 kg). We’ll also assume the windspeed is 2.68 m/s, which is the low end for &lt;a href=&quot;https://sciencing.com/average-daily-wind-speed-24011.html&quot;&gt;average windspeed&lt;/a&gt; in the US.&lt;/p&gt;
&lt;p&gt;I’m gonna level with you, I barely passed high school science. “Punnett square” this, “stop sniffing the gas out of the Bunsen burner” that. So when I started thinking about how fast this bundle of micro SD cards would be traveling, my brain started to hurt. And I did NOT manifest that for 2022. So here we are. I can only imagine flinging a bunch of cards across land would move significantly faster than fiber. Fiber is tiny, and it’s easy for the internet juice to get caught in a tangle.&lt;/p&gt;
&lt;p&gt;Trebuchet Data Transfer (TDT for short, since I imagine we’ll be seeing this term often) seems promising. Encryption in transit barely holds a candle to the trebuchet method. What could be more secure than being able to see your precious data being flung 200 meters by a medieval siege weapon? That’s the Web3-level trust we were promised. If it was good enough for medieval siege crews, it’ll be good enough for you.&lt;/p&gt;</content:encoded></item><item><title>Making a Caesar Shifter</title><link>https://samhenri.gold/blog/20220212-caesar-shifter/</link><guid isPermaLink="true">https://samhenri.gold/blog/20220212-caesar-shifter/</guid><description>An experimental Caesar Shift web utility inspired by Saul Bass.</description><pubDate>Sat, 12 Feb 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;/labs/caesar-shifter&quot;&gt;Here’s the final product.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;background&quot;&gt;Background&lt;/h3&gt;
&lt;p&gt;This Caesar Shift utility started first as me trying to build an Enigma machine in a sort of Saul Bass/Spy vs Spy visual style. Turns out, that’s rather difficult when you not only don’t know how an Enigma machine works but you also have to mimic a designer’s unique style that with not a &lt;em&gt;ton&lt;/em&gt; of precedent in digital design.&lt;/p&gt;
&lt;p&gt;I started by making a handful of visual boards on &lt;a href=&quot;https://dribbble.com/samhenrigold/collections/5404005-Stark&quot;&gt;Dribbble&lt;/a&gt; and &lt;a href=&quot;https://www.are.na/sam-henri-gold/stark-uswc2gtlgds&quot;&gt;Are.na&lt;/a&gt;, the latter of which is a lovely service if you’re unfamiliar. I also began my research on Enigma machines, which began and ended with this &lt;a href=&quot;https://www.youtube.com/watch?v=ybkkiGtJmkM&quot;&gt;one video&lt;/a&gt;, before attempting some rough wireframe concepts of what an Enigma simulator could look and act like. I used Figma for all of this project’s design.&lt;/p&gt;
&lt;h3 id=&quot;day-1&quot;&gt;Day 1&lt;/h3&gt;
&lt;figure role=&quot;figure&quot; aria-label=&quot;Concept one: a plugboard grid.&quot; class=&quot;md-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./assets/1_plugboard.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption&gt;Concept one: a plugboard grid.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The first concept was around the plugboard of the Enigma machine (at this point you should have at least skimmed that video I referenced). It was, charitably, a fucking train-wreck. If I had gone this route, I think the only redeeming quality this would’ve had would’ve been some wiggly noodle cable physics from that D3 link I pasted in the Figma page.&lt;/p&gt;
&lt;figure role=&quot;figure&quot; aria-label=&quot;Concept two: a sliding plugboard.&quot; class=&quot;md-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./assets/2_slidingplugs.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption&gt;Concept two: a sliding plugboard.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;A slight variation on this Quartz Composer-inspired plugboard design came with the sliding plugboard. In this, the top and bottom rows would be detached and would scroll freely so you could make arbitrary connections. It solved the rat’s nest of cables, except not really. This would’ve just kicked the can down the road, I still had to figure out a way to show that there’s a connection offscreen if you’ve got, say, A and N connected but one of those letters wasn’t visible in the scrolled-to region.&lt;/p&gt;
&lt;p&gt;At this point, I put a pin in the plugboard problem for later because I remembered there’s more to an Enigma machine than the plugs. Behold, the very first concept in which I attempted to lay out the machine on a scrolling 2D plane:&lt;/p&gt;
&lt;figure role=&quot;figure&quot; aria-label=&quot;A tall frame consisting of four components. From top to bottom: a gray box labeled &amp;#x22;Out&amp;#x22;. A horizontal stack of five rotors: one blank, three rotors with the alphabet, one blank. A version of the scrolling plug board wrapped in a parent container. A gray box labeled &amp;#x22;Input&amp;#x22;. Multi-colored wires connect the various components in a chaotic mess.&quot; class=&quot;md-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./assets/3_uglyflow.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption&gt;A tall frame consisting of four components. From top to bottom: a gray box labeled &quot;Out&quot;. A horizontal stack of five rotors: one blank, three rotors with the alphabet, one blank. A version of the scrolling plug board wrapped in a parent container. A gray box labeled &quot;Input&quot;. Multi-colored wires connect the various components in a chaotic mess.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I don’t even know what I was going for here. Basically from the bottom to the top (notoriously the way people navigate websites 🙄), you’ve got the input, a scrolling plugboard, the rotors with a loopback, and the read-only output. This is bad and has no redeeming qualities. Moving on.&lt;/p&gt;
&lt;figure role=&quot;figure&quot; aria-label=&quot;A slightly refined version of the last concept. an angular black wire runs through the various components, following the path of electricity that would run through an actual Enigma machine.&quot; class=&quot;md-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./assets/4_wireflow.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption&gt;A slightly refined version of the last concept. an angular black wire runs through the various components, following the path of electricity that would run through an actual Enigma machine.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Knowing that a layout with THAT many wires and what a stupid problem doing virtual cable management would be, I started on a version that used the actual Enigma machine’s path of electricity, going from the input, through the plugboard and back again, to the rotors with a loopback, then to…I’m not sure, actually.&lt;/p&gt;
&lt;p&gt;Note the inner shadows here. At this point, the plan was to have each section start collapsed and you could tap each box to expand it along with an explainer on that particular piece (e.g. “These are the rotors and it blah blah blah. Try rotating the first one 3 positions down”). I think the takeaway here is that I cannot, for the life of me, estimate how long stuff will take and I create way more work for myself than needed.&lt;/p&gt;
&lt;figure role=&quot;figure&quot; aria-label=&quot;Similar to the wire run version but in a tablet layout. The wire track is shaped like a penis.&quot; class=&quot;md-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./assets/6_peen.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption&gt;Similar to the wire run version but in a tablet layout. The wire track is shaped like a penis.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Started designing a tablet layout. Accidentally made a penis. &lt;a href=&quot;https://www.youtube.com/watch?v=v3utj4sbdGU&quot;&gt;Bon appétit (sfw)&lt;/a&gt;.&lt;/p&gt;
&lt;figure role=&quot;figure&quot; aria-label=&quot;More phone sized concepts. It&amp;#x27;s slightly less phallic but not by a huge margin.&quot; class=&quot;md-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./assets/7_sidebyside.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption&gt;More phone sized concepts. It&apos;s slightly less phallic but not by a huge margin.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The problem I kept running into here, aside from it still being sorta phallic, is that I was running in circles. I was getting slightly irked at how little progress I was making on this silly weekend project. I started mapping out how the rotors should work, I was redrawing a mechanical flowchart thing, nothing seemed quite right. So I make the decision to dumb it down and begin doing the fun part of visual design.&lt;/p&gt;
&lt;figure role=&quot;figure&quot; aria-label=&quot;A diagonal layout grid. A muted color palette of red, black, and white. A skeleton layout of various components with a dotted line connecting them. A podcast&amp;#x27;s cover art with the style I&amp;#x27;m trying to channel for inspiration.&quot; class=&quot;md-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./assets/8_visual.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption&gt;A diagonal layout grid. A muted color palette of red, black, and white. A skeleton layout of various components with a dotted line connecting them. A podcast&apos;s cover art with the style I&apos;m trying to channel for inspiration.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;This is the closest I’ve ever gotten to feeling good about a design on this project. All I had to do was get rid of absolutely everything. I scrapped the idea of reflecting data back through a separate track before going to the output. I removed even more detail when I got to adding back the various components.&lt;/p&gt;
&lt;figure role=&quot;figure&quot; aria-label=&quot;The skeleton from the last figure with the actual Enigma components. There are two versions of this, one with dotted wires and another without.&quot; class=&quot;md-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./assets/9_visual2x2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption&gt;The skeleton from the last figure with the actual Enigma components. There are two versions of this, one with dotted wires and another without.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;After refining the wiring even more to just a single track with no loopbacks, I felt like it was in a good place. For good measure, I added an additional view of the different steps the message went through to get the encoded output. As an aside, information on typewriter keycap fonts are surprisingly sparse. Tons of blogs dedicated to the actual monospaced typefaces in various 20th century typewriters but almost nothing about the keycap fonts. The steps would act like a subway map, each letter could be expanded for the “stops” it took on its journey through the machine.&lt;/p&gt;
&lt;h3 id=&quot;day-2&quot;&gt;Day 2&lt;/h3&gt;
&lt;p&gt;Clarity strikes and I have no motivation to build an entire Enigma machine simulator, so I scale back the project to a simpler message encoder that offsets the message by any arbitrary number of positions, or a Caesar Shift encryptor. The most popular type of Caesar Shift is ROT-13, which rotates the input message by 13 spots (“XYZABC” becomes “KLMNOP”).&lt;/p&gt;
&lt;p&gt;I already had a rough mockup of the layout in my head, so it was just a matter of designing and building it.&lt;/p&gt;
&lt;figure role=&quot;figure&quot; aria-label=&quot;Color, typeface, and element explorations for the Caesar Shift utility.&quot; class=&quot;md-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./assets/10_caesar.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption&gt;Color, typeface, and element explorations for the Caesar Shift utility.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;A hand-paper-cut font was imperative in nailing the art style I was going for. I used &lt;a href=&quot;https://www.are.na/sam-henri-gold/stark-typography&quot;&gt;another Are.na channel&lt;/a&gt; to compare all the candidates I had in mind. Ultimately, &lt;a href=&quot;https://dribbble.com/shots/998841-Poster-Cut-Free-Font&quot;&gt;Poster Cut&lt;/a&gt; by Adam Ladd prevailed as the best for the job.&lt;/p&gt;
&lt;p&gt;After messing around with various red construction paper textures, I began building out the actual web app using Svelte, which I’ve found more fun than React while staying (somewhat) lightweight. I’ve written far too many words at this point so I won’t go into too much depth about the actual development process. You can find the &lt;a href=&quot;https://github.com/samhenrigold/shifty&quot;&gt;source code here&lt;/a&gt; if you’re interested.&lt;/p&gt;
&lt;p&gt;I will, however, point out a few things I’m proud of in the final product:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;How the output changes as you scroll, not just when you pause&lt;/li&gt;
&lt;li&gt;Using an SVG on the red ribbon let me do a paper-cut effect on the edges so when you swipe through, the jagged edges jitter around a little bit.&lt;/li&gt;
&lt;li&gt;Since the input/output &lt;code&gt;&amp;#x3C;textarea&gt;&lt;/code&gt; elements are static, I could afford to use a polygonal CSS &lt;code&gt;clip-path&lt;/code&gt; on them.&lt;/li&gt;
&lt;li&gt;I had no idea there was a &lt;code&gt;caret-color&lt;/code&gt; CSS property, so I set that as the red accent color.&lt;/li&gt;
&lt;li&gt;There’s a really faint letterpress effect on the &lt;code&gt;&amp;#x3C;textarea&gt;&lt;/code&gt; elements. The background uses a cotton paper texture and text has a faint drop shadow that goes straight up to give it a debossed look.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;in-summation-and-in-short&quot;&gt;In summation and in short&lt;/h3&gt;
&lt;p&gt;If you’re going to attempt an Enigma machine explainer website, might I suggest not doing that? It’s a tremendous pain in the ass.&lt;/p&gt;</content:encoded></item><item><title>~/Documents/Tomfoolery</title><link>https://samhenri.gold/blog/20220118-tomfoolery/</link><guid isPermaLink="true">https://samhenri.gold/blog/20220118-tomfoolery/</guid><description>Navigating my first year of web development</description><pubDate>Fri, 14 Jan 2022 00:00:00 GMT</pubDate></item><item><title>Repeal &amp; Replace the National Anthem with Boom Boom Pow</title><link>https://samhenri.gold/blog/20211110-star-spangled-boom/</link><guid isPermaLink="true">https://samhenri.gold/blog/20211110-star-spangled-boom/</guid><description>A humble proposal.</description><pubDate>Wed, 10 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I dislike the Star Spangled Banner immensely. Among other reasons, I have a serious problem with this joke of a song because my fourth grade music teacher made us sing it at the elementary school graduation ceremony for the fifth graders. What gave them the idea fifth graders deserved to be serenaded by members of a lower class? The Board of Education will be receiving a copy of this complaint letter.&lt;/p&gt;
&lt;p&gt;Allow me to break down the specific gripes I have with the song compared to an objectively better song, 2009’s modern-classic Boom Boom Pow by America’s number one (by default) electronic-R&amp;#x26;B-pop fusion group, The Black Eyed Peas.&lt;/p&gt;
&lt;h2 id=&quot;star-spangled-banner&quot;&gt;Star Spangled Banner&lt;/h2&gt;
&lt;h3 id=&quot;composition&quot;&gt;Composition&lt;/h3&gt;
&lt;p&gt;The melody spans a baker’s dozen octaves in the first few lines. I exaggerate only slightly; try to hum the first three lines and see if you don’t have to re-adjust the key you started humming when you hit that first “by” or the “through” on line three.&lt;/p&gt;
&lt;p&gt;This corroborates my theory the melody was created by someone who was recently dumped by a choir member and they held a grudge against all choirs.&lt;/p&gt;
&lt;h3 id=&quot;lyrics&quot;&gt;Lyrics&lt;/h3&gt;
&lt;p&gt;The Star Spangled Banner’s lyrics are convoluted as fuck. They were written in 1814 by Francis Scott Key, who probably had horse teeth dentures. Stanky ass. Look at this baloney:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;O say can you see, by the dawn’s early light,&lt;br&gt;
What so proudly we hailed at the twilight’s last gleaming,&lt;br&gt;
Whose broad stripes and bright stars through the perilous fight,&lt;br&gt;
O’er the ramparts we watched, were so gallantly streaming?&lt;br&gt;
And the rocket’s red glare, the bombs bursting in air,&lt;br&gt;
Gave proof through the night that our flag was still there;&lt;br&gt;
O say does that star-spangled banner yet wave&lt;br&gt;
O’er the land of the free and the home of the brave?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A few notes for Mr. Key:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;“Rocket’s red glare” my ass. You mean these &lt;a href=&quot;https://web.archive.org/web/20211028195831im_/https://thumbs-prod.si-cdn.com/2Fh96DbGiayVL_7WmKOZpNK4Y8Y=/fit-in/1072x0/https://public-media.si-cdn.com/filer/81/29/812992de-e455-4077-8c3b-c875b16f65ab/16g_sep2014_2007-14688.jpg&quot;&gt;soup cans on a stick&lt;/a&gt;? You were lucky the British didn’t bring a trebuchet and pancaked your militia of paupers to kingdom come.&lt;/li&gt;
&lt;li&gt;I was gonna make not knowing what a rampart is but I lost interest. It’s a terrible line. It’s a wall. A rampart is a wall. You knew what you were doing. I bet you said “present” in roll call when everyone else said “here”.&lt;/li&gt;
&lt;li&gt;STOP. SAYING. O’ER. THERE IS NARY A BITCH WHO SAYS O’ER.&lt;/li&gt;
&lt;li&gt;Why were you shocked that nobody touched the flag overnight? The British were able to draw clear boundaries around work hours. They weren’t going to take the flag down at 3AM to own some star spangled dipshits.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Is it any wonder why, on multiple occasions, a &lt;a href=&quot;https://www.youtube.com/watch?v=9ZcN04U-gM4&quot;&gt;singer&lt;/a&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=CMA2iF6RuXk&quot;&gt;has&lt;/a&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=m9QDqAsAKUI&quot;&gt;forgotten&lt;/a&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=5NRtv4BHsYE&quot;&gt;the&lt;/a&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=Wl-rnPm7hOk&quot;&gt;lyrics&lt;/a&gt;? You couldn’t pay me enough to remember the line “broad stripes and bright stars through the perilous fight”.&lt;/p&gt;
&lt;iframe width=&quot;100%&quot; height=&quot;auto&quot; class=&quot;aspect-video&quot; src=&quot;https://www.youtube.com/embed/Wl-rnPm7hOk?si=bIR--3vo_E6VtYTC&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2 id=&quot;boom-boom-pow&quot;&gt;Boom Boom Pow&lt;/h2&gt;
&lt;p&gt;Since Boom Boom Pow was released in 2009, it has sold six million copies in the US alone. We do not know how many copies the Star Spangled Banner has sold because the cowards at the US Department of Shitty Music are &lt;a href=&quot;https://www.theatlantic.com/entertainment/archive/2016/02/netflix-ratings/462447/&quot;&gt;pulling a Netflix&lt;/a&gt; and won’t release the numbers.&lt;/p&gt;
&lt;h3 id=&quot;composition-1&quot;&gt;Composition&lt;/h3&gt;
&lt;p&gt;It’s fun. It’s a very fun song. The beat is influenced by 80s electro music and the &lt;a href=&quot;#lyrics&quot;&gt;lyrics&lt;/a&gt; acknowledge how fun and funky it is. It’s littered with pitch correction artifacts and electronic clicks and buzzes, it’s like a washing machine’s fever dream. I love it. And the entire melody falls within “grunt range” where you can grunt-hum the entire melody like a caveman and still be pitch perfect. That’s the innovation I’ve come to expect from William (a.k.a Will.i.am).&lt;/p&gt;
&lt;h3 id=&quot;lyrics-1&quot;&gt;Lyrics&lt;/h3&gt;
&lt;p&gt;If you only have space to remember four words per song, you can still get by. “Gotta get that” and “Boom” are the only words in the chorus. If you decide to go further and learn the entire song (like I have), you will be blessed with some extraordinary lyrics.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“I’m so three thousand and eight
You so two thousand and late”&lt;/p&gt;
&lt;p&gt;“Y’all stuck on super 8-shit
That lo-fi’s stupid 8-bit
I’m on that HD flat
This beat go boom boom pat”&lt;/p&gt;
&lt;p&gt;“Here we go, here we go, satellite radio
Y’all gettin’ hit with the (boom boom)
Beat’s so big, I’m steppin’ on leprechauns
Shittin’ on y’all with the (boom boom)
Shittin’ on y’all with the (boom boom)
Shittin’ on y’all with the…&lt;/p&gt;
&lt;p&gt;This beat be bumpin’ bumpin’
This beat go boom boom”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Absolute perfection, no notes. I would’ve been proud to sing this at an elementary school graduation.&lt;/p&gt;
&lt;h2 id=&quot;patriotism&quot;&gt;Patriotism&lt;/h2&gt;
&lt;p&gt;Francis Scott Key &lt;a href=&quot;https://www.cnn.com/2016/08/31/opinions/star-spangled-banner-criticisms-opinion-clague/index.html&quot;&gt;owned seven slaves&lt;/a&gt;. Will.i.am does not nor has ever owned slaves. This is an easy win for The Black Eyed Peas.&lt;/p&gt;
&lt;p&gt;If that’s not enough for you, look no further than the very titles of each song. “Star Spangled Banner” First of all it’s a flag sweetie, get it right. “Boom Boom Boom” on the other hand is about fireworks on the July 4. “Gotta get that” lies betwixt each set “boom boom boom”s and references our duty as Americans to “get that” taxation with representation, a clear foreshadowing of the unjust taxation of DC residents and Puerto Ricans.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;So why am I so pissed about this? A lot of people have been asking me if Boom Boom Pow copied the Star Spangled Banner and frankly I’m getting sick and tired of it. As I’ve discussed – in great detail – Boom Boom Pow is awesome sauce and the Star Spangled Banner is not le epic. It bewilders me why not-my-president Biden has not repealed and replaced the national anthem at this point. Making Boom Boom Pow the anthem is an easy, bipartisan slam-dunk that is the first real step we can take to mend the ever-widening divide in our country.&lt;/p&gt;</content:encoded></item><item><title>Live, Laugh, Localhost</title><link>https://samhenri.gold/blog/20210803-localhost/</link><guid isPermaLink="true">https://samhenri.gold/blog/20210803-localhost/</guid><description>How switching to Localhost saved me tens of millions of dollars</description><pubDate>Tue, 03 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Xfinity. Netlify. GodAddy. All of these companies (possibly millions of other Big Web conglomerates) are conspiring to suppress the most important web technology of our lifetime: localhost.&lt;/p&gt;
&lt;p&gt;As a Sagittarius and a web developer, Localhost has well and truly defied my expectations of how the web even &lt;strong&gt;works&lt;/strong&gt;. Typically, websites are served through HTTP (Hypertext Transfer Portal) or HTTPS (Hypertext Transfer Portal Syberspace). Not Localhost, though.&lt;/p&gt;
&lt;p&gt;Localhost is a web hosting service operated by (presumably) the people behind the internet, &lt;a href=&quot;https://medium.com/cool-code-pal/a-call-for-web-developers-to-deprecate-their-css-1f6430781393#:~:text=group%20of%20people%20at%20W3Schools&quot;&gt;W3Schools&lt;/a&gt;. In short, they know the web. They’ve been working with it for years, if not decades. They’ve put that experience to use with localhost, which loads any site I throw at it instantly, regardless of my connection.&lt;/p&gt;
&lt;p&gt;In fact, the only limitations I’ve run into have been:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;my computer’s ability to compile and run Java’s Script (JS), Java’s Script Xtreme (JSX), or Tava’s Script (TS) code, and&lt;/li&gt;
&lt;li&gt;getting localhost sites that load perfectly fine on my computer to load on other devices. I’m chalking that up to browser support, though.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Other than those two hiccups, I swear, it’s like magic.&lt;/p&gt;
&lt;p&gt;Why does this matter? Thank you for asking. Contrary to popular belief, there are &lt;strong&gt;many&lt;/strong&gt; areas of the world, some of which lack access to broadband. In the industry, we call those places “Rural.” By using localhost, the lowly web developer is able to circumvent those broadband constraints by delivering your Web Xperience directly to the client.&lt;/p&gt;
&lt;p&gt;To simulate a poor internet connection in one of these rural broadband deserts, I brought my laptop outside to my estate’s dust field and loaded a test page hosted on my Netlify site. It was sluggish, I couldn’t see my screen, and my laptop even suggested I had “network connectivity issues!” The audacity. Loading the same website through localhost, however, was immediate.&lt;/p&gt;
&lt;p&gt;Frankly, I get why these legacy companies are scared of localhost and are lobbying to hide it from the public. Name a single website you’ve visited that uses localhost! Up until last month, I paid $19/month for Netlify Pro like the doo-doo-ass idiot I was. Now, I’m not so sure there will even &lt;strong&gt;be&lt;/strong&gt; a Netlify once the web dev community finally adopts localhost in production.&lt;/p&gt;</content:encoded></item></channel></rss>