<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Oli Nelson — Words</title><description>Occasional writing by Oli Nelson on software, AI, building products, and music.</description><link>https://olinelson.com/</link><item><title>Human Programmers - a manifesto</title><link>https://olinelson.com/words/human-programmers-a-manifesto.html</link><guid isPermaLink="true">https://olinelson.com/words/human-programmers-a-manifesto.html</guid><description>In a world of abundance, the answer is curation . When the barriers to entry are lowered, the differentiator is taste . When machines are more capable than…</description><pubDate>Sun, 03 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;In a world of abundance, the answer is &lt;strong&gt;curation&lt;/strong&gt;. When the barriers to entry are lowered, the differentiator is &lt;strong&gt;taste&lt;/strong&gt;. When machines are more capable than ever, &lt;strong&gt;personality&lt;/strong&gt; is everything. When everyone has a team of AI yes-men at their beck and call, you need someone who says &lt;strong&gt;NO&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://humanprogrammers.com/&quot;&gt;&lt;strong&gt;Human Programmers&lt;/strong&gt;&lt;/a&gt; is a community and &lt;em&gt;unDirectory&lt;/em&gt; of hand-picked software professionals.&lt;/p&gt;
&lt;p&gt;Digital Renaissance men and women with &lt;strong&gt;taste&lt;/strong&gt;, &lt;strong&gt;purpose&lt;/strong&gt;, and &lt;strong&gt;opinions&lt;/strong&gt; — humans dedicated to building things that matter, crafted with care and intention.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;First principles&lt;/strong&gt; over ‘Best practice’&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ability&lt;/strong&gt; over Credentials&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evidence&lt;/strong&gt; over Experience&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://humanprogrammers.com/&quot;&gt;&lt;strong&gt;Human Programmers&lt;/strong&gt;&lt;/a&gt; will be launching &lt;strong&gt;soon&lt;/strong&gt; with a list of just &lt;strong&gt;50 hand-picked software professionals&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The selection process is entirely, and unapologetically, &lt;strong&gt;subjective&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;No paywall. Anyone can browse the unDirectory.&lt;/p&gt;
&lt;p&gt;We run on an honesty system: If you or your company hires one of our humans, we ask for a one-time &lt;strong&gt;thank you&lt;/strong&gt; payment of &lt;strong&gt;$200 USD&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;We also welcome sponsorships from like-minded organizations and individuals.&lt;/p&gt;
&lt;p&gt;👉 &lt;a href=&quot;https://humanprogrammers.com/become_a_human&quot;&gt;&lt;strong&gt;Become a Human&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>The Gift of Abstraction</title><link>https://olinelson.com/words/the-gift-of-abstraction.html</link><guid isPermaLink="true">https://olinelson.com/words/the-gift-of-abstraction.html</guid><description>When I began taking drum lessons from David Goodman everything changed for me. I had had wonderful drum teachers previously, but there was something about…</description><pubDate>Fri, 07 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I began taking drum lessons from &lt;a href=&quot;https://davegoodman.com.au&quot;&gt;David Goodman&lt;/a&gt; everything changed for me.&lt;/p&gt;
&lt;p&gt;I had had wonderful drum teachers previously, but there was something about Dave’s approach that really clicked.&lt;/p&gt;
&lt;p&gt;There’s a strong practice of transcription in Jazz education - choosing a fragment of a recording that you love and writing down what the musician is playing, by ear. The aim being to learn it and be able to reproduce it verbatim.&lt;/p&gt;
&lt;p&gt;Dave loved and actively encouraged transcription but he wouldn’t stop there. He would analyse it - attempt to zoom out and approximate patterns. With this approach a drum solo by Art Blakey was not an amorphous blob, it was the construction of a mind - building blocks of ideas joined together through a flow state. The individual fragments or ‘licks’ were secondary to the underlying idea behind it. If you could devise a system with rules and constraints that could reliably recreate the same effect, you could feed in all sorts of new material and produce endless variations of the initial lick of inspiration.&lt;/p&gt;
&lt;p&gt;I like to think of this process through the analogy of being the company Phillips and scrambling to create your own response to the Sony Walkman in 1979. The steps would be something like this.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;How does this product work?&lt;/li&gt;
&lt;li&gt;How can we copy this exactly?&lt;/li&gt;
&lt;li&gt;How can we create our own version of this and reliably reproduce it at scale?!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Step three is undoubtedly the most difficult. As Elon Musk reflected when scaling Tesla Motors:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The product is not the product, the mass-produced version of the product, the supply chain, and the manufacturing process are the product&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is also true for learning. To learn is not to know a thing. To truly learn you must internalise it. You must be able to break it down to it’s smallest components, recreate it with variation, categorise it, and generalise it. Is it integrated with other ideas? Can It be recalled on demand, under pressure?&lt;/p&gt;
&lt;p&gt;Abstraction is an essential tool of this process. It wasn’t until I started programming, some years later that I realised this can be applied globally.&lt;/p&gt;
&lt;p&gt;It’s common for non musicians to ask drummers questions like “how can you make your limbs move completely independently from one another?”. I think they imagine a multi-track recorder with a track representing each limb. I used to respond, somewhat facetiously, “how can you keep balance on both feet and hold a conversation with me at the same time?!”. &lt;/p&gt;
&lt;p&gt;There was a time in all of our lives when keeping balance required almost all of our available mental focus. Yet, it’s taken for granted that this is a skill that everyone will master to the extent that It can be combined with almost all other skills without even thinking. This isn’t because we’ve mastered the ability to think “learn forward - lean backwards - lean left - lean right etc…” at a ferocious speed. These smaller skills have been bundled and abstracted into larger ones. “Stand” is now a pointer to a series of actions.&lt;/p&gt;
&lt;p&gt;Jordan Peterson often says “Learning how to write is like learning how to think”. This is especially true for writing code. Concepts like abstraction are literally represented with features of programming languages. When you work with other people you realise that each individual sees the world through their own lens, and thus when tasked with modelling an aspect of it in the virtual realm, will often structure things quite differently to you.&lt;/p&gt;
&lt;p&gt;As I enter a new season of renewed creative endeavours I remain eternally grateful to Dave for showing me the way.&lt;/p&gt;</content:encoded></item><item><title>How did I get here?</title><link>https://olinelson.com/words/how-did-i-get-here.html</link><guid isPermaLink="true">https://olinelson.com/words/how-did-i-get-here.html</guid><description>From age ten my sole goal in life was to be a professional Jazz drummer. I’m not exaggerating. ‘Jazz Drummer’ was effectively my conjoined twin, forcible…</description><pubDate>Fri, 03 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;From age ten my sole goal in life was to be a professional Jazz drummer. I’m not exaggerating. ‘Jazz Drummer’ was effectively my conjoined twin, forcible separation was not possible without certain death. &lt;/p&gt;
&lt;p&gt;This modus vivendi, while intense, served me well through my teenage years and early twenties. I won some awards, performed around Australia with some of my heroes, and moved from my home town of Sydney, Australia to New York City.&lt;/p&gt;
&lt;p&gt;My summer of discontent&lt;/p&gt;
&lt;p&gt;I had just finished schlepping my drums all the way from Harlem to the West Village and back. It was a hot and sticky July evening and I should have known that the empty subway carriage that I picked on the way home was uninhabited for a reason, no AC. After finally making it through the front door of our rented, over priced, (mercifully ground floor) apartment, I sat on the couch clutching the fruits of the evenings proceedings, a crumpled 20 dollar bill in tips.&lt;/p&gt;
&lt;p&gt;I liked computers and once looked at the code for a MySpace theme. That was my only claim to any ‘programming’ expertise, yet something made me whip out my credit card and pay for a 3 month programming bootcamp.&lt;/p&gt;
&lt;p&gt;Victory through redefinition&lt;/p&gt;
&lt;p&gt;Programming is unnatural. In a good way. What other discipline gives you the same satisfaction as the carpenter or stone mason but unburdens you from almost all constraints of the physical world?. It seems to me the only real limits are one’s ability to reason.&lt;/p&gt;
&lt;p&gt;I’m convinced that there is no greater parallel to learning how to play an instrument than learning how to code. Any accomplished musician will tell you that to truly learn something you must allow the implicit process of repetition and muscle memory to dove tail with theoretical understanding.&lt;/p&gt;
&lt;p&gt;Programming stole my attention not only because it allowed me to “put food on my family” - GWB. It unlocked my ability to truly think.&lt;/p&gt;
&lt;p&gt;My conjoined twin, Jazz Dummer is still here, but it has become more abstract. It’s the part of myself that gains satisfaction from constant learning, creativity, building, and performance. Admittedly coding has a different weighting to playing the drums in a club, but all the aspects are there and just as real.&lt;/p&gt;</content:encoded></item><item><title>Ruby Procs and Lambdas for the Javascript developer</title><link>https://olinelson.com/words/ruby-procs-and-lambdas-for-the-javascript-developer.html</link><guid isPermaLink="true">https://olinelson.com/words/ruby-procs-and-lambdas-for-the-javascript-developer.html</guid><description>If you&apos;re like me and are one of the many &quot;Javascript everywhere&quot; developers joining the Ruby on Rails Renaissance you may be a little confused by Blocks,…</description><pubDate>Sun, 29 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you’re like me and are one of the many “Javascript everywhere” developers joining the Ruby on Rails Renaissance you may be a little confused by Blocks, Procs, and Lambdas, I know I was.&lt;/p&gt;
&lt;h1&gt;Functions vs Methods&lt;/h1&gt;
&lt;p&gt;To back up a little bit, let’s start where the differences between Ruby and Javascript are fairly minor. Consider these two functions/methods.&lt;/p&gt;
&lt;p&gt;Javascript&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; generateMeaningOfLife&lt;/span&gt;&lt;span&gt;(){&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  return&lt;/span&gt;&lt;span&gt; 42&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ruby&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;def&lt;/span&gt;&lt;span&gt; generate_meaning_of_life&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  42&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Very simple to wrap your head around. The only difference is we have to use the ‘return’ keyword in Javascript for our function to spit anything out whereas Ruby automatically returns the last thing defined in the method. This is known as ‘implicit return’.&lt;/p&gt;
&lt;h1&gt;So you can’t pass around Ruby methods?&lt;/h1&gt;
&lt;p&gt;In Javascript I am accustomed to passing around functions just like any other variable. I like having as little ‘noise’ in the conditional logic as possible as I find it nice to read.&lt;/p&gt;
&lt;p&gt;Javascript&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; signupUser&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;email&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; emailIsValid&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; () &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; validationService.emails.&lt;/span&gt;&lt;span&gt;validate&lt;/span&gt;&lt;span&gt;(email)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; sendUserWelcomeEmail&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; () &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; emailService.&lt;/span&gt;&lt;span&gt;welcome&lt;/span&gt;&lt;span&gt;(email)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; error&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; () &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; console.&lt;/span&gt;&lt;span&gt;error&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Bad email!&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  emailIsValid &lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;span&gt; sendUserWelcomeEmail&lt;/span&gt;&lt;span&gt;() &lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; error&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So how do you do something like this in Ruby? Well I was surprised to find out you can’t just assign a method to a variable. In Javascript a function only ‘runs’ when you ‘call’ it using the parentheses ’()’. But in Ruby, methods don’t need this. The answer is Procs &amp;amp; Lambdas.&lt;/p&gt;
&lt;h1&gt;Introducing Procedures (Procs)&lt;/h1&gt;
&lt;p&gt;Proc’s can be thought of as similar to javascript arrow functions. You can essentially define a method and assign it to a variable so it can be passed around. To translate the function above &lt;strong&gt;literally&lt;/strong&gt; (This is a pretty contrived example) into Ruby we can do the following.&lt;/p&gt;
&lt;p&gt;Ruby&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;def&lt;/span&gt;&lt;span&gt; signup_user&lt;/span&gt;&lt;span&gt;(email)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  email_is_valid&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; proc&lt;/span&gt;&lt;span&gt; { validation_service.&lt;/span&gt;&lt;span&gt;emails&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;validate&lt;/span&gt;&lt;span&gt;(email)}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  send_user_welcome_email&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; proc&lt;/span&gt;&lt;span&gt; { email_service.&lt;/span&gt;&lt;span&gt;welcome&lt;/span&gt;&lt;span&gt;(email) }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  error&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; proc&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;puts&lt;/span&gt;&lt;span&gt; &quot;Bad email!&quot;&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  email_is_valid.&lt;/span&gt;&lt;span&gt;call&lt;/span&gt;&lt;span&gt; ?&lt;/span&gt;&lt;span&gt; send_user_welcome_email.&lt;/span&gt;&lt;span&gt;call&lt;/span&gt;&lt;span&gt; : error.&lt;/span&gt;&lt;span&gt;call&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The gotcha with Procs is that if you have a return statement it wont just return the value from the Proc, it will terminate the whole method that it’s called in. For example:&lt;/p&gt;
&lt;p&gt;Ruby&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# This method will return true not 42&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;def&lt;/span&gt;&lt;span&gt; generate_life_meaning&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  make_babies&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; proc&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; true&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  make_babies.&lt;/span&gt;&lt;span&gt;call&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  42&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The method above will not return 42 but will return true. Coming from Javascript this is unexpected.&lt;/p&gt;
&lt;h1&gt;Lambdas&lt;/h1&gt;
&lt;p&gt;Lambdas are the closest equivalent to arrow functions in Javascript. They are ‘special’ procs that have some additional features, especially the return behaviour. A return statement in a lambda will just spit out the value from the lambda it’s self, just like a regular Javascript arrow function.&lt;/p&gt;
&lt;p&gt;Ruby&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# This method returns 42&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;def&lt;/span&gt;&lt;span&gt; generate_life_meaning&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  make_babies&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; lambda&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; true&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  make_babies.&lt;/span&gt;&lt;span&gt;call&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  42&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Oli Nelson&lt;/p&gt;</content:encoded></item><item><title>Build and host your own link-in-bio page</title><link>https://olinelson.com/words/build-and-host-your-own-link-in-bio-page.html</link><guid isPermaLink="true">https://olinelson.com/words/build-and-host-your-own-link-in-bio-page.html</guid><description>This guide is intended for people who have zero or very little exposure to anything related to coding or web development. By the end of this you&apos;ll have your…</description><pubDate>Fri, 20 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This guide is intended for people who have &lt;strong&gt;zero&lt;/strong&gt; or very little exposure to anything related to coding or web development. By the end of this you’ll have your very own link-in-bio style website that you can host on your own domain for &lt;strong&gt;free&lt;/strong&gt;. You will also understand some fundamental basics about web development. If you run into any issues along the way feel free to send me an email at &lt;a href=&quot;mailto:olivernelson@hey.com&quot;&gt;olivernelson@hey.com&lt;/a&gt; , I’d be more than happy to help.&lt;/p&gt;
&lt;h1&gt;1. Create a free Github Account&lt;/h1&gt;
&lt;p&gt;Go to &lt;a href=&quot;https://github.com/&quot;&gt;Github&lt;/a&gt; and create a free account. Then go to &lt;a href=&quot;https://github.com/olinelson/pico-css-starter&quot;&gt;one of my repositories&lt;/a&gt;. A code repository can be thought of like a project or folder. In the context of GitHub, a code repository is a place ‘in the cloud’ where we can save our code files. Think Dropbox, but for coding. Once you are on the page of my repo ‘pico-css-starter’, click the ‘Use this template’ button then select ‘Create a new repository’.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MTczNzM4NSwicHVyIjoiYmxvYl9pZCJ9fQ--6fd2762bab7a9ab7855a850bb3cff2eaee1123cdbc6247c94c043600218d9f72/Screenshot%202024-12-21%20at%206.32.41%E2%80%AFam.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-1.png&quot; alt=&quot;Screenshot 2024-12-21 at 6.32.41 am.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MTczNzYzOSwicHVyIjoiYmxvYl9pZCJ9fQ--2dc6ab2ab1f9eea8d6b820cc07a2540069efca2384e1d5adb3d2237c8d1836f4/Screenshot%202024-12-21%20at%206.32.51%E2%80%AFam.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-2.png&quot; alt=&quot;Screenshot 2024-12-21 at 6.32.51 am.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is going to copy my repository to your account. Maybe name it something like ‘link-in-bio’.&lt;/p&gt;
&lt;h1&gt;2. Download VsCode&lt;/h1&gt;
&lt;p&gt;Follow &lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;this link&lt;/a&gt; to download and install an app called Visual Studio Code. It’s a very popular (and beginner friendly) text editor that we’re going to use to write the very simple bits of code required to get this going. Once you have VsCode installed on your computer, open it up and click the ‘Clone git repository’ option.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MTc0MTcwMiwicHVyIjoiYmxvYl9pZCJ9fQ--e4bcb6b48bdcd0c4ec54a0e05b30a82dfcfb14a3915250f52bf8c49d45a64f39/Screenshot%202024-12-21%20at%206.36.47%E2%80%AFam.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-3.png&quot; alt=&quot;Screenshot 2024-12-21 at 6.36.47 am.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This will prompt you to connect VsCode with Github. After clicking through the various steps you should be able to select the ‘link-in-bio’ repository from the drop down list. &lt;/p&gt;
&lt;p&gt;‘Cloning’ a repository means that we are going to download a copy of the repository to your computer. This gives you the ability to work on your project locally and keep it in sync with Github. This is great for backing up your work enables us to do various other things like host your site on the internet.&lt;/p&gt;
&lt;h1&gt;3. Get the lay of the land&lt;/h1&gt;
&lt;p&gt;Now that you have VsCode open and your repository cloned. Click the index.html file in the side bar to open it to start editing. You should see something that looks like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MTc0NjA5NSwicHVyIjoiYmxvYl9pZCJ9fQ--5c55f663c50000b6fce3fefe9fe9bf7e68a4bfac375f664955710ff0613ea139/Screenshot%202024-12-21%20at%206.41.06%E2%80%AFam.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-4.png&quot; alt=&quot;Screenshot 2024-12-21 at 6.41.06 am.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Welcome to HTML. Every website that you’ve ever been to uses it. In simple terms, HTML consists of simple building blocks that we can use to tell the browser what to display. You don’t need to know a lot about HTML to complete this project but it’s helpful if you understand some basic rules.&lt;/p&gt;
&lt;h1&gt;4. Some HTML basics&lt;/h1&gt;
&lt;p&gt;HTML is written with tags. A tag has a start, middle (or content), and end. For example, a tag that tells the browser to display a big heading looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;h1&amp;gt;My Website&amp;lt;/h1&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;“h1” stands for “heading one” and will render a heading on the page that looks something like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MDI1MTAxMCwicHVyIjoiYmxvYl9pZCJ9fQ--09caa36a349b67d1437aff9a21fd2388f22f372dca4074b9ae5648691a955b23/Screenshot%202024-12-20%20at%207.19.16%E2%80%AFam.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-5.png&quot; alt=&quot;Screenshot 2024-12-20 at 7.19.16 am.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Notice how the text “My Website” is placed in between &quot;&lt;/p&gt;
&lt;h1&gt;&quot; and ”&lt;/h1&gt;
&lt;p&gt;”. A starting html tag always starts with ”&amp;lt;” and an ending tag always starts with “&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;p&amp;gt;It was the best of times, it was the worst of times&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;5. View your webpage locally&lt;/h1&gt;
&lt;p&gt;We can use the web browser to display your local html page. This is essential as we need to get visual feedback on the changes that we’re going to make. Right-click (or control click) on the index.html file in the sidebar and click ‘copy path’.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MDMzNTQzMywicHVyIjoiYmxvYl9pZCJ9fQ--f1c7a958ff35cfae54eadbb4d2da1c155f9dd246dac335107ebc2514edc44ba1/Screenshot%202024-12-20%20at%208.18.59%E2%80%AFam.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-6.png&quot; alt=&quot;Screenshot 2024-12-20 at 8.18.59 am.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Open Google Chrome, or your preferred web browser, and paste the path you just copied into the url bar. It will look something like this.&lt;br /&gt;
 &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;/Users/olinelson/repos/pico-css-starter/index.html&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will make the browser ‘open’ your html file and you will be able to see it in the browser window.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MDMzOTE5NywicHVyIjoiYmxvYl9pZCJ9fQ--c628dcb83aed1464b2f4f034a1f9fb337f70af6bcfd8818cdae51ab6ad69ea14/Screenshot%202024-12-20%20at%208.23.57%E2%80%AFam.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-7.png&quot; alt=&quot;Screenshot 2024-12-20 at 8.23.57 am.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MDM0MjEzMiwicHVyIjoiYmxvYl9pZCJ9fQ--3685201b8d95d3e5ad62d7b8763472fe42c4b63710ae5e7a667317a80714b8a3/Screenshot%202024-12-20%20at%208.26.34%E2%80%AFam.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-8.png&quot; alt=&quot;Screenshot 2024-12-20 at 8.26.34 am.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you’re using Safari and find yourself spat out to Google instead of seeing your local HTML page you might have to be more specific with the text you enter into the url bar. Make sure there is “file://” at the beginning of the path. A complete example would look like this.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;file:///Users/olinelson/repos/pico-css-starter/index.html&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Notice that there are three slashes after “file:“.&lt;/p&gt;
&lt;h1&gt;6.  How to make changes&lt;/h1&gt;
&lt;p&gt;Now we can make changes to our mini website and see what they will look like in the browser. Place your VsCode window and Chrome Window side by side so you can quickly move between them. Find the h1 tag in the index.html file and replace it’s contents so it now looks like: &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;h1&amp;gt;Harold Hardrada&amp;lt;/h1&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, save the file (by clicking File -&amp;gt; Save or typing Command S). Now go to the web browser window and refresh the page. You should now see the main heading has changed.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MDM1MzE0MiwicHVyIjoiYmxvYl9pZCJ9fQ--72c25cd3e17657881e99d4a71197ace6ece698570088dac2cc905fc382b6acfb/Screenshot%202024-12-20%20at%208.34.42%E2%80%AFam.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-9.png&quot; alt=&quot;Screenshot 2024-12-20 at 8.34.42 am.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is how we are going to develop your mini site.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make the change in VsCode&lt;/li&gt;
&lt;li&gt;Save the file&lt;/li&gt;
&lt;li&gt;Refresh the page in Chrome&lt;/li&gt;
&lt;li&gt;Repeat&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;7. Fill in your details&lt;/h1&gt;
&lt;p&gt;Now is the time! Go forth and populate the header in the index.html page with something that matches your use case. Make the contents of the&lt;/p&gt;
&lt;h1&gt;tag your name or your brand name and fill in the&lt;/h1&gt;
&lt;p&gt;tag directly below it with some catchy subtitle / tagline.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;     &amp;lt;hgroup&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &amp;lt;h1&amp;gt;Eric The Red&amp;lt;/h1&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &amp;lt;p&amp;gt;Dad, Sailor, Explorer&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;     &amp;lt;/hgroup&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;8. An intro to links&lt;/h1&gt;
&lt;p&gt;It wouldn’t be a ‘link-in-bio’ site without some links so let’s talk about the tag. These are link tags. The ‘a’ stands for ‘anchor’ because back in the day, people used to think about links as “anchoring” one page to another. Consider the example below:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;a href=&quot;&amp;lt;a href=&quot; https:=&quot;&quot; olinelson.com&quot;=&quot;&quot;&amp;gt;Oli&quot;&amp;gt;https://olinelson.com&quot;&amp;gt;Oli&amp;lt;/a&amp;gt; Nelson&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://olinelson.com&quot;&gt;Oli Nelson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This tells the browser to render a link that displays the text ‘Oli Nelson’ and when clicked will take the user to olinelson.com. We have also encountered our first tag attribute!&lt;/p&gt;
&lt;p&gt;Notice how in the opening tag of our link there is extra information? Some HTML tags have attributes that you can add to them that change their behaviour. Attributes always live in the opening tag of an element.&lt;/p&gt;
&lt;p&gt;We can change where this link takes the user by changing the value of the “href” attribute (href stands for hypertext reference by the way). So If I wanted the link to take the user to another website I could do the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;a href=&quot;&amp;lt;a href=&quot; https:=&quot;&quot; olinelson.com&quot;%3eoli=&quot;&quot; &quot;=&quot;&quot;&amp;gt;https://pianobeachstorybook.com&quot;&amp;gt;Oli&amp;lt;/a&amp;gt; Nelson&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://pianobeachstorybook.com&quot;&gt;Oli Nelson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Notice how I changed the href value by changing the url inside the double quotes to something else? Also notice how what the link looks like hasn’t changed? If we want the link to display something different we must alter the contents in between the and tags like so:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;a href=&quot;&amp;lt;a href=&quot; https:=&quot;&quot; pianobeachstorybook.com&quot;%3epiano=&quot;&quot; &quot;=&quot;&quot;&amp;gt;https://pianobeachstorybook.com&quot;&amp;gt;Piano&amp;lt;/a&amp;gt; Beach Story Book&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://pianobeachstorybook.com&quot;&gt;Piano Beach Story Book&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;9. Add your links&lt;/h1&gt;
&lt;p&gt;Let’s now add some real links to your socials and other sites from your new link-in-bio page. Find one of the existing tags in the index.html file and update it to look something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;a&amp;gt;             &amp;lt;/a&amp;gt;&amp;lt;a href=&quot;&amp;lt;a href=&quot; https:=&quot;&quot; some-website.com&quot;&quot;=&quot;&quot;&amp;gt;https://www.instagram.com/olinelson__/&quot;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                target=&quot;_blank&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                class=&quot;contrast&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                &amp;gt;Instagram&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;             &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Don’t freak out with the formatting here. This behaves exactly the same as the links that we saw earlier it’s just that in this case the tag is spaced out over a few lines.&lt;/p&gt;
&lt;p&gt;You might notice that there are also two new attributes on these tags. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;target=“_blank” - this tells the browser to open the link in a new tab. &lt;/li&gt;
&lt;li&gt;class=“contrast” -  this adds some extra styling information, don’t worry about this for now.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you need to add more than the provided three links simply copy and paste one of them, taking care to copy everything starting at ”.&lt;/p&gt;
&lt;h1&gt;10. Adding your image&lt;/h1&gt;
&lt;p&gt;Unless you really like cats you’ll probably want to swap out the placeholder image for one of your own. To do this, drag your image onto the VsCode sidebar to add it to the repository. Find the img tag in the index.html file.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;a&amp;gt; &amp;lt;img src=&quot;./cat.jpg&quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This tag, as you’ve probably deduced, is the image tag. The src (short for source) attribute determines where the browser will try and get the image file from. To make this display your newly added image, simply change the src attribute.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;a&amp;gt; &amp;lt;img src=&quot;./your-actual-image.jpg&quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Make sure you keep the ”./” before the name of your file. This means that the browser will look in the same folder as the html file for the image. If your file name has any spaces in it (you savage) the best thing to do is replace them with more coding friendly characters like ”-” or ”_”. &lt;/p&gt;
&lt;h1&gt;11. Pushing your changes to GitHub&lt;/h1&gt;
&lt;p&gt;The time has come to send your updated code to GitHub. On the left side panel of VsCode select the Source Control tab.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MDczNjAyMywicHVyIjoiYmxvYl9pZCJ9fQ--c5a67ba94d603ded6a262ed11751d94d898bc8eb29a90478688520437bb50b78/Screenshot%202024-12-20%20at%204.54.54%E2%80%AFpm.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-10.png&quot; alt=&quot;Screenshot 2024-12-20 at 4.54.54 pm.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Most programmers (the sane ones) use a system called Git to save their work. At a high level, Git is a way of saving your work in chunks called ‘commits’. You label every commit with a message so that it’s easy to keep track of it. This is useful if you want to undo some changes and various other things that save one’s bacon.&lt;/p&gt;
&lt;p&gt;Type a commit message in the message box, maybe something like “added real info”. Then click ‘Commit’, then ‘Sync Changes’&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MDg0MzY2OCwicHVyIjoiYmxvYl9pZCJ9fQ--214431d044d4dcb43b6d7a9f57e22f366501a74ce4b8157b31e2e7bd460a0378/Screenshot%202024-12-20%20at%208.13.58%E2%80%AFpm.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-11.png&quot; alt=&quot;Screenshot 2024-12-20 at 8.13.58 pm.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Your changes should be now synced with GitHub.&lt;/p&gt;
&lt;h1&gt;12. Hosting Your New Site&lt;/h1&gt;
&lt;p&gt;GitHub has a wonderful feature called GitHub Pages. It enables you to host static websites for free, even on your own domain. To get started go to your code repository in GitHub and click ‘Settings’, then ‘Pages’, you should see the GitHub Pages settings page.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MDg1MTA0OSwicHVyIjoiYmxvYl9pZCJ9fQ--ba897373722b455d6507056e72f48b368f71cd50274cd645f4db83e053849684/Screenshot%202024-12-20%20at%208.25.07%E2%80%AFpm.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-12.png&quot; alt=&quot;Screenshot 2024-12-20 at 8.25.07 pm.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Under the heading ‘Branch’ select the first option in the dropdown. It will be either ‘master’ or ‘main’. Then click ‘Save’.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MDg3NTYwNywicHVyIjoiYmxvYl9pZCJ9fQ--98e53b86acc243dfaaca796e5995b14acce6d43511079abe98912d8fd05a5df3/Screenshot%202024-12-20%20at%208.26.37%E2%80%AFpm.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-13.png&quot; alt=&quot;Screenshot 2024-12-20 at 8.26.37 pm.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After a minute or so, if you refresh the page, you should see this at the top of the page.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MDg3ODkwNSwicHVyIjoiYmxvYl9pZCJ9fQ--9460241cf2e5abcc4b02f549d6124d62d8bd0d7a7118b25d0b7412a751c13163/Screenshot%202024-12-20%20at%209.06.00%E2%80%AFpm.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-14.png&quot; alt=&quot;Screenshot 2024-12-20 at 9.06.00 pm.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You site is now live!&lt;/p&gt;
&lt;h1&gt;13. Connecting Your Domain&lt;/h1&gt;
&lt;p&gt;Under the custom domain heading, type your domain that you want to connect in the text box and click ‘Save’.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MDg4NzQ1NywicHVyIjoiYmxvYl9pZCJ9fQ--1d0d68d12c0a6f5be02ed6077e4184e43c90e41b63bcfc147a037cb38a0fcd5d/Screenshot%202024-12-20%20at%209.16.15%E2%80%AFpm.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-15.png&quot; alt=&quot;Screenshot 2024-12-20 at 9.16.15 pm.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We now need to change your DNS settings so that your domain points to GitHub. Where does your domain live? GoDaddy? Namecheap? Log in to your account and go to your domains DNS settings. We need to create 4 new A records all with the host of ’@’.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;185.199.108.153&lt;/li&gt;
&lt;li&gt;185.199.109.153&lt;/li&gt;
&lt;li&gt;185.199.110.153&lt;/li&gt;
&lt;li&gt;185.199.111.153&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you’re done it should look something like this.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MTc3NDI1NSwicHVyIjoiYmxvYl9pZCJ9fQ--e4da3cb6d334aadbddbc15b98dff10daea18e123f5871fb2bec0791ec7aa7e59/Screenshot%202024-12-21%20at%207.03.42%E2%80%AFam.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-16.png&quot; alt=&quot;Screenshot 2024-12-21 at 7.03.42 am.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Don’t worry about the TTL or Time To Live setting, just set it to the smallest value or automatic.&lt;/p&gt;
&lt;p&gt;Go back to your GitHub Pages settings and check the status of the domain connection. I can sometimes take a little while. Also make sure that the ‘Enforce HTTPS’ option is checked. Without this, most browsers will stop people from being able to visit your site and you will come across as a Nigerian Prince needing but a small donation to unlock dynastic wealth!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://world.hey.com/olivernelson/9edeb977/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTk0MDkwNTg2NywicHVyIjoiYmxvYl9pZCJ9fQ--0b046fb1206607b78c46127a4eaba9d31fb3006a2362d964b7824ca3ca62fce3/Screenshot%202024-12-20%20at%209.45.23%E2%80%AFpm.png?disposition=attachment&quot;&gt;&lt;img src=&quot;https://olinelson.com/words/build-and-host-your-own-link-in-bio-page/image-17.png&quot; alt=&quot;Screenshot 2024-12-20 at 9.45.23 pm.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After a few minutes your site should now be live on your domain!&lt;/p&gt;
&lt;p&gt;If you ran into any issues feel free to shoot me an email at &lt;a href=&quot;mailto:olivernelson@hey.com&quot;&gt;olivernelson@hey.com&lt;/a&gt; , I’d love to help.&lt;/p&gt;
&lt;p&gt;This is just the beginning! As you can imagine we could build-out all sorts of features and improvements. Maybe we could make the links look a little nicer? Add a contact form? Add some icons? The potential is infinite!&lt;/p&gt;</content:encoded></item><item><title>Yes, You Should Learn How To Code</title><link>https://olinelson.com/words/yes-you-should-learn-how-to-code.html</link><guid isPermaLink="true">https://olinelson.com/words/yes-you-should-learn-how-to-code.html</guid><description>The year 2025 is almost upon us. If you listen to certain parts of the internet you would be forgiven for having the impression that all things programming…</description><pubDate>Wed, 18 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The year 2025 is almost upon us. If you listen to certain parts of the internet you would be forgiven for having the impression that all things programming related will soon be performed exclusively by AI, “Why learn how to code? No point!”. Even if we leave to one side the glaring shortcomings of even the finest AI models today (see DHH’s take on this &lt;a href=&quot;https://world.hey.com/dhh/the-premise-trap-924b8cd9&quot;&gt;here&lt;/a&gt;) I think there has never been a better time to learn how to program.&lt;/p&gt;
&lt;p&gt;When I was a kid I resisted my Dad teaching me maths. The conversation would go something like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Oli&lt;/strong&gt;: Why do I need to learn maths?&lt;br /&gt;
&lt;strong&gt;Dad&lt;/strong&gt;: You’ll need it for lot’s of things in life, like figuring out how much change to give a customer, if you work in a shop.&lt;br /&gt;
&lt;strong&gt;Oli&lt;/strong&gt;: Don’t be silly, they have machines that do it for them!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It’s not difficult to see the flaws in young Oli’s argument. Yet it is the same argument floating around today in regards to programming and AI. Does a calculator replace the need for a person to learn basic mathematics? Or is it a tool that amplifies the abilities of a person to perform calculations?&lt;/p&gt;
&lt;p&gt;It’s undeniable that the time and energy required to learn the basics of coding today is a fraction of what it was a few years ago.&lt;/p&gt;
&lt;p&gt;How could you improve your life by becoming digitally literate? What businesses would you build? What problems would you solve?&lt;/p&gt;
&lt;p&gt; Let 2025 be the year of the generalist.&lt;/p&gt;
&lt;p&gt;Cognitio populo&lt;/p&gt;</content:encoded></item><item><title>We Are All Eyeball Hunters Now</title><link>https://olinelson.com/words/we-are-all-eyeball-hunters-now.html</link><guid isPermaLink="true">https://olinelson.com/words/we-are-all-eyeball-hunters-now.html</guid><description>I used to think trying to gain a following on social media was an activity for the vain. The superficial Plebeians who lacked any substantive passions so…</description><pubDate>Sun, 15 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I used to think trying to gain a following on social media was an activity for the vain. The superficial Plebeians who lacked any substantive passions so instead worshiped the false god of fame. How wrong I was.&lt;/p&gt;
&lt;p&gt;For my younger self, the aspiring Jazz musician, there was a definite answer to the following proverb:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If music is performed in a forest but nobody is there to hear it, did it really happen?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;“Yes, of course! Music is for music’s sake” I would exclaim. “We find these &lt;strong&gt;tunes&lt;/strong&gt; to be self evident!”.&lt;/p&gt;
&lt;p&gt;These days things are different. I would say the answer to the proverb above is &lt;strong&gt;no&lt;/strong&gt;. Well, at least, nobody cares and maybe you should go home and reallocate some of your efforts to (gasp) marketing.&lt;/p&gt;
&lt;p&gt;We are all eyeball hunters now. You either sell your time to an eyeball hunter in need of your skills or you dare to become a hunter yourself. A one-man-band, a generalist, a vertically integrated production line, a digital renaissance man. To not engage in the practice of eyeball hunting is not a virtuous act, like my past proud self would imply, it is choosing not to develop skills necessary for financial freedom.&lt;/p&gt;
&lt;p&gt;When I learnt how to code I was looking for a skill that had better financial leverage to gigging on the drums or teaching. Indeed, working as a software developer full time for the past four years has unlocked many things for my family that would scarcely be possible with my old income streams. Effective though this step was, it’s limited in scope. I greatly increased the value of selling my time but I am still beholden to the eyeball hunters.&lt;/p&gt;
&lt;p&gt;My message to my past self is by all means - learn all the things. Stay in that woodshed, practice your ass off, do that coding bootcamp, build that web app, but know that these things are of limited power. True freedom comes from the attainment of attention.&lt;/p&gt;</content:encoded></item></channel></rss>