<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Wordpress on blog.iankulin.com</title><link>https://blog.iankulin.com/tags/wordpress/</link><description>Recent content in Wordpress on blog.iankulin.com</description><generator>Hugo</generator><language>en-AU</language><lastBuildDate>Mon, 30 Dec 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.iankulin.com/tags/wordpress/index.xml" rel="self" type="application/rss+xml"/><item><title>Moving a domain from Wordpress</title><link>https://blog.iankulin.com/moving-a-domain-from-wordpress/</link><pubDate>Mon, 30 Dec 2024 00:00:00 +0000</pubDate><guid>https://blog.iankulin.com/moving-a-domain-from-wordpress/</guid><description>&lt;p&gt;I love the convenience of a hosted blog on wordpress.com, but one of the justifications for my &amp;lsquo;investment&amp;rsquo; in homelab hardware and learning time was that I&amp;rsquo;d reduce my spend on hosted platforms by self-hosting them. I&amp;rsquo;ve already quit Evernote and dropped back to the free plan on Dropbox by building systems to replace them for less money and more data sovereignty. And now, the recent &lt;a href="https://techcrunch.com/2024/09/25/wordpress-org-bans-wp-engine-blocks-it-from-accessing-its-resources/"&gt;Wordpress drama&lt;/a&gt; has made me uneasy about Matt having control of domains I&amp;rsquo;ve got registered with wordpress.&lt;/p&gt;
&lt;p&gt;For the moment, I&amp;rsquo;m leaving content there, but I&amp;rsquo;d like to keep my options open for the future, so that means moving any domains to an independent registrar, in my case, &lt;a href="https://porkbun.com/"&gt;porkbun&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Wordpress have a &lt;a href="https://wordpress.com/support/domains/transfer-domain-registration/"&gt;good article&lt;/a&gt; explaining their part of the process (kudos to them for not trying to make it difficult) but I ran into a bump not mentioned there, so it&amp;rsquo;s worth writing out the steps for future travelers.&lt;/p&gt;
&lt;h4 id="make-sure-your-email-is-correct"&gt;Make sure your email is correct&lt;/h4&gt;
&lt;p&gt;It probably is fine, but this process is going to rely on you having control of the email address attached to your wordpress account. If you don&amp;rsquo;t currently receive the emails for renewals etc, then you need to fix that first. Registrars like to be careful that they are not giving away people&amp;rsquo;s domains to bad actors, so there will be a bit of a &amp;ldquo;verify you own this email that is the contact for the domain&amp;rdquo; dance as part of this process.&lt;/p&gt;
&lt;h4 id="be-settled"&gt;Be settled&lt;/h4&gt;
&lt;p&gt;For reasons outside WordPress&amp;rsquo;s control, you can&amp;rsquo;t be moving domains around all the time. It needs to have been with the current registrar for 60 days. If not, you&amp;rsquo;ll just need to wait that out.&lt;/p&gt;
&lt;p&gt;Even if that&amp;rsquo;s not your situation, still keep in mind this transfer will take about a week. There are ways of pointing a domain elsewhere a bit quicker, but actually moving it takes five days or more.&lt;/p&gt;
&lt;h4 id="turn-the-transfer-lock-off"&gt;Turn the transfer lock off&lt;/h4&gt;
&lt;p&gt;Most domain registrars allow you to (probably be default) &lt;a href="https://www.icann.org/resources/pages/locked-2013-05-03-en"&gt;&amp;rsquo;lock&amp;rsquo; a domain&lt;/a&gt; to prevent changes. To get to this on Wordpress, go into your site, and look in &amp;ldquo;Upgrades&amp;rdquo; | &amp;ldquo;Domains&amp;rdquo; for &amp;ldquo;Transfer&amp;rdquo;. There&amp;rsquo;s a toggle to turn that off.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.iankulin.com/images/screen-shot-2024-11-09-at-5.19.45-pm.png"&gt;&lt;img src="https://blog.iankulin.com/images/screen-shot-2024-11-09-at-5.19.45-pm.png" width="900" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is also where you can request the &amp;ldquo;Authorization Code&amp;rdquo;. This is the key that you&amp;rsquo;ll take over to your new domain registrar. But don&amp;rsquo;t do that yet - that&amp;rsquo;s what I did and got this:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.iankulin.com/images/screen-shot-2024-11-09-at-5.29.57-pm.png"&gt;&lt;img src="https://blog.iankulin.com/images/screen-shot-2024-11-09-at-5.29.57-pm.png" width="900" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Lol. What?! Someone objected by fax to me moving my domain? I feel like the only people who could have done that to this transfer I initiated two seconds ago could be Wordpress.&lt;/p&gt;
&lt;h4 id="turn-private-registration-off"&gt;Turn Private Registration off&lt;/h4&gt;
&lt;p&gt;To their credit (again) this was explained in another email shortly after:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.iankulin.com/images/screen-shot-2024-11-16-at-7.02.20-am.png"&gt;&lt;img src="https://blog.iankulin.com/images/screen-shot-2024-11-16-at-7.02.20-am.png" width="900" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ah, so I need to turn &amp;lsquo;private registration&amp;rsquo; off. This is the mechanism that hides your personal details as a domain owner from scammers and grifters. Apparently it has to be &amp;lsquo;off&amp;rsquo; to transfer the site. This is not a source of stress to me, as soon as the domain is transferred to PorkBun, the apparent owner of the domain when someone does a &lt;code&gt;whois&lt;/code&gt; on it, will be &amp;ldquo;Private By Design LLC&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Once again, this setting is in the Wordpress site settings under &amp;ldquo;Domain&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.iankulin.com/images/screen-shot-2024-11-09-at-5.32.29-pm.png"&gt;&lt;img src="https://blog.iankulin.com/images/screen-shot-2024-11-09-at-5.32.29-pm.png" width="900" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="get-your-authorization-code"&gt;Get your Authorization Code&lt;/h4&gt;
&lt;p&gt;Now is the time to hit the button in Wordpress to request the &amp;ldquo;Authorization Code&amp;rdquo;. It will be sent to the email attached to the domain. This is the hex string you&amp;rsquo;ll need to take to your domain registrar to request the transfer.&lt;/p&gt;
&lt;h4 id="start-the-transfer"&gt;Start the transfer&lt;/h4&gt;
&lt;p&gt;I guess every domain registrar will have a slightly different set up. With porkbun, I just went to &lt;a href="https://porkbun.com/transfer"&gt;https://porkbun.com/transfer&lt;/a&gt; and entered the domain name and the authorisation code. They did charge me $11 for this, then advised that the transfer would take about five days. Maybe that&amp;rsquo;s built into the domain transfer system to allow more people to object by fax.&lt;/p&gt;
&lt;p&gt;On the porkbun status page for the transfer, I was able to set up an A record to the wordpress IP where by blog still lives, so that the second the transfer went through, it would be set up to direct traffic there with a minimal downtime. I guess in this case that would have no effect since the wordpress name servers would still be in place (see further down), but it&amp;rsquo;s a good idea since often when you&amp;rsquo;re moving a domain, the losing registrar would be deleting your name-server entry.&lt;/p&gt;
&lt;img src="https://blog.iankulin.com/images/5later.jpg" width="300" alt=""&gt;
&lt;p&gt;Once the email came through on the sixth day, I checked the domain was still pointing to the blog, and it was all good. But we&amp;rsquo;re not done yet.&lt;/p&gt;
&lt;h4 id="change-the-nameservers"&gt;Change the nameservers&lt;/h4&gt;
&lt;p&gt;Although I&amp;rsquo;ve now got control of the domain, we&amp;rsquo;re still using WordPress&amp;rsquo;s nameservers. That&amp;rsquo;s not a big deal for me, but I do want to bring them over to porkbun so it&amp;rsquo;s the same setup as all my other domains. Before I nuke the wordpress nameservers, we need to check what records are in it.&lt;/p&gt;
&lt;p&gt;First step is to see who are the nameservers for a domain. We do this with the &lt;code&gt;dig NS &amp;lt;domain-name&amp;gt;&lt;/code&gt; command:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.iankulin.com/images/screen-shot-2024-11-16-at-8.27.37-am.png"&gt;&lt;img src="https://blog.iankulin.com/images/screen-shot-2024-11-16-at-8.27.37-am.png" width="900" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In this example the name servers are &lt;code&gt;b.iana-servers.net&lt;/code&gt; and &lt;code&gt;a.iana-servers.net&lt;/code&gt; In the case of your wordpress blog they are probably &lt;code&gt;ns1.wordpress.com&lt;/code&gt; etc.&lt;/p&gt;
&lt;p&gt;Once you know the name of the nameservers you can query them with the domain name to see what the records are. The most important will be the A records, but you probably want to go ahead and check the MX (mail) and TXT records as well so you can reproduce them on the new registrar.&lt;/p&gt;
&lt;p&gt;This is done with &lt;code&gt;dig @&amp;lt;name-server&amp;gt; &amp;lt;domain-name&amp;gt; &amp;lt;record-type&amp;gt;&lt;/code&gt; for example &lt;code&gt;dig @b.iana-servers.net example.com A&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.iankulin.com/images/screen-shot-2024-11-16-at-8.33.21-am.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;In this case there is a single A record pointing the domain to 93.184.215.14 We need to note all of these to reproduce them in the domain settings in your new registrar. Again this is going to be different for each one, but if you&amp;rsquo;ve ever pointed a domain anywhere, you&amp;rsquo;ll know how to do it on yours.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.iankulin.com/images/screen-shot-2024-11-16-at-8.40.11-am-1.png"&gt;&lt;img src="https://blog.iankulin.com/images/screen-shot-2024-11-16-at-8.40.11-am-1.png" width="900" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="change-the-nameservers-1"&gt;Change the nameservers&lt;/h4&gt;
&lt;p&gt;Now those records are all in, it&amp;rsquo;s time to change the nameservers. There will be an option somewhere in your domain management tools at the registrar to allow for this. In my case, I&amp;rsquo;ll be switching to porkbun&amp;rsquo;s default ones.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.iankulin.com/images/screen-shot-2024-11-16-at-8.45.30-am.png"&gt;&lt;img src="https://blog.iankulin.com/images/screen-shot-2024-11-16-at-8.45.30-am.png" width="900" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="profit"&gt;Profit&lt;/h4&gt;
&lt;p&gt;That all was a bit of a dance, but it feels good to be in control of the domain so I can redirect it in the future if needed.&lt;/p&gt;
&lt;p&gt;Edit from the future: This (pointing the domain I now controlled at my wordpress.com blog) died after a couple of weeks. I&amp;rsquo;m not sure if they changed something, but when I went into the wordpress settings to check it was still set up to use an external domain name, it greeted me with an &amp;lsquo;upgrade&amp;rsquo; offer to turn that on at an annual cost greater than my old plan. So, I had to hurriedly set up a wordpress instance on a VPS - which turned out to be not much drama and will probably be the subject of a future post.&lt;/p&gt;</description></item><item><title>Wordpress Code Blocks</title><link>https://blog.iankulin.com/wordpress-code-blocks/</link><pubDate>Wed, 21 Sep 2022 00:00:00 +0000</pubDate><guid>https://blog.iankulin.com/wordpress-code-blocks/</guid><description>&lt;p&gt;Non-iOS post warning :- )&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not really happy with the way I&amp;rsquo;m sharing code in these posts. I started off with the regular Wordpress code blocks:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#81a1c1;font-weight:bold"&gt;func&lt;/span&gt; isPossible&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;word&lt;span style="color:#eceff4"&gt;:&lt;/span&gt; &lt;span style="color:#bf616a"&gt;String&lt;/span&gt;&lt;span style="color:#eceff4"&gt;)&lt;/span&gt; &lt;span style="color:#81a1c1"&gt;-&amp;gt;&lt;/span&gt; Bool &lt;span style="color:#eceff4"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#81a1c1;font-weight:bold"&gt;var&lt;/span&gt; tempWord &lt;span style="color:#81a1c1"&gt;=&lt;/span&gt; rootWord
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#81a1c1;font-weight:bold"&gt;for&lt;/span&gt; letter &lt;span style="color:#81a1c1;font-weight:bold"&gt;in&lt;/span&gt; word &lt;span style="color:#eceff4"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#81a1c1;font-weight:bold"&gt;if&lt;/span&gt; let pos &lt;span style="color:#81a1c1"&gt;=&lt;/span&gt; tempWord&lt;span style="color:#81a1c1"&gt;.&lt;/span&gt;firstIndex&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;of&lt;span style="color:#eceff4"&gt;:&lt;/span&gt; letter&lt;span style="color:#eceff4"&gt;)&lt;/span&gt; &lt;span style="color:#eceff4"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; tempWord&lt;span style="color:#81a1c1"&gt;.&lt;/span&gt;remove&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;at&lt;span style="color:#eceff4"&gt;:&lt;/span&gt; pos&lt;span style="color:#eceff4"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#eceff4"&gt;}&lt;/span&gt; &lt;span style="color:#81a1c1;font-weight:bold"&gt;else&lt;/span&gt; &lt;span style="color:#eceff4"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#81a1c1;font-weight:bold"&gt;return&lt;/span&gt; &lt;span style="color:#81a1c1"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#eceff4"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#eceff4"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#81a1c1;font-weight:bold"&gt;return&lt;/span&gt; &lt;span style="color:#81a1c1"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#eceff4"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;These seem a bit large to me, but it comes with a font size choice, which I like setting to &amp;ldquo;Tiny&amp;rdquo;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#81a1c1;font-weight:bold"&gt;func&lt;/span&gt; isPossible&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;word&lt;span style="color:#eceff4"&gt;:&lt;/span&gt; &lt;span style="color:#bf616a"&gt;String&lt;/span&gt;&lt;span style="color:#eceff4"&gt;)&lt;/span&gt; &lt;span style="color:#81a1c1"&gt;-&amp;gt;&lt;/span&gt; Bool &lt;span style="color:#eceff4"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#81a1c1;font-weight:bold"&gt;var&lt;/span&gt; tempWord &lt;span style="color:#81a1c1"&gt;=&lt;/span&gt; rootWord
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#81a1c1;font-weight:bold"&gt;for&lt;/span&gt; letter &lt;span style="color:#81a1c1;font-weight:bold"&gt;in&lt;/span&gt; word &lt;span style="color:#eceff4"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#81a1c1;font-weight:bold"&gt;if&lt;/span&gt; let pos &lt;span style="color:#81a1c1"&gt;=&lt;/span&gt; tempWord&lt;span style="color:#81a1c1"&gt;.&lt;/span&gt;firstIndex&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;of&lt;span style="color:#eceff4"&gt;:&lt;/span&gt; letter&lt;span style="color:#eceff4"&gt;)&lt;/span&gt; &lt;span style="color:#eceff4"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; tempWord&lt;span style="color:#81a1c1"&gt;.&lt;/span&gt;remove&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;at&lt;span style="color:#eceff4"&gt;:&lt;/span&gt; pos&lt;span style="color:#eceff4"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#eceff4"&gt;}&lt;/span&gt; &lt;span style="color:#81a1c1;font-weight:bold"&gt;else&lt;/span&gt; &lt;span style="color:#eceff4"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#81a1c1;font-weight:bold"&gt;return&lt;/span&gt; &lt;span style="color:#81a1c1"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#eceff4"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#eceff4"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#81a1c1;font-weight:bold"&gt;return&lt;/span&gt; &lt;span style="color:#81a1c1"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#eceff4"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;There&amp;rsquo;s a reason why coloured syntax highlighting exists in IDE&amp;rsquo;s, so obviously I&amp;rsquo;d want that for my posts. If you move to a paid tier on Wordpress, as well as eliminating the advertisements from your posts, you get a new coloured code block called &amp;ldquo;SyntaxHighlighter Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;func isPossible(word: String) -&amp;gt; Bool {
 var tempWord = rootWord
 for letter in word {
 if let pos = tempWord.firstIndex(of: letter) {
 tempWord.remove(at: pos)
 } else {
 return false
 }
 }
 return true
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It has a few options, line numbers, making links clickable, and highlighting lines (as I&amp;rsquo;ve done above), but no size, and no control of the font or colours, which are so dreadful I&amp;rsquo;ve mostly given up on using them. It does have a number of languages to choose from which is impressive, but the highlighting is not as good as Xcode, here&amp;rsquo;s how that snippet looks with the theme I&amp;rsquo;m using.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.iankulin.com/images/screen-shot-2022-09-18-at-7.34.14-am.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;So the Wordpress block is picking out keywords and types, but not properties. In the ideal world my code examples here would look exactly like this. I could just use screenshots like this, but there&amp;rsquo;s a couple of minor issues with that. The first is the problems with scaling on different devices, and the second is that non-Apple viewers don&amp;rsquo;t have a simple way of selecting text from an image.&lt;/p&gt;
&lt;p&gt;The idea solution would be that the SyntaxHighlighter code block had a few more options. Wordpress is known for the large number of plugins available, so there&amp;rsquo;s possibly a plugin that solves this problem, so a possible solution is for me to learn more about Wordpress which is not a big priority for me at the moment. Related to that is the possibility of using &amp;ldquo;Additional CSS classes&amp;rdquo; which is one of the options for the code block.&lt;/p&gt;
&lt;p&gt;I do note that when code is copied out from Xcode it includes the font and colour information (I guess as rich text?). If I copy the code above and pasted it into word and change the background colour, it looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.iankulin.com/images/screen-shot-2022-09-18-at-7.43.31-am.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;So that raises the prospect of pasting it into a different Wordpress block that displays rich text, but if there is such a thing, I can&amp;rsquo;t see how to access it.&lt;/p&gt;
&lt;p&gt;HTML has evolved in part to solve this sort of problem, and there is an HTML block for Wordpress. If I save the Word doc above into HTML and paste it into the HTML block I get this, which is about 75% of the way towards what I&amp;rsquo;m after.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;func&lt;/strong&gt; isPossible(word: String) -&amp;gt; Bool {&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;var&lt;/strong&gt; tempWord = rootWord&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;for&lt;/strong&gt; letter &lt;strong&gt;in&lt;/strong&gt; word {&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;if&lt;/strong&gt; &lt;strong&gt;let&lt;/strong&gt; pos = tempWord.firstIndex(of: letter) {&lt;/p&gt;
&lt;p&gt;tempWord.remove(at: pos)&lt;/p&gt;
&lt;p&gt;} &lt;strong&gt;else&lt;/strong&gt; {&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;return&lt;/strong&gt; &lt;strong&gt;false&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;return&lt;/strong&gt; &lt;strong&gt;true&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;The HTML source is not pretty, but I can&amp;rsquo;t see why this couldn&amp;rsquo;t work if I wrote something to convert the pasted rich text into nicer HTML that looks closer to the Xcode IDE version.&lt;/p&gt;
&lt;p&gt;Other people have solved this problem. I notice Paul Hudson has exactly the presentation I&amp;rsquo;d like on his pages:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.iankulin.com/images/screen-shot-2022-09-18-at-8.11.37-am.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;His HTML for this (correctly) leaves the work for the CSS. I had a quick look, and other than knowing it was written by &lt;a href="https://getbootstrap.com/"&gt;BootStrap&lt;/a&gt;, it was mostly incomprehensible to me. Better HTML and CSS is on my list of coding goals, but my current level of knowledge is stuck on 1996 HTML. I&amp;rsquo;d be happy to chuck up a page with some blinking text, a visitor counter and an under construction gif for any clients looking for that.&lt;/p&gt;</description></item></channel></rss>