

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	 xmlns:friends="wordpress-plugin-friends:feed-additions:1" 
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>rud.is</title>
	<atom:link href="https://rud.is/b/feed/" rel="self" type="application/rss+xml" />
	<link>https://rud.is/b</link>
	<description>&#34;In God we trust. All others must bring data&#34;</description>
	<lastBuildDate>Sat, 30 Sep 2023 21:45:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://i0.wp.com/rud.is/b/wp-content/uploads/2020/06/cropped-blue-cap-slack.png?fit=32%2C32&#038;ssl=1</url>
	<title>rud.is</title>
	<link>https://rud.is/b</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/><atom:link rel="salmon" href="https://rud.is/b/?salmon=endpoint"/><atom:link rel="http://salmon-protocol.org/ns/salmon-replies" href="https://rud.is/b/?salmon=endpoint"/><atom:link rel="http://salmon-protocol.org/ns/salmon-mention" href="https://rud.is/b/?salmon=endpoint"/><site xmlns="com-wordpress:feed-additions:1">30337681</site>	<item>
		<title>Avoid libwebp Electron Woes On macOS With positron</title>
		<link>https://rud.is/b/2023/09/30/avoid-libwebp-electron-woes-on-macos-with-positron/</link>
					<comments>https://rud.is/b/2023/09/30/avoid-libwebp-electron-woes-on-macos-with-positron/#respond</comments>
		
		<dc:creator><![CDATA[hrbrmstr]]></dc:creator>
		<pubDate>Sat, 30 Sep 2023 21:45:55 +0000</pubDate>
				<category><![CDATA[Cybersecurity]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[Information Security]]></category>
		<category><![CDATA[macOS]]></category>
		<guid isPermaLink="false">https://rud.is/b/?p=14475</guid>

					<description><![CDATA[If you&#8217;ve got 👀 on this blog (directly, or via syndication) you&#8217;d have to have been living under a rock to not know about the libwebp supply chain disaster. An unfortunate casualty of inept programming just happened to be any app in the Electron ecosystem that doesn&#8217;t undergo bleeding-edge updates. Former cow-orker Tom Sellers (one... <a class="more-link" href="https://rud.is/b/2023/09/30/avoid-libwebp-electron-woes-on-macos-with-positron/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>If you&#8217;ve got <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f440.png" alt="👀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> on this blog (directly, or via syndication) you&#8217;d have to have been living under a rock to not know about the <a href="https://arstechnica.com/security/2023/09/incomplete-disclosures-by-apple-and-google-create-huge-blindspot-for-0-day-hunters/">libwebp supply chain disaster</a>. An unfortunate casualty of inept programming just happened to be any app in the Electron ecosystem that doesn&#8217;t undergo bleeding-edge updates.</p>
<p>Former cow-orker Tom Sellers (one of the best humans in cyber) did a great service to the macOS user community with tips on <a href="https://infosec.exchange/@TomSellers/111126352647377681">how to stay safe on macOS</a>. His <code>find</code> + <code>strings</code> + <code>grep</code> combo was superbly helpful and I hope many macOS users did the command line dance to see how negligent their app providers were/are.</p>
<p>But, you still have to know what versions are OK and which ones are not to do that dance. And, having had yet-another immune system invasion (thankfully, not COVID, again) on top of still working through long COVID (<code>#protip</code>: you may be over the pandemic, but I guarantee it&#8217;s not done with you/us for a while) which re-sapped mobility energy, I put my sedentary time to less woesome use by hacking together a small, Golang macOS CLI to help ferret out bad Electron-based apps you may have installed.</p>
<p>I named it <a href="https://gitlab.com/hrbrmstr/positron">positron</a>, since that&#8217;s kind of the opposite of Electron, and I was pretty creativity-challenged today.</p>
<p>It does virtually the same thing as Tom&#8217;s <code>strings</code> and <code>grep</code> does, just in a single, lightweight, universal, signed macOS binary.</p>
<p>When I ran it after the final build, all my Electron-based apps were <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f534.png" alt="🔴" class="wp-smiley" style="height: 1em; max-height: 1em;" />. After deleting some, and updating others, this is my current status:</p>
<pre><code class="language-bash">$ find /Applications -type f -name "*Electron Framework*" -exec ./positron "{}" \;
/Applications/Signal.app: Chrome/114.0.5735.289 Electron/25.8.4 &#x1f7e2;
/Applications/Keybase.app: Chrome/87.0.4280.141 Electron/11.5.0 &#x1f534;
/Applications/Raindrop.io.app: Chrome/102.0.5005.167 Electron/19.0.17 &#x1f534;
/Applications/1Password.app: Chrome/114.0.5735.289 Electron/25.8.1 &#x1f7e2;
/Applications/Replit.app: Chrome/116.0.5845.188 Electron/26.2.1 &#x1f7e2;
/Applications/lghub.app: Chrome/104.0.5112.65 Electron/20.0.0 &#x1f534;
</code></pre>
<p>It&#8217;s still on <em>you</em> to do the <code>find</code> (cooler folks run <code>fd</code>) since I&#8217;m not about to write a program that&#8217;ll rummage across your SSDs or disc drives, but it does all the MachO inspection internally, and then also does the SemVer comparison to let you know which apps still suck at keeping you safe.</p>
<p>FWIW, the Keybase folks did accept a PR for the libwebp thing, but darned if I will spend any time building it (I don&#8217;t run it anymore, anyway, so I should just delete it).</p>
<p>The aforementioned signed, universal, macOS binary is in the GitLab releases.</p>
<p>Stay safe out there!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rud.is/b/2023/09/30/avoid-libwebp-electron-woes-on-macos-with-positron/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<friends:post-format>standard</friends:post-format>
<post-id xmlns="com-wordpress:feed-additions:1">14475</post-id>	</item>
		<item>
		<title>Tracking Rite-Aid Store Closures</title>
		<link>https://rud.is/b/2023/09/23/tracking-rite-aid-store-closures/</link>
					<comments>https://rud.is/b/2023/09/23/tracking-rite-aid-store-closures/#comments</comments>
		
		<dc:creator><![CDATA[hrbrmstr]]></dc:creator>
		<pubDate>Sat, 23 Sep 2023 23:27:46 +0000</pubDate>
				<category><![CDATA[R]]></category>
		<guid isPermaLink="false">https://rud.is/b/?p=14440</guid>

					<description><![CDATA[Rite-Aid closed 60+ stores in 2021. They said they&#8217;d nuke over 1,000 of them over three years, back in 2022. And, they&#8217;re now about to close ~500 due to bankruptcy. FWIW Heyward Donigan, Former President and CEO — in 2023 — took home $1,043,713 in cash, $7,106,993 in equity, and $617,105 in &#8220;other&#8221; (total $8,767,811)... <a class="more-link" href="https://rud.is/b/2023/09/23/tracking-rite-aid-store-closures/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Rite-Aid <a href="https://www.cnn.com/2021/12/21/business/rite-aid-store-closures/index.html">closed 60+ stores in 2021</a>. They said they&#8217;d nuke over 1,000 of them over three years, back in 2022. And, they&#8217;re now about to <a href="https://www.silive.com/news/2023/09/rite-aid-could-close-up-to-500-stores-report-says-could-staten-islands-locations-be-shuttered.html">close ~500 due to bankruptcy</a>.</p>
<blockquote><p>
  FWIW Heyward Donigan, Former President and CEO — in 2023 — took home $1,043,713 in cash, $7,106,993 in equity, and $617,105 in &#8220;other&#8221; (total $8,767,811) for this fine, bankrupt leadership. <a href="https://www1.salary.com/RITE-AID-CORP-Executive-Salaries.html">Lots of other got lots too for being incompetent</a>.
</p></blockquote>
<p>Rite-Aid is under no obligation to provide a list to the public, nor to do any overt announcements regarding the closures.</p>
<p>Each closure has the potential to create or exacerbate food and pharmacy deserts in many regions.</p>
<p>You can get individual stores (like <a href="https://www.riteaid.com/locations/wa/tacoma/7041-pacific-avenue.html">this one</a>), but there&#8217;s over 2,100 of them, so doing this manually is a non-starter.</p>
<p>Thus, I <a href="https://gitlab.com/hrbrmstr/rite-aid">threw together a couple of R and bash scripts</a> to help real data journalists out, in the event any of them can pry themselves away from the POTUS horse race.</p>
<p>One R script is to get the individual store URLs. The bash script is used to polittely get all 2,100+ store pages (I have a script I just re-use for things like this). The other R script is used to get the JSON that&#8217;s tucked away in the HTML files to get the store info, which includes latitude, longitude, store number, and address (there is more data in there, I just pulled those fields).</p>
<p>The map at the top of the post is just there for kicks.</p>
<p>The repo is also mirrored to my GitHub (sub out &#8216;hub&#8217; for &#8216;lab&#8217; in the URL) if you really need to bow down to Microsoft.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rud.is/b/2023/09/23/tracking-rite-aid-store-closures/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<friends:post-format>standard</friends:post-format>
<post-id xmlns="com-wordpress:feed-additions:1">14440</post-id>	</item>
		<item>
		<title>Foliage 2023</title>
		<link>https://rud.is/b/2023/09/09/foliage-2023/</link>
					<comments>https://rud.is/b/2023/09/09/foliage-2023/#comments</comments>
		
		<dc:creator><![CDATA[hrbrmstr]]></dc:creator>
		<pubDate>Sat, 09 Sep 2023 11:45:12 +0000</pubDate>
				<category><![CDATA[data wrangling]]></category>
		<category><![CDATA[DataVis]]></category>
		<category><![CDATA[DataViz]]></category>
		<category><![CDATA[ggplot]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Observable]]></category>
		<guid isPermaLink="false">https://rud.is/b/?p=14337</guid>

					<description><![CDATA[2023-09-10 UPDATE: Art Steinmetz took me up on the Shiny challenge (at the end of the post) and did a fantastic job! The days are getting shorter and when we were visiting Down East Maine the other week, there was just a hint of some trees starting to change up their leaf palettes. It was... <a class="more-link" href="https://rud.is/b/2023/09/09/foliage-2023/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<ul>
<li>2023-09-10 UPDATE: <a href="https://fosstodon.org/@adababbage#.">Art Steinmetz</a> took me up on the Shiny challenge (at the end of the post) and <a href="https://viztoy.shinyapps.io/foliage/">did a fantastic job</a>!</li>
</ul>
<p>The days are getting shorter and when we were visiting Down East Maine the other week, there was just a hint of some trees starting to change up their leaf palettes. It was a solid reminder to re-up my ~annual “foliage” plotting that I started way back in 2017.</p>
<p>The fine folks over at <a href="https://smokymountains.com/fall-foliage-map/">Smoky Mountains</a> — (<em>“the most authoritative source for restaurants, attractions, &amp; cabin rentals in the Smoky Mountains”</em>) — have been posting an interactive map of ConUS foliage predictions for many years and the dataset they curate and use for that is also very easy to use in R and other contexts.</p>
<p>This year, along with the usual <a href="https://github.com/hrbrmstr/foliage/blob/master/r-foliage/foliage-2023.R">R version</a>, I have also made:</p>
<ul>
<li>an <a href="https://observablehq.com/@hrbrmstr/conus-foliage-2023">Observable Notebook</a> version, using data wrangled from the R version</li>
<li>a <a href="https://github.com/hrbrmstr/foliage/tree/master/conus-foliage-2023">Quarto project</a> version (see it rendered, <a href="https://hrbrmstr.github.io/foliage/conus-foliage-2023.html">here</a>) that was made almost solely using my <a href="https://github.com/hrbrmstr/reveal-qmd">Reveal QMD Chrome Extension</a>, which turns Observable notebooks into QMD projects with one click</li>
<li>and a <a href="https://rud.is/foliage-lit-plot/">LitElement + Observable Plot + Tachyons CSS + Vanilla JS</a> version (see it live, <a href="https://rud.is/foliage-lit-plot/">here</a>)</li>
</ul>
<p>The only real changes to R version were to add <a href="https://github.com/hrbrmstr/foliage/blob/c63ed05c8429fb52b0d5c87c5bf36991207a027d/r-foliage/foliage-2023.R#L80-L102">some code</a> to make a more usable JSON for the JavaScript versions of the project, and to take advantage of the <code>.progress</code> parameter to {purrr}&#8217;s <a href="https://github.com/hrbrmstr/foliage/blob/c63ed05c8429fb52b0d5c87c5bf36991207a027d/r-foliage/foliage-2023.R#L158">walk</a> function.</p>
<p><a href="https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?ssl=1"><img decoding="async" fetchpriority="high" data-attachment-id="14354" data-permalink="https://rud.is/b/2023/09/09/foliage-2023/observable-frame/" data-orig-file="https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?fit=1856%2C1238&amp;ssl=1" data-orig-size="1856,1238" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="observable-frame" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?fit=300%2C200&amp;ssl=1" data-large-file="https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?fit=530%2C354&amp;ssl=1" src="https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?resize=780%2C520&#038;ssl=1" alt="" width="780" height="520" class="aligncenter size-full wp-image-14354" srcset="https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?w=1856&amp;ssl=1 1856w, https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?resize=300%2C200&amp;ssl=1 300w, https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?resize=530%2C354&amp;ssl=1 530w, https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?resize=150%2C100&amp;ssl=1 150w, https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?resize=768%2C512&amp;ssl=1 768w, https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?resize=1536%2C1025&amp;ssl=1 1536w, https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?resize=500%2C334&amp;ssl=1 500w, https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?resize=1200%2C800&amp;ssl=1 1200w, https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?resize=400%2C267&amp;ssl=1 400w, https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?resize=800%2C534&amp;ssl=1 800w, https://i0.wp.com/rud.is/b/wp-content/uploads/2023/09/observable-frame.png?resize=200%2C133&amp;ssl=1 200w" sizes="(max-width: 780px) 100vw, 780px" data-recalc-dims="1" /></a></p>
<p>The Observable notebook version (one frame of that is above) makes use of Observable Plot&#8217;s super handy <a href="https://observablehq.com/plot/marks/geo#geo-mark">geo mark</a>, and also shows how to do some <a href="https://observablehq.com/@hrbrmstr/conus-foliage-2023#states48">shapefile surgery</a> to avoid plotting Alaska &amp; Hawaii (the Smoky Mountains folks only provide predictions for ConUS).</p>
<p>After using the Reveal QMD extension to make the Quarto project, the <code>qmd</code> document rendered fine, but I tweaked the YAML to send the output to the GH Pages-renderable <code>docs/</code> directory, and combined some of the OJS blocks to tighten up the document. You&#8217;ll see some Quarto “error” blocks, briefly, since there the QMD fetches imports from Observable. You can get around that by moving all the imported resources to the Observable notebook before generating the QMD, but that&#8217;s an exercise left to the reader.</p>
<p>And, since I&#8217;m a fan of both <a href="https://lit.dev">Lit WebComponents</a> and <a href="https://tachyons.io/">Tachyons CSS</a>, I threw together a version using them (+ Observable Plot) to further encourage folks to get increasingly familiar with core web tech. Tachyons + Plot make it pretty straightforward to create responsive pages, too (resize the browser and toggle system dark/light mode to prove that). The Lit element&#8217;s CSS section also shows how to style Plot&#8217;s legend a bit.</p>
<p>Hit up the <a href="https://github.com/hrbrmstr/foliage">GH page</a> to see the animated gif (I&#8217;ve stared at it a bit too much to include it in the post).</p>
<p>Drop any q&#8217;s here or in the GH issues, and — if anyone makes a Shiny version —  please let me know, and I&#8217;ll add all links to any of those here and on the GH page.</p>
<h3>FIN</h3>
<p>While it is all well and good to plot foliage prediction maps, please also remember to take some time away from your glowing rectangles to go and actually <em>observe</em> the fall palette changes IRL.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rud.is/b/2023/09/09/foliage-2023/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<friends:post-format>standard</friends:post-format>
<post-id xmlns="com-wordpress:feed-additions:1">14337</post-id>	</item>
	</channel>
</rss>
