<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Barbara Tozier</title>
<link>https://www.barbaratozier.com/posts.html</link>
<atom:link href="https://www.barbaratozier.com/posts.xml" rel="self" type="application/rss+xml"/>
<description>Personal website and blog</description>
<image>
<url>https://www.barbaratozier.com/assets/messy-bee.jpg</url>
<title>Barbara Tozier</title>
<link>https://www.barbaratozier.com/posts.html</link>
</image>
<generator>quarto-1.9.36</generator>
<lastBuildDate>Sun, 27 Sep 2026 04:00:00 GMT</lastBuildDate>
<item>
  <title>WESP 2026-09-27</title>
  <link>https://www.barbaratozier.com/posts/260927-wesp-20260927/</link>
  <description><![CDATA[ 

<header id="title-block-header">


<p class="date">2026-09-27</p>
</header>


<p><a href="https://www.npr.org/2026/09/27/g-s1-144718/sunday-puzzle-so-so">This Week’s Puzzle</a></p>
<blockquote class="blockquote">
<p>Name a well-known U.S. geographic location in six letters. Move the last letter two places earlier in the name and you’ll get a regular English word. Say that word out loud. It will sound like a well-known geographic location abroad. What places are these? Here’s a hint: Neither place name is a city.</p>
</blockquote>
<div class="callout callout-style-default callout-puzzle callout-titled">
<div class="callout-header d-flex align-content-center collapsed" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Puzzle</span>My solution
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<p>Denali -&gt; denial -&gt; [Th]e Nile</p>
</div>
</div>
</div>



 ]]></description>
  <category>puzzles</category>
  <guid>https://www.barbaratozier.com/posts/260927-wesp-20260927/</guid>
  <pubDate>Sun, 27 Sep 2026 04:00:00 GMT</pubDate>
  <media:content url="https://www.barbaratozier.com/assets/phs/ph44.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>100 Days of SwiftUI</title>
  <link>https://www.barbaratozier.com/posts/260912-100-days-of-swiftui-day-92/</link>
  <description><![CDATA[ 

<header id="title-block-header">

<p class="subtitle lead"><a href="https://www.hackingwithswift.com/100/swiftui/92">Day 92</a></p>

<p class="date">2026-09-12</p>
</header>


<section id="project-18-part-1" class="level2">
<h2 class="anchored" data-anchor-id="project-18-part-1">Project 18, part 1</h2>
<p>Layout and geometry</p>
<section id="how-layout-works-in-swiftui" class="level3">
<h3 class="anchored" data-anchor-id="how-layout-works-in-swiftui">How layout works in SwiftUI</h3>
</section>
<section id="alignment-and-alignment-guides" class="level3">
<h3 class="anchored" data-anchor-id="alignment-and-alignment-guides">Alignment and alignment guides</h3>
</section>
<section id="how-to-create-a-custom-alignment-guide" class="level3">
<h3 class="anchored" data-anchor-id="how-to-create-a-custom-alignment-guide">How to create a custom alignment guide</h3>
</section>
<section id="absolute-positioning-for-swiftui-views" class="level3">
<h3 class="anchored" data-anchor-id="absolute-positioning-for-swiftui-views">Absolute positioning for SwiftUI views</h3>


</section>
</section>

 ]]></description>
  <category>100 days</category>
  <category>SwiftUI</category>
  <guid>https://www.barbaratozier.com/posts/260912-100-days-of-swiftui-day-92/</guid>
  <pubDate>Sat, 12 Sep 2026 04:00:00 GMT</pubDate>
  <media:content url="https://www.barbaratozier.com/posts/260912-100-days-of-swiftui-day-92/Day92.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>100 Days of SwiftUI</title>
  <link>https://www.barbaratozier.com/posts/260830-100-days-of-swiftui-day-91/</link>
  <description><![CDATA[ 

<header id="title-block-header">

<p class="subtitle lead"><a href="https://www.hackingwithswift.com/100/swiftui/91">Day 91</a></p>

<p class="date">2026-08-30</p>
</header>


<section id="project-17-part-6" class="level2">
<h2 class="anchored" data-anchor-id="project-17-part-6">Project 17, part 6</h2>
<p>Flashzilla: Wrap up</p>
<p><strong>Quiz:</strong> 11/12</p>
</section>
<section id="challenge" class="level2">
<h2 class="anchored" data-anchor-id="challenge">Challenge</h2>
<blockquote class="blockquote">
<ol type="1">
<li>When adding a card, the text fields keep their current text. Fix that so that the textfields clear themselves after a card is added.</li>
<li>If you drag a card to the right but not far enough to remove it, then release, you see it turn red as it slides back to the center. Why does this happen and how can you fix it? (Tip: think about the way we set offset back to 0 immediately, even though the card hasn’t animated yet. You might solve this with a ternary within a ternary, but a custom modifier will be cleaner.)</li>
<li>For a harder challenge: when the users gets an answer wrong, add that card back into the array so the user can try it again. Doing this successfully means rethinking the ForEach loop, because relying on simple integers isn’t enough – your cards need to be uniquely identifiable.</li>
</ol>
<p>Still thirsty for more? Try upgrading our loading and saving code in two ways:</p>
<ol start="4" type="1">
<li>Make it use an alternative approach to saving data, e.g.&nbsp;documents JSON rather than UserDefaults, or SwiftData – this is generally a good idea, so you should get practice with this.</li>
<li>Try to find a way to centralize the loading and saving code for the cards. You might need to experiment a little to find something you like!</li>
</ol>
</blockquote>
<p>My job is really draining my brain, so I’m gonna just stop here with this project.</p>
<p><img src="https://www.barbaratozier.com/posts/260830-100-days-of-swiftui-day-91/brainlowbattery.gif" class="img-fluid" alt="cartoon image of a brain with a battery at low level"><br>
</p>


</section>

 ]]></description>
  <category>100 days</category>
  <category>SwiftUI</category>
  <guid>https://www.barbaratozier.com/posts/260830-100-days-of-swiftui-day-91/</guid>
  <pubDate>Sun, 30 Aug 2026 04:00:00 GMT</pubDate>
  <media:content url="https://www.barbaratozier.com/posts/260830-100-days-of-swiftui-day-91/Day91.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>WESP 2026-08-30</title>
  <link>https://www.barbaratozier.com/posts/260830-wesp-20260830/</link>
  <description><![CDATA[ 

<header id="title-block-header">


<p class="date">2026-08-30</p>
</header>


<p><a href="https://www.npr.org/2026/08/30/g-s1-140500/sunday-puzzle-thing-from-thing">This Week’s Puzzle</a></p>
<blockquote class="blockquote">
<p>Think of a state capital and say it out loud. Change one vowel sound in it to name something many schoolkids study. What things are these?</p>
</blockquote>
<div class="callout callout-style-default callout-puzzle callout-titled">
<div class="callout-header d-flex align-content-center collapsed" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Puzzle</span>My solution
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<p>Phoenix -&gt; physics</p>
</div>
</div>
</div>



 ]]></description>
  <category>puzzles</category>
  <guid>https://www.barbaratozier.com/posts/260830-wesp-20260830/</guid>
  <pubDate>Sun, 30 Aug 2026 04:00:00 GMT</pubDate>
  <media:content url="https://www.barbaratozier.com/assets/phs/ph18.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Scenes from the week</title>
  <link>https://www.barbaratozier.com/posts/260823-scenes-from-work/</link>
  <description><![CDATA[ 

<header id="title-block-header">


<p class="date">2026-08-23</p>
</header>


<p>I started a new job recently and I am enjoying it very much. The office is near to my house – about a 30-minute walk so I won’t do it every day (yet), but I did walk home on a nice afternoon this week and saw this nest.</p>
<p><img src="https://www.barbaratozier.com/posts/260823-scenes-from-work/wasps-nest.jpg" class="img-fluid" alt="Bald-faced hornet’s nest">&nbsp;</p>
<p>It’s a <a href="https://en.wikipedia.org/wiki/Dolichovespula_maculata">bald-faced hornet’s nest</a> which I am informed isn’t a hornet but a type of yellowjacket wasp. (I was on the other side of the street!)</p>
<p>The office building is a “Class-A” office space, meaning it’s schmancy. I haven’t worked in such a building for a long time, and never in one that had multiple tenants. I can’t photograph inside the office itself, but here is something I saw the other day…</p>
<p><img src="https://www.barbaratozier.com/posts/260823-scenes-from-work/stairs.jpg" class="img-fluid" alt="Modern steel stairwell next to tall glass wall">&nbsp;</p>
<p>There is <em>always</em> something interesting to photograph 📷</p>



 ]]></description>
  <category>photography</category>
  <category>life</category>
  <guid>https://www.barbaratozier.com/posts/260823-scenes-from-work/</guid>
  <pubDate>Sun, 23 Aug 2026 04:00:00 GMT</pubDate>
  <media:content url="https://www.barbaratozier.com/posts/260823-scenes-from-work/stairs.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>WESP 2026-08-23</title>
  <link>https://www.barbaratozier.com/posts/260823-wesp-20260823/</link>
  <description><![CDATA[ 

<header id="title-block-header">


<p class="date">2026-08-23</p>
</header>


<p><a href="https://www.npr.org/2026/08/22/g-s1-139397/sunday-puzzle-mbas">This Week’s Puzzle</a></p>
<blockquote class="blockquote">
<p>Spell out the numbers from 13 to 20 – THIRTEEN, FOURTEEN, FIFTEEN, SIXTEEN, SEVENTEEN, EIGHTEEN, NINETEEN, TWENTY. Select one letter from each word, in order, to name another number. No anagramming is necessary. What number is it?</p>
</blockquote>
<div class="callout callout-style-default callout-puzzle callout-titled">
<div class="callout-header d-flex align-content-center collapsed" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Puzzle</span>My solution
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<p>INFINITY</p>
</div>
</div>
</div>



 ]]></description>
  <category>puzzles</category>
  <guid>https://www.barbaratozier.com/posts/260823-wesp-20260823/</guid>
  <pubDate>Sun, 23 Aug 2026 04:00:00 GMT</pubDate>
  <media:content url="https://www.barbaratozier.com/assets/phs/ph43.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>100 Days of SwiftUI</title>
  <link>https://www.barbaratozier.com/posts/260822-100-days-of-swiftui-day-90/</link>
  <description><![CDATA[ 

<header id="title-block-header">

<p class="subtitle lead"><a href="https://www.hackingwithswift.com/100/swiftui/90">Day 90</a></p>

<p class="date">2026-08-22</p>
</header>


<section id="project-17-part-5" class="level2">
<h2 class="anchored" data-anchor-id="project-17-part-5">Project 17, part 5</h2>
<p>More with Flashzilla</p>
<section id="fixing-the-bugs" class="level3">
<h3 class="anchored" data-anchor-id="fixing-the-bugs">Fixing the bugs</h3>
<p>Improving accessibility and UX</p>
</section>
<section id="adding-and-deleting-cards" class="level3">
<h3 class="anchored" data-anchor-id="adding-and-deleting-cards">Adding and deleting cards</h3>
<p>He shows using UserData, but of course we could use SwiftData or something else. I’d probably want to have a way to import questions and answers.</p>
<p>In Swift 6 I got “Call to main actor-isolated initializer ‘init()’ in a synchronous nonisolated context” for the <code>.sheet</code> line.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode swift code-with-copy"><code class="sourceCode swift"><span id="cb1-1"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>sheet<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">(</span>isPresented<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> $showingEditScreen<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> onDismiss<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> resetCards<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> content<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> EditCards<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">init</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">)</span></span></code></pre></div></div>
<p>The fix is to use a closure – which in his example he removed, saying something something <em>syntactic sugar</em>.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode swift code-with-copy"><code class="sourceCode swift"><span id="cb2-1"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>sheet<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">(</span>isPresented<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> $showingEditScreen<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> onDismiss<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> resetCards<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">)</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb2-2">            EditCards<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">()</span></span>
<span id="cb2-3">        <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span></code></pre></div></div>
<p>Apparently Swift 6 went low-sugar for this code.</p>


</section>
</section>

 ]]></description>
  <category>100 days</category>
  <category>SwiftUI</category>
  <guid>https://www.barbaratozier.com/posts/260822-100-days-of-swiftui-day-90/</guid>
  <pubDate>Sat, 22 Aug 2026 04:00:00 GMT</pubDate>
  <media:content url="https://www.barbaratozier.com/posts/260822-100-days-of-swiftui-day-90/Day90.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>100 Days of SwiftUI</title>
  <link>https://www.barbaratozier.com/posts/260811-100-days-of-swiftui-day-89/</link>
  <description><![CDATA[ 

<header id="title-block-header">

<p class="subtitle lead"><a href="https://www.hackingwithswift.com/100/swiftui/89">Day 89</a></p>

<p class="date">2026-08-11</p>
</header>


<section id="project-17-part-4" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="project-17-part-4">Project 17, part 4</h2>
<p>Continuing with Flashzilla</p>
<section id="coloring-views-as-we-swipe" class="level3">
<h3 class="anchored" data-anchor-id="coloring-views-as-we-swipe">Coloring views as we swipe</h3>
<ul>
<li>Swipe right → correct</li>
<li>Swipe left → guessed wrong</li>
<li>take care to consider differentiation without color</li>
</ul>
</section>
<section id="counting-down-with-a-timer" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="counting-down-with-a-timer">Counting down with a Timer</h3>
<div class="page-columns page-full"><p>“Add a little bit of pressure to get the user to speed up” </p><div class="no-row-height column-margin column-container"><span class="margin-aside">I really don’t like timed games</span></div></div>
<p>Detect when the app is moved to the background so the timer doesn’t cheat you out of seconds</p>
</section>
<section id="ending-the-app-with-allowshittesting" class="level3">
<h3 class="anchored" data-anchor-id="ending-the-app-with-allowshittesting">Ending the app with <code>allowsHitTesting()</code></h3>
<p>Use to disable swiping cards when the timer runs out</p>


</section>
</section>

 ]]></description>
  <category>100 days</category>
  <category>SwiftUI</category>
  <guid>https://www.barbaratozier.com/posts/260811-100-days-of-swiftui-day-89/</guid>
  <pubDate>Tue, 11 Aug 2026 04:00:00 GMT</pubDate>
  <media:content url="https://www.barbaratozier.com/posts/260811-100-days-of-swiftui-day-89/Day89.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>100 Days of SwiftUI</title>
  <link>https://www.barbaratozier.com/posts/260810-100-days-of-swiftui-day-88/</link>
  <description><![CDATA[ 

<header id="title-block-header">

<p class="subtitle lead"><a href="https://www.hackingwithswift.com/100/swiftui/88">Day 88</a></p>

<p class="date">2026-08-10</p>
</header>


<section id="project-17-part-3" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="project-17-part-3">Project 17, part 3</h2>
<p>More with gestures — starting on the Flashzilla app</p>
<section id="designing-a-single-card-view" class="level3">
<h3 class="anchored" data-anchor-id="designing-a-single-card-view">Designing a single card view</h3>
<ul>
<li>since flash cards are traditionally on 3x5 index cards, we’re going to force landscape mode</li>
</ul>
</section>
<section id="building-a-stack-of-cards" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="building-a-stack-of-cards">Building a stack of cards</h3>
<div class="page-columns page-full"><p>Turtles all the way down <br>
</p><div class="no-row-height column-margin column-container"><span class="margin-aside"><img src="https://www.barbaratozier.com/assets/samo.png" class="img-fluid" alt="samoyed sketch"></span></div></div>
</section>
<section id="moving-views-with-draggesture-and-offset" class="level3">
<h3 class="anchored" data-anchor-id="moving-views-with-draggesture-and-offset">Moving views with <code>DragGesture</code> and <code>offset()</code></h3>
<p>Moving and rotating discussion that sounds a lot like <a href="https://en.wikipedia.org/wiki/RoboRally">RoboRally</a></p>


</section>
</section>

 ]]></description>
  <category>100 days</category>
  <category>SwiftUI</category>
  <guid>https://www.barbaratozier.com/posts/260810-100-days-of-swiftui-day-88/</guid>
  <pubDate>Mon, 10 Aug 2026 04:00:00 GMT</pubDate>
  <media:content url="https://www.barbaratozier.com/posts/260810-100-days-of-swiftui-day-88/Day88.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>100 Days of SwiftUI</title>
  <link>https://www.barbaratozier.com/posts/260809-100-days-of-swiftui-day-87/</link>
  <description><![CDATA[ 

<header id="title-block-header">

<p class="subtitle lead"><a href="https://www.hackingwithswift.com/100/swiftui/87">Day 87</a></p>

<p class="date">2026-08-09</p>
</header>


<section id="project-17-part-2" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="project-17-part-2">Project 17, part 2</h2>
<p>monitoring notifications using Apple’s Combine framework</p>
<section id="triggering-events-repeatedly-using-a-timer" class="level3">
<h3 class="anchored" data-anchor-id="triggering-events-repeatedly-using-a-timer">Triggering events repeatedly using a timer</h3>
<blockquote class="blockquote">
<p>timers can become <em>publishers</em>, which are things that announce when their value changes</p>
</blockquote>
<p>So if your timer publishes every second, then your receiver <code>onReceive()</code> can run something every second until the timer is stopped.</p>
<p>You have to go the “upstream publisher” in order to cancel the connection (if it is an autoconnect)</p>
<p>No guarantee of precise timing</p>
</section>
<section id="how-to-be-notified-when-your-swiftui-app-moves-to-the-background" class="level3">
<h3 class="anchored" data-anchor-id="how-to-be-notified-when-your-swiftui-app-moves-to-the-background">How to be notified when your SwiftUI app moves to the background</h3>
<p><code>@Environment(\.scenePhase)</code></p>
<p>3 scene phases we need to consider — <code>.active</code>, <code>.inactive</code>, <code>.background</code></p>
</section>
<section id="supporting-specific-accessibility-needs-with-swiftui" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="supporting-specific-accessibility-needs-with-swiftui">Supporting specific accessibility needs with SwiftUI</h3>
<div class="page-columns page-full"><p>Using more <code>@Environment</code> variables to see if the user has certain accessibility <br>
</p><div class="no-row-height column-margin column-container"><span class="margin-aside"><img src="https://www.barbaratozier.com/assets/samo.png" class="img-fluid" alt="samoyed sketch"><img src="https://www.barbaratozier.com/assets/samo.png" class="img-fluid" alt="samoyed sketch"></span></div></div>


</section>
</section>

 ]]></description>
  <category>100 days</category>
  <category>SwiftUI</category>
  <guid>https://www.barbaratozier.com/posts/260809-100-days-of-swiftui-day-87/</guid>
  <pubDate>Sun, 09 Aug 2026 04:00:00 GMT</pubDate>
  <media:content url="https://www.barbaratozier.com/posts/260809-100-days-of-swiftui-day-87/Day87.jpg" medium="image" type="image/jpeg"/>
</item>
</channel>
</rss>
