<?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/"
	>

<channel>
	<title>Miscellaneous &#8211; Matthew Petroff</title>
	<atom:link href="https://mpetroff.net/category/miscellaneous/feed/" rel="self" type="application/rss+xml" />
	<link>https://mpetroff.net</link>
	<description>mpetroff.net</description>
	<lastBuildDate>Sun, 30 Mar 2025 23:17:44 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>Building a Kite for Antarctica</title>
		<link>https://mpetroff.net/2025/03/building-a-kite-for-antarctica/</link>
					<comments>https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#respond</comments>
		
		<dc:creator><![CDATA[Matthew Petroff]]></dc:creator>
		<pubDate>Sun, 30 Mar 2025 23:17:44 +0000</pubDate>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[aerial photography]]></category>
		<category><![CDATA[Antarctica]]></category>
		<category><![CDATA[kite]]></category>
		<guid isPermaLink="false">https://mpetroff.net/?p=3904</guid>

					<description><![CDATA[Since the U.S. Antarctic Program prohibits the use of remote-controlled aircraft, i.e., drones, how might one go about taking aerial photographs at the South Pole? The answer is kite aerial photography, which of course requires a kite. While my original &#8230; <a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><span class="dropcap">S</span>ince the U.S. Antarctic Program prohibits the use of remote-controlled aircraft, i.e., drones, how might one go about taking aerial photographs at the South Pole? The answer is kite aerial photography, which of course requires a kite. While my original plan was to buy an off-the-shelf parafoil kite, since they&#8217;re soft kites that can easily be packed in luggage. After attempting to buy an Into the Wind Parafoil 10, which I had determined would probably be a reasonable size for the camera rig I wanted to loft and was recommended in old forum posts for use in kite aerial photography, it turned out to be discontinued,<sup id="rf1-3904"><a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#fn1-3904" title=" It was recommended as a replacement for a similar parafoil kite that had  also been discontinued, two decades ago. " rel="footnote">1</a></sup> and the proprietor of the small business that I had attempted to buy it from suggested that a rigid-frame kite such as a <a href="https://en.wikipedia.org/wiki/Rokkaku_dako">Rokkaku kite</a> might be a better fit for the relatively-low winds at the Pole, since parafoil kites can collapse if there&#8217;s a lull in the wind. I had not previously considered such a kite, since the commercially-available options have spars that do not collapse to a sufficiently-short length to fit in a carry-on suitcase and because I was worried that their carbon- and fiberglass-composite spars may become too brittle in the extreme cold. Although there were other potential parafoil options, I was convinced that a rigid-frame kite could be the better option, since during days with higher wind speeds at the South Pole there&#8217;s often blowing snow and poor visibility. Thus, I set out to build such a kite with components that could survive the cold and that could collapse to &lt;17&#8243; to fit in my luggage.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite00.jpg" title="True South kite flying at the South Pole" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite00-640x427.jpg" alt="A flying navy and white hexagonal kite with a navy and white fuzzy tail with a clear blue sky in the background." width="640" height="427" class="aligncenter size-large wp-image-3930" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite00-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite00-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite00-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite00-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite00-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a><span id="more-3904"></span></p>
<p>Much of the discussions regarding and plans for building kites on the internet are contained within decades-old discussion forums and Geocities-era webpages, many of which are disappearing, although the <a href="https://www.archive.org/">Internet Archive</a> has fortunately preserved many such resources, as has the <a href="https://www.kiteplans.org/">Kite Plan Base</a>. Rokkaku kites were frequently recommended for kite aerial photography,<sup id="rf2-3904"><a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#fn2-3904" title=" But only if adjusted correctly, which turned out to be an issue. " rel="footnote">2</a></sup> and I was able to find several plans on which to base my kite design, using <a href="https://www.kiteplans.org/planos/rokkaku18/rokkaku18.html">two</a> <a href="https://www.kiteplans.org/planos/rokkaku2/rokkaku2.html">designs</a>, in particular.<sup id="rf3-3904"><a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#fn3-3904" title=" There is even a &lt;a href=&quot;https://www.kiteplans.org/planos/rokkaku4/rokkaku4.html&quot;&gt;design&lt;/a&gt; that was previously used in Antarctica. " rel="footnote">3</a></sup></p>
<p>While the designs call for 3/4&#x202f;oz ripstop nylon spinnaker cloth, which is sealed to make it low porosity, other fabrics with similar strength and low porosity can also be used. I ended up using a <a href="https://ripstopbytheroll.com/products/1-1-oz-silpoly">1.1&#x202f;oz silicone-coated ripstop polyester</a> as I could get it custom printed, avoiding the need to measure and allowing for a custom design on the kite without the manual effort required for appliqué. Due to the archaic units frequently used with fabric, these two fabrics are actually of similar weight. Sail cloth is measured in &#8220;<a href="https://measurement.en-academic.com/2418/sailmaker_ounce">sailmaker&#8217;s ounces</a>,&#8221; which is the weight of one &#8220;sailmaker&#8217;s yard&#8221; of fabric, which is 36&#8243; by 28.5&#8243;; the polyester is measured in more-typical fabric ounces, so the weight of a square yard of fabric. Both quote the weight of the fabric itself prior to sealing the fabric to reduce the porosity. After coating and conversion to standard metric units, one typical variant of 3/4&#x202f;oz spinnaker cloth, <a href="https://www.challengesailcloth.com/fibermax-spinnaker-1">Fibermax 44</a>, is 44&#x202f;g/m<sup>2</sup>, while the polyester I used is 42&#x202f;g/m<sup>2</sup>, or more or less the same.</p>
<p>For the spars, I used <a href="https://www.tentpoletech.com/easton-aluminum-order-page/">Easton Expedition-series</a> aluminum 7075 backpacking-tent poles, using stiffer 0.355&#8243; OD (0.025&#8243; wall thickness) tubing for the spine and lighter 0.344&#8243; OD (0.019&#8243; wall thickness) tubing for the spreaders. The spine consists of four 14.5&#8243; sections of tubing, three of which contain an insert tube on one end for connecting the sections together, yielding a 58&#8243; spar. Each of the two spreads consists of two 14.5&#8243; sections, each with an insert tube on one end, and a 16&#8243; section without insert tubes in the center,<sup id="rf4-3904"><a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#fn4-3904" title=" Since the joints are the weakest point, it is recommended to avoid having the spreaders cross the spine at a joint on either spar. " rel="footnote">4</a></sup> yielding two 45&#8243; spars. As the tube sections do not come in these lengths, they were cut down to size with a pipe cutter, and sections with insert tubes were ordered with the tubes preinstalled. The spars are assembled with aluminum dome tip tie offs on the ends and connected with 3/32&#8243; elastic shock cord, which is rated down to &minus;40&deg;C (equal to &minus;40&deg;F).</p>
<p>Using <a href="https://inkscape.org/">Inkscape</a>, I scaled the design to fit the kite and fabric for a four-yard-long fuzzy tail onto a two-yard section of 60&#8243;-wide custom-printed ripstop polyester, including a design based on the <a href="https://www.truesouthflag.com/flagofantarctica/">True South flag</a>; extra fabric was used to sew an 18&#8243; by 4&#8243; <a href="https://sewcraftyme.com/how-to-sew-a-drawstring-bag.html">drawstring bag</a> for the kite. The corners where the spars attach, the locations where the bridle passes through the kite to the spreaders, and the locations where the spreaders cross the spine were reinforced with an additional piece of the ripstop polyester sewn on, after which the kite edges were folded over twice and sewn with a zig-zag stitch.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite01.jpg" title="Sewing kite" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite01-640x427.jpg" alt="A sewing machine being used to sew the folded over edge of the kite, with a reinforcement patch visible in the corner." width="640" height="427" class="aligncenter size-large wp-image-3931" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite01-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite01-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite01-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite01-1280x853.jpg 1280w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite01.jpg 1920w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>Brass grommets were installed for the bridle pass-throughs, and polyester rectangles were used to create sleeves where the spreaders cross the spine to secure the spine to the kite and the spreaders over it.<sup id="rf5-3904"><a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#fn5-3904" title=" The edges of these should have been folded over to prevent tearout, which I later had to fix. " rel="footnote">5</a></sup></p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite02.jpg" title="Spreader / bridle attachment point" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite02-640x427.jpg" alt="A string passes through a brass grommet installed in the center of square reinforcement patch of white fabric and is tied to a black aluminum spar." width="640" height="427" class="aligncenter size-large wp-image-3932" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite02-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite02-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite02-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite02-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite02-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite03.jpg" title="Spine / spreader patch" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite03-640x427.jpg" alt="The black aluminum spine spar passed through a square sleeve attached to the kite, and a similar spreader spar passes through a second sleeve on top, perpendicular to the first spar." width="640" height="427" class="aligncenter size-large wp-image-3933" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite03-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite03-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite03-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite03-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite03-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>To secure the bottom of the spine, a pocket was created using a folded-over section of 1&#8243; polyester webbing and sewn to the kite, with a loop hanging off the end of the kite for attaching a tail.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite04.jpg" title="Bottom spine attachment point" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite04-640x427.jpg" alt="A black aluminum spar is slid into a black webbing pocket sewn to the bottom corner of a white kite. A thin string attaches a loop on the bottom of the webbing to a navy ribbon attached to the kite tail." width="640" height="427" class="aligncenter size-large wp-image-3935" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite04-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite04-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite04-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite04-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite04-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>For the top of the spine, a sleeve was created by sewing the edges of two sections of webbing on top of each other, with one side of hook-and-loop fastener on top, and sewn to the kite; the bottom section extends past the top of the kite and has the other side of the hook-and-loop fastener sewn to it, allowing it to be folded over the end of the spine and pulled tight, allowing the hook-and-loop fastener to be used to tension the kite fabric along the spine, which is installed in the pocket on the bottom end of the kite and slipped through the sleeves where spreaders cross and the sleeve on the top.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite05.jpg" title="Top spine attachment point" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite05-640x427.jpg" alt="A strip of black webbing is sewn to the top corner of the navy kite and extends past the end of the fabric. The fuzzy side of a hook-and-loop fastener is sewn to the webbing that extends past the edge, and the loop side is sewn to the webbing over the fabric, on top of a second piece of webbing forming a sleeve." width="640" height="427" class="aligncenter size-large wp-image-3936" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite05-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite05-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite05-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite05-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite05-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>Similar sleeves are used for the ends of the spars, except that the hook-and-loop fastener is not installed on the top of the sleeve. Instead, additional sleeves, not sewn to the kite, were created by folding over sections of webbing, and the hook-and-loop fastener was sewn to these sleeves, which also had the end opposite the sleeve folded over and sewn to form a loop. The spreaders are slipped through the webbing sleeves on the ends, as well as the sleeves where they cross the spine, and the standalone sleeves are then slipped onto the ends. Braided line is used to attach the loops on the pairs of standalone sleeves to tension the spreaders, and the hook-and-loop fastener is used to attach the sleeves on the kite to the sleeves on the spreaders, allowing the kite fabric to be tensioned independently of the spreaders. The braided line is attached to one of the standalone sleeves with a figure-eight follow-through knot, with a figure-eight on-a-bight knot on the other end of the line; an alpine butterfly knot is placed along the line&mdash;which can be moved to adjust the spreader bow&mdash;and the end of the line is looped through the second standalone sleeve and attached to the alpine butterfly with a small quick link.<sup id="rf6-3904"><a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#fn6-3904" title=" The cutoff lengths of aluminum tube came in handy as handles to pull on the loop on the end of the braided line without the quick link when bending the spreaders; the quick link served as the second handle. " rel="footnote">6</a></sup></p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite06.jpg" title="Spreader attachment point" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite06-640x427.jpg" alt="A strip of black webbing is sewn to a side corner of the white kite and extends past the end of the fabric. The fuzzy side of a hook-and-loop fastener is sewn to the webbing that extends past the edge, and a second piece of webbing is sewn to the webbing above the fabric, forming a sleeve." width="640" height="427" class="aligncenter size-large wp-image-3937" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite06-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite06-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite06-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite06-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite06-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite07.jpg" title="Standalone sleeves for spreaders" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite07-640x427.jpg" alt="Two sections of black webbing are shown. One end of each piece is folded over and sewn to form a pocket, while the other end is folded over and sewn to form a loop. The hook side of hook and loop fastener is sewn to the webbing on the side opposite the pocket. A thin string is attached to each loop and extends out of the image." width="640" height="427" class="aligncenter size-large wp-image-3938" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite07-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite07-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite07-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite07-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite07-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite08-scaled.jpg" title="Spreader / bow string attachment" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite08-640x427.jpg" alt="A spar is installed through the webbing sleeve on a side corner of the kite and stops at the corner. The pocket of a standalone webbing assembly is installed over the end of the spar, and a string extends off this to the middle of the kite. The webbing attached to the kite is folded over and attached to the webbing installed over the end of the spar." width="640" height="427" class="aligncenter size-large wp-image-3939" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite08-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite08-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite08-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite08-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite08-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>The bridle is constructed from three sections of braided line. Each spreader has a line with a figure-eight on-a-bight knot on both ends of the line and one in the middle, with Prusik hitches used to attach the end loops to the spreader. The small loops in the middle of each spreader line are attached together with the third, main bridle line using a figure-eight follow-through knot on each end. An additional knot is placed along this section of line for attaching the main kite line using a quick link. The 5&#8243;-wide, four-yard-long fuzzy tail was constructed by sewing 3/8&#8243; grosgrain ribbon down the center of the tail fabric using a zig-zag stitch and folding the end of the ribbon over on each end to make a loop. I then cut slits at 1&#8243; intervals to make it fuzzy and attached it to the loop on the bottom of the kite using a small loop of braided line and lark&#8217;s head knots. It is approximately 1.0&#x202f;m from the spreader attachment point to the center of the spreader line, and the line that connects the two spreader lines is approximately 2.5&#x202f;m long. The completed kite weights approximately 370&#x202f;g.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite09.jpg" title="Sewing fuzzy tail" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite09-640x427.jpg" alt="A navy ribbon is being sewn to the center of a long strip of fabric, which is white along the edges and navy in the center, using a sewing machine." width="640" height="427" class="aligncenter size-large wp-image-3940" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite09-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite09-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite09-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite09-1280x853.jpg 1280w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite09.jpg 1920w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>For the kite reel, I was again concerned about the performance of the typical mostly-plastic construction in the extreme cold. Thus, I opted to design a reel using a combination of a large 3D-printed ball bearing<sup id="rf7-3904"><a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#fn7-3904" title=" Based on the designs in this &lt;a href=&quot;https://www.youtube.com/watch?v=0KhV6JW2sHg&quot;&gt;video&lt;/a&gt;. " rel="footnote">7</a></sup> and laser-cut aluminum sheet parts. The 3D-printed parts were printed using PLA with a very high infill percentage and were designed to avoid bending moments. They were then tapped with 4-40 thread, and the reel was assembled using 4&#x202f;mm stainless steel balls and button-head hex-drive screws. A round aluminum standoff and 8-32 socket-head cap screws were used to add a handle, and a ring-grip quick-release pin can be used to lock the reel. I sewed a couple of lengths of webbing into loops such that the lock-off reel can be attached to myself or fixed objects.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite10.jpg" title="Kite reel parts" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite10-640x320.jpg" alt="Flat aluminum disks with holes in the center and circular gray plastic 3D-printed parts are laid out on a wooden workbench." width="640" height="320" class="aligncenter size-large wp-image-3941" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite10-640x320.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite10-300x150.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite10-1536x768.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite10-1280x640.jpg 1280w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite10.jpg 1920w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite11.jpg" title="Kite reel" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite11-640x427.jpg" alt="A reel with aluminum sides and a gray plastic handle is wrapped with gray string and propped up on its edge." width="640" height="427" class="aligncenter size-large wp-image-3942" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite11-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite11-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite11-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite11-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite11-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>For kite line, I opted for braided high-modulus polyethylene line,<sup id="rf8-3904"><a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#fn8-3904" title=" Also referred to as UHMWPE, Dyneema, or Spectra. " rel="footnote">8</a></sup> sold as fishing line, as this type of line is lighter and thinner than the alternatives. Given the high cost of brand-name line, I opted for the cheaper alternatives available from Chinese vendors on eBay and Amazon, originally purchasing &#8220;200&#x202f;lb&#8221; line on eBay. As I did not trust the sellers&#8217; strength ratings, I load tested it using a heavy counterweight, a scale, and a chain hoist, and it failed at approximately half the rated capacity. After getting a refund,<sup id="rf9-3904"><a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#fn9-3904" title=" When I first ordered the line, the seller provided a fraudulent USPS tracking number and instead shipped the item from China, despite what the listing said. During the refund process, the seller tried to get me to contact them outside eBay&#8217;s messaging system and then tried to get me to pay for return shipping with the promise of reimbursement, which I assume wouldn&#8217;t have happened. When I insisted that they send me a shipping label, they instead processed the refund without having me return the item. " rel="footnote">9</a></sup> I then ordered &#8220;300&#x202f;lb&#8221; line on Amazon, which is the strongest available. This did marginally better and failed at around 120&#x202f;lb, although that was sufficient and was the strongest line available at a reasonable price. Except for what I used for the main bridle line, I installed the remainder of the 300&#x202f;m of line on the reel (I used the &#8220;200&#x202f;lb&#8221; line for the spreaders and the bridle spreader lines).<sup id="rf10-3904"><a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#fn10-3904" title=" I did not verify the length, so I don&#8217;t know if the seller also lied about it. " rel="footnote">10</a></sup></p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite12.jpg" title="Assembled, tensioned kite" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite12-640x427.jpg" alt="An hexagonal white and navy kite with a True South pattern on it sits on the floor, with tensioned bow strings attached to its spreader spars. The spine spar is also installed, and a fuzzy tail is attached, which extends out of the picture." width="640" height="427" class="aligncenter size-large wp-image-3943" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite12-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite12-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite12-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite12-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite12-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>In December, the day before I left for Antarctica, I took the T out to Wonderland and tested the kite at Revere Beach with 4&ndash;5&#8243; of bow in the spreaders. Unfortunately, it was almost dead calm, but I was able to get the kite aloft during a gust and keep it in the air by walking upwind, showing that the kite flew well in extremely-light wind, although the kite line was not taught enough in this wind to attach a camera. Once at the South Pole, it took me several more attempts to get the kite flying reasonably well.<sup id="rf11-3904"><a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#fn11-3904" title=" Including one where I cut my chin open on the laser-cut aluminum edge of the kite reel and needed stitches; I started wearing a neck gaiter while flying the kite after that. " rel="footnote">11</a></sup> Unfortunately, the information found online about tuning this type of kite is contradictory.<sup id="rf12-3904"><a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#fn12-3904" title=" It&#8217;s also difficult to look up with the Pole&#8217;s extremely-slow and intermittent internet access. " rel="footnote">12</a></sup> Some folks say that both spreaders should have the same amount of bow, while others say that the bottom spreader should be bowed more; some folks recommend stiffer spreader spars for higher winds, while others recommend more-flexible ones. I eventually settled on 11&ndash;12&#8243; of bow in both spreaders, which was considerably more than the 5&ndash;6&#8243; I started with, based on what I read online. This was just enough bend to push the aluminum tubes into the plastic deformation regime and permanently bend the tubes (this didn&#8217;t happen with 10&#8243; of bow). I found that placing the hitch point on the bridle 18&#x202f;cm above the center point worked well; moving it up made the kite more unstable, and I couldn&#8217;t launch the kite if I moved it down. Originally, I used an alpine butterfly knot for the hitch attachment, although I ended up switching to a simple overhand loop, as it was quicker to tie in the cold; both worked equally well.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite13.jpg" title="Kite flying by the South Pole Telescope" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite13-640x427.jpg" alt="A navy and white kite appears in the top left corner of the image, with its fuzzy tail blown horizontal, to the left. The white 10 meter diameter South Pole Telescope and the blue Dark Sector Laboratory building appear in the bottom right of the photo, with snow along the bottom of the image. Blowing snowflakes are visible against the mostly-clear blue sky." width="640" height="427" class="aligncenter size-large wp-image-3944" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite13-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite13-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite13-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite13-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite13-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite14.jpg" title="Kite flying at the South Pole" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite14-640x427.jpg" alt="A flying navy and white hexagonal kite with a navy and white fuzzy tail with a clear blue sky in the background is viewed at an oblique angle. The hexagonal shape is deformed by the wind and billows backward." width="640" height="427" class="aligncenter size-large wp-image-3945" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite14-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite14-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite14-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite14-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite14-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite15.jpg" title="Reeling in the kite in front of the Dark Sector Laboratory" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite15-640x427.jpg" alt="A person wearing a large red parka, jeans, gloves, dark ski goggles, and a blue neck gaiter and knit hat is standing on the snow in front of the South Pole Telescope and Dark Sector Laboratory. He is holding a kite reel, and a gray kite string extends from the reel to the top of the image." width="640" height="427" class="aligncenter size-large wp-image-3946" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite15-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite15-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite15-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite15-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite15-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite16.jpg" title="Spreader bow" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite16-640x427.jpg" alt="A kite is shown, with a ruler propped up from where a spreader spar crosses the spine spar to the spreader&#039;s bow string, which shows the distance between the two to be between 11 and 12 inches. An oval metal quick link is attached to the bow string." width="640" height="427" class="aligncenter size-large wp-image-3947" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite16-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite16-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite16-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite16-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite16-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>With this adjustment, the kite was at least reasonably stable in winds up to around 6&#x202f;m/s, although it generally wasn&#8217;t stable enough for the camera if the wind was much above 5&#x202f;m/s, particularly when walking the kite upwind; while the kite would fly in less wind, the kite line wasn&#8217;t taught enough to attach my camera below around 4&#x202f;m/s, leaving only a small wind range where it worked well. There were only a couple of days with both appropriate wind and at least mostly-clear skies where I also had sufficient free time to fly the kite and camera.</p>
<p>To pack up the kite, the bow line assemblies are untensioned and removed, the spine spar is removed, and the spreader spars are folded but left attached to the bridle and centered between the grommets. The kite is then folded over the folded spreader spars, the tail is tucked in, the kite is rolled with the folded spine spar (and spreader spars) inside, and the remainder of the bridle is wrapped around the rolled kite. The rolled kite is then placed in its bag, and the bow line assemblies are placed in a separate bag.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite17.jpg" title="Folded spreader spar" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite17-640x427.jpg" alt="Three parallel lengths of black aluminum tubing attached with a shock cord and folded against each other and placed on the white kite fabric, centered between two brass grommets. Loose strings are attached to two of these tubing segments, and each string is passes through one of the grommets." width="640" height="427" class="aligncenter size-large wp-image-3948" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite17-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite17-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite17-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite17-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite17-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite18.jpg" title="Folded kite" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite18-640x427.jpg" alt="The top and bottom of the hexagonal kite fabric are folded over to form a rectangle, with the sides also folded over into a smaller rectangle, the width of which matches the length of the folded aluminum spar that is placed on top of the fabric at one end. The fuzzy tail is laid out on top of the rectangle of kite fabric." width="640" height="427" class="aligncenter size-large wp-image-3949" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite18-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite18-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite18-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite18-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite18-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite19.jpg" title="Rolled kite &amp; bag" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite19-640x427.jpg" alt="The rolled up navy and white kite has extra string wrapped around it. It is placed next to a rectangular drawstring bag of similar dimensions made out of navy fabric." width="640" height="427" class="aligncenter size-large wp-image-3950" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite19-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite19-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite19-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite19-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite19-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite20.jpg" title="Bagged kite &amp; reel" data-sbox="3904"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite20-640x427.jpg" alt="A long cylindrical navy bag is placed next to a circular metal kite reel and a small clear plastic bag with black webbing visible in it. A yellow tape measure is laid out next to the navy bag and shows it to be 17 inches long and a few inches wide." width="640" height="427" class="aligncenter size-large wp-image-3951" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite20-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite20-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite20-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite20-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite20-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>The kite had no problems with the cold&mdash;although I can&#8217;t say the same thing about my fingers when flying it, particularly when I needed to take off my gloves to deal with the camera&mdash;so it was a success in that regard. However, in retrospect, a parafoil would have probably been a better option, since there were significantly more days with clear skies and good visibility with wind speeds too fast for this kite than there were days where the wind speed was in this kite&#8217;s ideal range. During the two months I was at the Pole, the wind speed was in the 4&ndash;5&#x202f;m/s ideal range only around 20% of the time<sup id="rf13-3904"><a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#fn13-3904" title=" Per SPT&#8217;s weather station on DSL. " rel="footnote">13</a></sup> and even less time when the skies were also clear. During the same period, the wind was in the 4&ndash;7&#x202f;m/s range, which should work for a parafoil kite, around 50% of the time; while a parafoil kite could work at even higher wind speeds, there is frequently blowing snow obstructing visibility at that point. The spreader spars on this kite appear to be significantly stiffer than what I&#8217;ve seen in <a href="https://www.youtube.com/watch?v=BQnA9JpvuEU">videos</a> of <a href="https://www.youtube.com/watch?v=swqFA9Mvq5M">similar kites</a>, and I suspect that may have hurt its stability in higher winds, since the kite can&#8217;t flex to bleed off the extra force from the wind. Furthermore, this kite required a lot more tweaking and adjustment than I would have liked, as my interests lie in aerial photography, not kites; I suspect a commercially-available parafoil kite would require less adjustment.</p>
<p>Details of my camera setup and photos from the kite will follow in a subsequent blog post, as this post is already quite long. I&#8217;ve uploaded the <a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/kite-design.zip">design files</a> for this kite, although I know very little about kites, and this kite only worked well in a very narrow wind speed range, so I&#8217;m not sure I&#8217;d recommend using them. I&#8217;ve also uploaded the design files for the <a href="https://cdn0.mpetroff.net/wp-content/uploads/2025/03/reel-solidworks.zip">kite reel</a>.</p>
<hr class="footnotes"><ol class="footnotes" style="list-style-type:decimal"><li id="fn1-3904"><p > It was recommended as a replacement for a similar parafoil kite that had  also been discontinued, two decades ago. &nbsp;<a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#rf1-3904" class="backlink" title="Return to footnote 1.">&#8617;</a></p></li><li id="fn2-3904"><p > But only if adjusted correctly, which turned out to be an issue. &nbsp;<a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#rf2-3904" class="backlink" title="Return to footnote 2.">&#8617;</a></p></li><li id="fn3-3904"><p > There is even a <a href="https://www.kiteplans.org/planos/rokkaku4/rokkaku4.html">design</a> that was previously used in Antarctica. &nbsp;<a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#rf3-3904" class="backlink" title="Return to footnote 3.">&#8617;</a></p></li><li id="fn4-3904"><p > Since the joints are the weakest point, it is recommended to avoid having the spreaders cross the spine at a joint on either spar. &nbsp;<a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#rf4-3904" class="backlink" title="Return to footnote 4.">&#8617;</a></p></li><li id="fn5-3904"><p > The edges of these should have been folded over to prevent tearout, which I later had to fix. &nbsp;<a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#rf5-3904" class="backlink" title="Return to footnote 5.">&#8617;</a></p></li><li id="fn6-3904"><p > The cutoff lengths of aluminum tube came in handy as handles to pull on the loop on the end of the braided line without the quick link when bending the spreaders; the quick link served as the second handle. &nbsp;<a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#rf6-3904" class="backlink" title="Return to footnote 6.">&#8617;</a></p></li><li id="fn7-3904"><p > Based on the designs in this <a href="https://www.youtube.com/watch?v=0KhV6JW2sHg">video</a>. &nbsp;<a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#rf7-3904" class="backlink" title="Return to footnote 7.">&#8617;</a></p></li><li id="fn8-3904"><p > Also referred to as UHMWPE, Dyneema, or Spectra. &nbsp;<a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#rf8-3904" class="backlink" title="Return to footnote 8.">&#8617;</a></p></li><li id="fn9-3904"><p > When I first ordered the line, the seller provided a fraudulent USPS tracking number and instead shipped the item from China, despite what the listing said. During the refund process, the seller tried to get me to contact them outside eBay&#8217;s messaging system and then tried to get me to pay for return shipping with the promise of reimbursement, which I assume wouldn&#8217;t have happened. When I insisted that they send me a shipping label, they instead processed the refund without having me return the item. &nbsp;<a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#rf9-3904" class="backlink" title="Return to footnote 9.">&#8617;</a></p></li><li id="fn10-3904"><p > I did not verify the length, so I don&#8217;t know if the seller also lied about it. &nbsp;<a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#rf10-3904" class="backlink" title="Return to footnote 10.">&#8617;</a></p></li><li id="fn11-3904"><p > Including one where I cut my chin open on the laser-cut aluminum edge of the kite reel and needed stitches; I started wearing a neck gaiter while flying the kite after that. &nbsp;<a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#rf11-3904" class="backlink" title="Return to footnote 11.">&#8617;</a></p></li><li id="fn12-3904"><p > It&#8217;s also difficult to look up with the Pole&#8217;s extremely-slow and intermittent internet access. &nbsp;<a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#rf12-3904" class="backlink" title="Return to footnote 12.">&#8617;</a></p></li><li id="fn13-3904"><p > Per SPT&#8217;s weather station on DSL. &nbsp;<a href="https://mpetroff.net/2025/03/building-a-kite-for-antarctica/#rf13-3904" class="backlink" title="Return to footnote 13.">&#8617;</a></p></li></ol>]]></content:encoded>
					
					<wfw:commentRss>https://mpetroff.net/2025/03/building-a-kite-for-antarctica/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Making Git prompt for SSH username</title>
		<link>https://mpetroff.net/2024/12/making-git-prompt-for-ssh-username/</link>
					<comments>https://mpetroff.net/2024/12/making-git-prompt-for-ssh-username/#respond</comments>
		
		<dc:creator><![CDATA[Matthew Petroff]]></dc:creator>
		<pubDate>Tue, 31 Dec 2024 01:21:17 +0000</pubDate>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[prompt]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[username]]></category>
		<guid isPermaLink="false">https://mpetroff.net/?p=3886</guid>

					<description><![CDATA[In what seems to be an unusual configuration&#8212;as I was unable to find any information on how to do it&#8212;I had a need to make Git prompt for an SSH username. The repositories in question are on a shared computer, &#8230; <a href="https://mpetroff.net/2024/12/making-git-prompt-for-ssh-username/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><span class="dropcap">I</span>n what seems to be an unusual configuration&mdash;as I was unable to find any information on how to do it&mdash;I had a need to make Git prompt for an SSH username. The repositories in question are on a shared computer, but the host for the remote copies requires individual user authentication using a password and a TOTP code. A crude solution was to set <tt>GIT_SSH_COMMAND='ssh -l $USER'</tt>, but this requires the user to remember to run, e.g., <tt>USER=username git pull</tt>, although this can be helped by setting <tt>USER='Prefix_git_with_"USER=yourusername"!!!!!!!!'</tt> in <tt>.bashrc</tt>. After much trial and error, I arrived at the solution of setting the <tt>GIT_SSH</tt> environment variable in <tt>.bashrc</tt> to point at the following shell script:</p>
<pre>#!/bin/bash
# Make Git prompt for SSH username
# M. Petroff, 2024-12
if [[ $1 = "-G" ]]
then
  # Handle Git's SSH variant test
  ssh "$@"
else
  # Prompt for username
  read -p "Username: " user &lt;/dev/tty
  ssh -l "$user" "$@"
fi
</pre>
<p>There are two peculiarities here to keep in mind. First, <tt>stdin</tt> and <tt>stdout</tt> cannot be used, so input redirection needs to be used with <tt>read</tt> to get input directly from the terminal (<tt>/dev/tty</tt>), similar to what <a href="https://unix.stackexchange.com/a/171841">SSH itself does</a>; with the <tt>-p</tt> flag, <tt>read</tt> writes to <tt>stderr</tt>, which is okay. With this resolved, there were mysterious issues with either the username prompt being displayed twice or with needing to press &#8220;enter&#8221; to see the prompt, depending on the exact details of the then work-in-progress script. I eventually realized this was due to Git&#8217;s SSH variant checking, which first calls the <tt>GIT_SSH</tt> command with the <tt>-G</tt> argument to figure out which variant of SSH is in use. While this check can be avoided by setting <tt>GIT_SSH_VARIANT</tt> explicitly, it was easy enough to handle the check in the shell script.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mpetroff.net/2024/12/making-git-prompt-for-ssh-username/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Building a Cosmic Coffee Table</title>
		<link>https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/</link>
					<comments>https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#respond</comments>
		
		<dc:creator><![CDATA[Matthew Petroff]]></dc:creator>
		<pubDate>Sun, 06 Mar 2022 21:42:46 +0000</pubDate>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[coffee table]]></category>
		<category><![CDATA[epoxy]]></category>
		<category><![CDATA[furniture]]></category>
		<category><![CDATA[glass]]></category>
		<category><![CDATA[photo print]]></category>
		<category><![CDATA[table]]></category>
		<category><![CDATA[wooden]]></category>
		<guid isPermaLink="false">https://mpetroff.net/?p=3552</guid>

					<description><![CDATA[Now that I finally have a couch (and am living in an apartment big enough to comfortably fit one, unlike when I was in grad school), I decided I also needed a coffee table. Instead of just buying one, I &#8230; <a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><span class="dropcap">N</span>ow that I finally have a couch (and am living in an apartment big enough to comfortably fit one, unlike when I was in grad school), I decided I also needed a coffee table. Instead of just buying one, I decided to build one instead, with an astrophysics-related theme. To make construction without access to a woodworking shop easier, I sketched out a design based on square birch dowels, after which I selected a <a href="https://esahubble.org/images/heic1402b/">Hubble Space Telescope image of the Tarantula Nebula</a> to use for the tabletop, and got to work building the table.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table0.jpg" title="Completed coffee table" data-sbox="3552"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table0-640x427.jpg" alt="Black wooden coffee table with image of Tarantula Nebula on top and slats on the bottom" width="640" height="427" class="aligncenter size-large wp-image-3557" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table0-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table0-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table0-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table0-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table0-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a><span id="more-3552"></span></p>
<p>The frame is built using a combination of 1&#8243; and 3/4&#8243; square birch dowels, which were cut using a cheap plastic miter box and back saw.<sup id="rf1-3552"><a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#fn1-3552" title=" An electric miter saw with a rail would have produced much better cuts. " rel="footnote">1</a></sup> To assemble these dowel segments into the table, I designed and 3D-printed a set of drill guides, which hold a removable drill bushing. I then clamped the drill guides in place and drilled a series of blind holes with a cordless electric drill, into which 5&thinsp;mm diameter, 25&thinsp;mm long wooden dowel pins could be inserted.<sup id="rf2-3552"><a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#fn2-3552" title=" I made a black mark on the drill bit to make sure I did not drill too deep, although, in retrospect, using a collar on the drill bit to get a more consistent depth would have been better, since it would have made subsequent assembly easier. " rel="footnote">2</a></sup> The 5&thinsp;mm diameter was chosen as it was the smallest diameter available and most readily allowed for two dowel pins to be used at each joint, to prevent rotation.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table1.jpg" title="3D-printed drill guides" data-sbox="3552"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table1-640x427.jpg" alt="White 3D-printed parts that hold a drill bushing and can be clamped to a square wood dowel" width="640" height="427" class="aligncenter size-large wp-image-3558" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table1-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table1-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table1-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table1-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table1-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>The drill guides worked flawlessly, so the parts were soon ready for assembly. Due to how the parts fit together, there&#8217;s only one allowable assembly order, so I started by assembling the sides using the dowel pins and wood glue.<sup id="rf3-3552"><a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#fn3-3552" title=" &lt;a href=&quot;https://www.gorillatough.com/product/gorilla-wood-glue/&quot;&gt;Gorilla Wood Glue&lt;/a&gt; (PVA based) " rel="footnote">3</a></sup> As I did not have long enough clamps, most of the parts were held together using racketing straps while the glue dried. Once the sides were done, I attached the two sides together. As this step involves installing 48 dowel pins, 24 on each side, it was a race against the clock to get everything in place before the glue started to set; in retrospect, an extended-drying-time wood glue would have been a much better option than the standard-drying-time glue I ended up using. A mixture of sawdust and wood glue was then used to fill in any gaps left from the cuts not being completely square, and the table frame was sanded and prepared for painting. Three coats of a satin black paint<sup id="rf4-3552"><a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#fn4-3552" title=" Behr Ultra interior satin enamel " rel="footnote">4</a></sup> and some felt pads for the bottoms of the legs completed the frame.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table2.jpg" title="Coffee table frame" data-sbox="3552"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table2-640x427.jpg" alt="Slatted frame of wooden coffee table painted black" width="640" height="427" class="aligncenter size-large wp-image-3559" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table2-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table2-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table2-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table2-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table2-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>Next, the tabletop needed to be completed. For this, a 1/4&#8243;-thick sheet of tempered glass was used in combination with a somewhat-oversized print on metallic photo paper<sup id="rf5-3552"><a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#fn5-3552" title=" Kodak ENDURA Metallic, printed by &lt;a href=&quot;https://bayphoto.com/&quot;&gt;Bay Photo&lt;/a&gt; " rel="footnote">5</a></sup> and an optical epoxy.<sup id="rf6-3552"><a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#fn6-3552" title=" &lt;a href=&quot;https://atomadhesives.com/aa-bond-f113-high-impact-optically-clear-epoxy-adhesive-two-part-low-viscosity/&quot;&gt;Atom Adhesives AA-BOND F113&lt;/a&gt; " rel="footnote">6</a></sup> After thoroughly cleaning the glass and print while wearing disposable gloves, I laid both out on a flat table<sup id="rf7-3552"><a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#fn7-3552" title=" The granite table I used was overkill. " rel="footnote">7</a></sup> and used a masking tape to make a lip around the edge of the print to avoid epoxy leakage. Then, I mixed and vacuum degassed the epoxy before pouring it down the center of the print. The epoxy used had a vegetable-oil-like viscosity, so it poured easily.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table3.jpg" title="Print with poured epoxy" data-sbox="3552"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table3-640x427.jpg" alt="Photo print with epoxy poured on it, sitting on granite table" width="640" height="427" class="aligncenter size-large wp-image-3560" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table3-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table3-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table3-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table3-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table3-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>I then placed the glass on top of the print and epoxy and pressed out as many air bubbles as I could by pressing down on the top of the glass. However, air bubbles still remained. Fortunately, I soon discovered that I could squeeze out the remaining bubbles by sliding the print and glass partway off the table and running my finger along the bottom of the print to force the bubbles to the edge. I found that the optimal technique was to use the side of my index finger in a &#8220;c&#8221; shape, since this trapped the air bubble in the curve of my finger, allowing it to be easily brought to the edge of the glass.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table4.jpg" title="Print with epoxy and glass" data-sbox="3552"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table4-640x320.jpg" alt="Photo print with glass epoxied to the top of it, sitting on a granite table" width="640" height="320" class="aligncenter size-large wp-image-3561" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table4-640x320.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table4-300x150.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table4-1536x768.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table4-2048x1024.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table4-1280x640.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>After the epoxy dried, the excess photo paper and epoxy needed to be trimmed from the edge of the glass. At first, I tried doing this with a razor blade and then with a utility knife, but both of these methods were slow, difficult, and somewhat dangerous. Due to the thickness of the epoxy, the razor blade and knife both required significant force, even with a fresh blade, to make a cut. After making very slow progress, I decided I needed to try a different approach and switched to using a coping saw, which worked much better. Cutting only on the upstroke&#8212;from the print toward the glass&#8212;prevented damage to the print, and the blade was able to slide against the edge of the glass, giving a close, consistent cut. Most importantly, this method was much faster and safer. After finishing up with the coping saw, I used the utility knife to clean up the cuts where needed by shaving off epoxy.<sup id="rf8-3552"><a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#fn8-3552" title=" The knife worked much better for this shaving than it did for trying to do the initial trimming. " rel="footnote">8</a></sup> I then masked the edge of the glass with tape and painted the bottom of the print and the bottom half of the edge of the glass black to seal the edge of the paper and make it more opaque. Finally, I placed felt strips on the frame and installed the glass.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table5.jpg" title="Completed coffee table" data-sbox="3552"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table5-640x427.jpg" alt="Black wooden coffee table with image of Tarantula Nebula on top and slats on the bottom, viewed from top" width="640" height="427" class="aligncenter size-large wp-image-3562" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table5-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table5-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table5-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table5-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table5-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table6.jpg" title="Completed coffee table" data-sbox="3552"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table6-640x427.jpg" alt="Black wooden coffee table with image of Tarantula Nebula on top and slats on the bottom, viewed from side" width="640" height="427" class="aligncenter size-large wp-image-3563" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table6-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table6-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table6-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table6-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table6-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table7.jpg" title="Completed coffee table" data-sbox="3552"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table7-640x427.jpg" alt="Black wooden coffee table with image of Tarantula Nebula on top and slats on the bottom, viewed from end" width="640" height="427" class="aligncenter size-large wp-image-3564" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table7-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table7-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table7-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table7-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table7-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>The metallic paper produces a really-nice-looking iridescent effect, which is unfortunately difficult to capture on camera. Unlike the print on its own, the float glass and epoxy also produce a smooth reflection.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table8.jpg" title="Iridescent effect of table top" data-sbox="3552"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table8-640x427.jpg" alt="Close up of coffee table top showing an iridescent effect and a copy of Physics Today" width="640" height="427" class="aligncenter size-large wp-image-3565" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table8-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table8-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table8-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table8-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table8-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>I&#8217;ve uploaded <a href="https://cdn0.mpetroff.net/wp-content/uploads/2022/03/coffee-table-plans.zip">the CAD files for the 3D-printed drill guides and some hand-sketched plans</a>, in case you, the reader, want to use them to build something similar.</p>
<hr class="footnotes"><ol class="footnotes" style="list-style-type:decimal"><li id="fn1-3552"><p > An electric miter saw with a rail would have produced much better cuts. &nbsp;<a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#rf1-3552" class="backlink" title="Return to footnote 1.">&#8617;</a></p></li><li id="fn2-3552"><p > I made a black mark on the drill bit to make sure I did not drill too deep, although, in retrospect, using a collar on the drill bit to get a more consistent depth would have been better, since it would have made subsequent assembly easier. &nbsp;<a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#rf2-3552" class="backlink" title="Return to footnote 2.">&#8617;</a></p></li><li id="fn3-3552"><p > <a href="https://www.gorillatough.com/product/gorilla-wood-glue/">Gorilla Wood Glue</a> (PVA based) &nbsp;<a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#rf3-3552" class="backlink" title="Return to footnote 3.">&#8617;</a></p></li><li id="fn4-3552"><p > Behr Ultra interior satin enamel &nbsp;<a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#rf4-3552" class="backlink" title="Return to footnote 4.">&#8617;</a></p></li><li id="fn5-3552"><p > Kodak ENDURA Metallic, printed by <a href="https://bayphoto.com/">Bay Photo</a> &nbsp;<a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#rf5-3552" class="backlink" title="Return to footnote 5.">&#8617;</a></p></li><li id="fn6-3552"><p > <a href="https://atomadhesives.com/aa-bond-f113-high-impact-optically-clear-epoxy-adhesive-two-part-low-viscosity/">Atom Adhesives AA-BOND F113</a> &nbsp;<a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#rf6-3552" class="backlink" title="Return to footnote 6.">&#8617;</a></p></li><li id="fn7-3552"><p > The granite table I used was overkill. &nbsp;<a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#rf7-3552" class="backlink" title="Return to footnote 7.">&#8617;</a></p></li><li id="fn8-3552"><p > The knife worked much better for this shaving than it did for trying to do the initial trimming. &nbsp;<a href="https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/#rf8-3552" class="backlink" title="Return to footnote 8.">&#8617;</a></p></li></ol>]]></content:encoded>
					
					<wfw:commentRss>https://mpetroff.net/2022/03/building-a-cosmic-coffee-table/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Pre-calculated Line Breaks for HTML / CSS</title>
		<link>https://mpetroff.net/2020/05/pre-calculated-line-breaks-for-html-css/</link>
					<comments>https://mpetroff.net/2020/05/pre-calculated-line-breaks-for-html-css/#respond</comments>
		
		<dc:creator><![CDATA[Matthew Petroff]]></dc:creator>
		<pubDate>Mon, 25 May 2020 16:12:05 +0000</pubDate>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[knuth-plass]]></category>
		<category><![CDATA[line breaks]]></category>
		<category><![CDATA[typography]]></category>
		<guid isPermaLink="false">https://mpetroff.net/?p=3225</guid>

					<description><![CDATA[Although slowly improving, typography on the web pages is considerably lower quality than that of high-quality print / PDF typography, such as that produced by LaTeX or Adobe InDesign. In particular, line breaks and hyphenation need considerable improvement. While CSS &#8230; <a href="https://mpetroff.net/2020/05/pre-calculated-line-breaks-for-html-css/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><span class="dropcap">A</span>lthough slowly improving, typography on the web pages is considerably lower quality than that of high-quality print / PDF typography, such as that produced by <span>L<sup style="text-transform: uppercase; vertical-align: -0.3em; margin-left: -0.2em;">a</sup>T<sub style="text-transform: uppercase; vertical-align: 0.2em; margin-left: -0.15em;">e</sub>X</span> or Adobe InDesign. In particular, line breaks and hyphenation need considerable improvement. While CSS originally never specified what sort of line breaking algorithm should be used, browsers all converged on greedy line breaking, which produces poor-quality typography but is fast, simple, and stable. <a href="https://www.w3.org/TR/css-text-4/#text-wrap">CSS Text Module Level 4</a> standardizes the current behavior as the default with a <code>text-wrap</code> property while introducing a <code>pretty</code> option, which instructs the browser to use a higher quality line breaking algorithm. However, as of the time of writing, no browsers supported this property.<br />
<span id="more-3225"></span></p>
<p>I recently came across a <a href="https://latex.now.sh/">CSS library</a> for emulating <span>L<sup style="text-transform: uppercase; vertical-align: -0.3em; margin-left: -0.2em;">a</sup>T<sub style="text-transform: uppercase; vertical-align: 0.2em; margin-left: -0.15em;">e</sub>X&#8217;s</span> default appearance.<sup id="rf1-3225"><a href="https://mpetroff.net/2020/05/pre-calculated-line-breaks-for-html-css/#fn1-3225" title=" Also see corresponding &lt;a href=&quot;https://news.ycombinator.com/item?id=23282207&quot;&gt;Hacker News discussion&lt;/a&gt;. " rel="footnote">1</a></sup> However, it doesn&#8217;t emulate the Knuth&#8211;Plass line breaking algorithm, which is one of the things that makes <span>L<sup style="text-transform: uppercase; vertical-align: -0.3em; margin-left: -0.2em;">a</sup>T<sub style="text-transform: uppercase; vertical-align: 0.2em; margin-left: -0.15em;">e</sub>X</span> look good. This got me wondering whether or not it&#8217;s possible to emulate this with plain HTML and CSS. A <a href="https://github.com/robertknight/tex-linebreak">JavaScript library</a> already exists to emulate this, but it adds extra complexity and is a bit slow. It turns out that it is possible to pre-calculate line breaks and hyphenation for specific column widths in a manner that can be encoded in HTML and CSS, as long as web fonts are used to standardize the text appearance across various browsers.</p>
<p>The key is to wrap all the potential line breaks (inserted via <code>::after</code> pseudo-elements) and hyphens in <code>&lt;span&gt;</code> elements that are hidden by default with <code>display: none;</code>. Media queries are then used to selectively show the line breaks specific to a given column width. Since every line has an explicit line break, justification needs to be enabled using <code>text-align-last: justify;</code>, and <code>word-spacing: -10px;</code> is used to avoid additional automatic line breaks due to slight formatting differences between browsers. However, this presents a problem for the actual last line of each paragraph, since it is now also justified instead of left aligned. This is solved by wrapping each possible last line in a <code>&lt;span&gt;</code> element. Using media queries, the <code>&lt;span&gt;</code> element corresponding to the given column width is set to use <code>display: flex;</code>, which makes the content be left-aligned and take up the minimum space required, thereby undoing the justification; <code>word-spacing: 0;</code> is also set to undo the previous change to it and fix the word spacing. Unfortunately, the nested <code>&lt;span&gt;</code> elements are problematic, because there are no spaces between them; this is fixed by including a space in the HTML markup at the beginning of the <code>&lt;span&gt;</code> and setting <code>white-space: pre;</code> to force the space to appear.</p>
<p>I&#8217;ve prepared a <a href="https://mpetroff.net/files/pre-calculated-line-breaks-demo/">demo page</a> demonstrating this technique. It was constructed by calculating line breaks in Firefox 76 using the <a href="https://github.com/robertknight/tex-linebreak">tex-linebreak bookmarklet</a> and manually inserting the markup corresponding to the line breaks; some fixes were manually made because the library does not properly support em dashes. Line breaks were calculated for column widths between 250&thinsp;px and 500&thinsp;px at 50&thinsp;px increments. The Knuth&#8211;Plass line breaks lead to a considerable improvement in the text appearance, particularly for narrower column widths. In addition to the improved line breaks, I also implemented protrusion of hyphens, periods, and commas into the right margin, a microtypography technique, which further improves the appearance. To (hopefully) avoid issues with screen readers, <code>aria-hidden="true"</code> is set on the added markup; <code>user-select: none;</code> is also set, to avoid issues with text copying.</p>
<p>While this technique works fine in Firefox and Chrome, it does not work in Safari, since Safari does not support <code>text-align-last</code> as of Safari 13.<sup id="rf2-3225"><a href="https://mpetroff.net/2020/05/pre-calculated-line-breaks-for-html-css/#fn2-3225" title=" Even Internet Explorer 6 supports this. " rel="footnote">2</a></sup> Despite it not working, the corresponding <a href="https://bugs.webkit.org/show_bug.cgi?id=76173">WebKit bug</a> is marked as &#8220;resolved fixed&#8221;; it seems that support was actually added in 2014, but the support is behind the <code>CSS3_TEXT</code> compile-time flag, which is disabled by default. Thus, I devised an <a href="https://mpetroff.net/files/pre-calculated-line-breaks-demo/demo-partial-safari-support.html">alternative method</a> that used invisible 100% width elements to force line breaks without using explicit line breaks. This again worked in Firefox and Chrome, although it caused minor issues with text selection, but it again had significant issues in Safari. It appears that Safari does not properly handle justified text with negative word spacing; relaxing the word spacing, however, causes extra line breaks due to formatting differences, which breaks the technique. At this point, I gave up on supporting Safari and just set it to use the browser default line breaking by placing the technique&#8217;s CSS behind an <code>@supports</code> query for <code>text-align-last: justify</code>.</p>
<p>Automated creation of the markup would be necessary to make this technique more generally useful, but the <a href="https://mpetroff.net/files/pre-calculated-line-breaks-demo/">demo page</a> serves as a proof of concept. Ideally, browsers would implement an improved line breaking algorithm, which would make this technique obsolete.</p>
<p>Update 2024-05: Support for <code>text-align-last</code> was added in <a href="https://developer.apple.com/documentation/safari-release-notes/safari-16-release-notes">Safari 16</a>. Chrome 117 also <a href="https://developer.chrome.com/blog/css-text-wrap-pretty">added support</a> for <code>text-wrap: pretty</code>, but its implementation only looks at the last few lines of a paragraph to avoid orphans and does not improve the typesetting of the rest of the paragraph.</p>
<hr class="footnotes"><ol class="footnotes" style="list-style-type:decimal"><li id="fn1-3225"><p > Also see corresponding <a href="https://news.ycombinator.com/item?id=23282207">Hacker News discussion</a>. &nbsp;<a href="https://mpetroff.net/2020/05/pre-calculated-line-breaks-for-html-css/#rf1-3225" class="backlink" title="Return to footnote 1.">&#8617;</a></p></li><li id="fn2-3225"><p > Even Internet Explorer 6 supports this. &nbsp;<a href="https://mpetroff.net/2020/05/pre-calculated-line-breaks-for-html-css/#rf2-3225" class="backlink" title="Return to footnote 2.">&#8617;</a></p></li></ol>]]></content:encoded>
					
					<wfw:commentRss>https://mpetroff.net/2020/05/pre-calculated-line-breaks-for-html-css/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>A Case Study in Product Label Regressions</title>
		<link>https://mpetroff.net/2020/03/a-case-study-in-product-label-regressions/</link>
					<comments>https://mpetroff.net/2020/03/a-case-study-in-product-label-regressions/#respond</comments>
		
		<dc:creator><![CDATA[Matthew Petroff]]></dc:creator>
		<pubDate>Sun, 29 Mar 2020 22:02:24 +0000</pubDate>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[canned vegetables]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[Giant]]></category>
		<category><![CDATA[labels]]></category>
		<category><![CDATA[Stop & Shop]]></category>
		<guid isPermaLink="false">https://mpetroff.net/?p=3195</guid>

					<description><![CDATA[Sometime last year, the Shop &#038; Shop and Giant (of Landover) grocery store chains began introducing redesigned packaging for their store brand products. The two chains share a parent company and share branding, so the labels only use the shared &#8230; <a href="https://mpetroff.net/2020/03/a-case-study-in-product-label-regressions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><span class="dropcap">S</span>ometime last year, the Shop &#038; Shop and Giant (of Landover) grocery store chains began introducing redesigned packaging for their store brand products. The two chains share a parent company and share branding, so the labels only use the shared logo without a brand name. The old label designs heavily featured a white background, which made them easy to locate in the store.<sup id="rf1-3195"><a href="https://mpetroff.net/2020/03/a-case-study-in-product-label-regressions/#fn1-3195" title=" It&#8217;s the closest I&#8217;ve seen to what&#8217;s suggested by &lt;a href=&quot;https://xkcd.com/993/&quot;&gt;xkcd: Brand Identity&lt;/a&gt;. " rel="footnote">1</a></sup> The new brand identity is less distinct, but whether it&#8217;s better or worse is a matter of taste. However, there are specific design decisions that were made on some of the labels that have fundamental issues.</p>
<p>In particular, I will focus on the labels for canned vegetables. As one would expect, both the old and new label designs feature the name of the vegetable along with a picture of a &#8220;serving suggestion.&#8221; Since many vegetables are similar in color, it is often easier to find one&#8217;s desired vegetable on the shelf by looking for the name, especially when a particular vegetable comes in multiple variants, such as green beans (whole, cut, diagonally cut, and French style). The old design featured a plain sans-serif font in a dark color on a solid white background, resulting in good contrast and readability. The new design, however, is a clear regression; it trades the consistent, easily readable font for a hodgepodge of different heavily-stylized display fonts on a busier background with lower contrast, which results in much worse readability. This loss of readability makes it take longer to locate a particular product on the shelf.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2020/03/ahold-green-beans-no-salt-added-scaled.jpg" title="No salt added green beans cans: old design on left, new design on right" data-sbox="3195"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2020/03/ahold-green-beans-no-salt-added-640x427.jpg" alt="No salt added green beans cans: old design on left, new design on right" width="640" height="427" class="aligncenter size-large wp-image-3201" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2020/03/ahold-green-beans-no-salt-added-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2020/03/ahold-green-beans-no-salt-added-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2020/03/ahold-green-beans-no-salt-added-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2020/03/ahold-green-beans-no-salt-added-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2020/03/ahold-green-beans-no-salt-added-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a><span id="more-3195"></span></p>
<p>Many of the vegetables come in three variants, regular (&#8220;full salt&#8221;), low sodium, and no salt added. In the old designs, these were marked using text in a brightly-colored oval. Blue was used for <em>no salt added</em>, and red was used for <em>low sodium</em>; the <em>regular</em> variant did not include an oval. This design allowed one to quickly differentiate between the variants on the shelf. With the new design, these colored ovals were eliminated. The <em>low sodium</em> variant trades the black text on the <em>regular</em> variant for bright blue text and a distinctive blue bar above the text with a clearly readable &#8220;low sodium&#8221; label. This is an improvement over the old design as it makes the labeling more distinctive and easier to differentiate. Unfortunately, the same is not true for the <em>no salt added</em> variant, which, for some inexplicable reason, is labeled the same as the <em>regular</em> variant except for a small, blandly-colored circular badge in the corner. Instead, it should have been labeled with a distinctive color and a bar with a clearly readable &#8220;no salt added&#8221; label, similar to the <em>low sodium variant</em>, except using a different color.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2020/03/ahold-green-beans-low-sodium-scaled.jpg" title="Low sodium green beans cans: old design on left, new design on right" data-sbox="3195"><img loading="lazy" decoding="async" src="https://cdn0.mpetroff.net/wp-content/uploads/2020/03/ahold-green-beans-low-sodium-640x427.jpg" alt="Low sodium green beans cans: old design on left, new design on right" width="640" height="427" class="aligncenter size-large wp-image-3202" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2020/03/ahold-green-beans-low-sodium-640x427.jpg 640w, https://cdn0.mpetroff.net/wp-content/uploads/2020/03/ahold-green-beans-low-sodium-300x200.jpg 300w, https://cdn0.mpetroff.net/wp-content/uploads/2020/03/ahold-green-beans-low-sodium-1536x1024.jpg 1536w, https://cdn0.mpetroff.net/wp-content/uploads/2020/03/ahold-green-beans-low-sodium-2048x1365.jpg 2048w, https://cdn0.mpetroff.net/wp-content/uploads/2020/03/ahold-green-beans-low-sodium-1280x853.jpg 1280w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>The font size was increased for the ingredients list, which is one of the only improvements in the new designs.</p>
<hr class="footnotes"><ol class="footnotes" style="list-style-type:decimal"><li id="fn1-3195"><p > It&#8217;s the closest I&#8217;ve seen to what&#8217;s suggested by <a href="https://xkcd.com/993/">xkcd: Brand Identity</a>. &nbsp;<a href="https://mpetroff.net/2020/03/a-case-study-in-product-label-regressions/#rf1-3195" class="backlink" title="Return to footnote 1.">&#8617;</a></p></li></ol>]]></content:encoded>
					
					<wfw:commentRss>https://mpetroff.net/2020/03/a-case-study-in-product-label-regressions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Content Delivery Network via Amazon Web Services: CloudFront: cdn0.mpetroff.net
Minified using Disk

Served from: mpetroff.net @ 2026-03-29 04:22:15 by W3 Total Cache
-->