<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Annie Codes | Annabelle Seaward's Blog]]></title><description><![CDATA[Hi, I’m Annie, a full-stack developer and this is my blog.
Here I share information about software, web development and occasionally write about computing history.]]></description><link>https://annie-codes.com</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1709901326618/hDzMSrPo7.png</url><title>Annie Codes | Annabelle Seaward&apos;s Blog</title><link>https://annie-codes.com</link></image><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 22:18:58 GMT</lastBuildDate><atom:link href="https://annie-codes.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How to Simulate Light and Dark Mode with Chrome Dev Tools]]></title><description><![CDATA[If your developing a website with light and dark mode, you should use the users prefered color scheme on first render. But how do you test that this is working?
Since late 2019, it has possible in Chrome Dev Tools to easily toggle between prefers-col...]]></description><link>https://annie-codes.com/simulate-dark-mode-in-chrome</link><guid isPermaLink="true">https://annie-codes.com/simulate-dark-mode-in-chrome</guid><category><![CDATA[Chrome]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[Web Design]]></category><category><![CDATA[webdev]]></category><category><![CDATA[devtools]]></category><category><![CDATA[#chrome_devtools]]></category><category><![CDATA[dark mode]]></category><category><![CDATA[lightmode]]></category><category><![CDATA[darkmode]]></category><category><![CDATA[CSS]]></category><dc:creator><![CDATA[Annie Seaward]]></dc:creator><pubDate>Sat, 16 Mar 2024 19:01:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1711323000802/23682010-b8d4-4b69-96de-ecc219c113c2.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If your developing a website with light and dark mode, you should use the users prefered color scheme on first render. But how do you test that this is working?</p>
<p>Since late 2019, it has possible in Chrome Dev Tools to easily toggle between <code>prefers-color-scheme: dark</code> and <code>prefers-color-scheme: light</code> .</p>
<ol>
<li><p>Open your Dev Tools, you can find them by clicking the three dots in the top right corner, followed by <code>More Tools &gt; Developer Tools</code>.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1710615149578/1efdfbd9-9ffb-4e18-bd3b-4a35d504d0f2.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Open your command tools, you can do with by pressing <code>Ctrl+Shift+P</code> on Windows or <code>Command+Shift+P</code> on Mac. Alternatively, you can click the three dots. in the top right (within the dev tools menu) and click <code>Run Command</code>.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1710615346002/faabce62-098b-4409-9aef-f44b120bf0a6.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>In the drop menu, search for <code>Show Rendering</code> and select it.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1710615175661/f033f09a-88a8-4252-b0a8-f6437a4827cb.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>The Rendering tab should now be open. Search within it for the setting <code>Emulate CSS media feature prefers-color-scheme</code>.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1710615187070/61942e53-70fc-4818-a469-1a3c80583fa7.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>You can now use this dropdown setting to easily switch between light and dark mode.</p>
</li>
</ol>
<hr />
<p>Thanks for reading 🙏</p>
<p>Did you find this guide helpful? Let me know in the comments, or just say hi 👋.</p>
<p>Until next time, Happy Coding!</p>
]]></content:encoded></item><item><title><![CDATA[5 Simple Tips to Make Your Hashnode Feel More Professional]]></title><description><![CDATA[If, like me, you have recently started blogging here on Hashnode, you might be looking for ways to make your blog appear more professional. When you're first starting out, it can be difficult to immediately have polished branding and grammatically pe...]]></description><link>https://annie-codes.com/5-tips-to-customize-your-hashnode</link><guid isPermaLink="true">https://annie-codes.com/5-tips-to-customize-your-hashnode</guid><category><![CDATA[Hashnode]]></category><category><![CDATA[Blogging]]></category><category><![CDATA[blog]]></category><category><![CDATA[CSS]]></category><category><![CDATA[customization]]></category><category><![CDATA[Blogger]]></category><category><![CDATA[CSS Animation]]></category><category><![CDATA[articlewriting]]></category><category><![CDATA[writing]]></category><category><![CDATA[HashnodeCommunity]]></category><category><![CDATA[#HashnodeBlogEvent]]></category><category><![CDATA[HTML5]]></category><dc:creator><![CDATA[Annie Seaward]]></dc:creator><pubDate>Mon, 11 Mar 2024 11:00:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1711322966086/70c8ea00-6805-4687-9f99-6527de5e5b98.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If, like me, you have recently started blogging here on Hashnode, you might be looking for ways to make your blog appear more professional. When you're first starting out, it can be difficult to immediately have polished branding and grammatically perfect articles. So here are 5 simple and easy tips to level up your Hashnode today:</p>
<h2 id="heading-1-use-a-custom-domain">1. Use a custom domain</h2>
<p>Hashnode makes it very easy for you to link a custom domain to your blog, which can help create a level of legitimacy for your site. Many of the visitors to your blog will be from outside of the Hashnode community. They may becoming from Google or a link on your other social media accounts. Landing on a page that is owned by you helps them to trust you as a leader in your niche.</p>
<p>There are many good sites where you can buy a custom domain cheaply, including <a target="_blank" href="https://www.godaddy.com/en-uk/domains">GoDaddy</a> or <a target="_blank" href="https://vercel.com/docs/getting-started-with-vercel/buy-domain">Vercel</a>.</p>
<h2 id="heading-2-add-a-custom-favicon-to-your-blog">2. Add a custom favicon to your blog</h2>
<p>If you're not a web developer or designer by trade, the favicon is the small icon on a website's tab bar.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1710021131660/017510e7-98ac-45b0-937d-1f210c8cce38.png" alt class="image--center mx-auto" /></p>
<p>By default, all Hashnode blogs have the Hashnode cog logo as their icon, but you can change this in your blog appearance settings. This will also add to the legitimacy of your blog, separating it from the thousands of other Hashnode blogs.</p>
<p>If you want to keep it simple but effective, you can generate a favicon, for free, on <a target="_blank" href="https://favicon.io/">favicon.io</a>. Simply pick an emoji, or use the first letter of your name combined with your favourite font. Or you could try your hand at some pixel art and create a completely unique favicon <a target="_blank" href="https://www.favicon.cc/">here</a>.</p>
<h2 id="heading-3-create-a-logo-for-your-blog">3. Create a logo for your blog</h2>
<p>Another, great feature Hashnode makes easy to customise, is your blog logo. This can easily be changed in the appearance tab, in your blog dashboard. They even allow you to upload a different version for dark mode, so that it will always stand out.</p>
<p>If you're worried about your graphic design skills, then don’t be. Nowadays, you don’t need to be a graphic designer to create simple and effective graphics using tools like <a target="_blank" href="https://www.canva.com/">Canva</a>. I recommend adapting one of their built-in logos which you like. It is important to remember to use a transparent background for a clean and polished look (you can sign-up on Canva for a 30-day free trial to access this feature).</p>
<h2 id="heading-4-add-article-header-images-to-all-your-articles">4. Add article header images to all your articles</h2>
<p>It is often said that “a picture is worth a thousand words”, and that “the average attention span on the internet is five seconds”. When you combine these two ideas, you realise that pictures are an important tool in capturing any of your potential readers' attention and getting them to stick around.</p>
<p>Again if you are worried about your design skills there are lots of great templates on Canva. Remember the titles don’t need to be complicated to be effective. I particularly like <a target="_blank" href="https://akoskm.com/">akoskm</a> and <a target="_blank" href="https://erichartford.com/">Cognitive Computations</a>’ article headers because they keep them simple and consistent. Here are some examples from akoskm’s blog, to inspire you:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1710021074269/e4c54fb3-52d8-48d8-b456-4e41a2a14603.png" alt class="image--center mx-auto" /></p>
<p>A great alternative to creating article headers is to utilise Hashnode’s built-in Unsplash selector. <a target="_blank" href="https://unsplash.com/">Unsplash</a> gives you access to thousands of high-quality, free-to-use, images that will look professional on your blog. To use this, next time you are writing an article, simply select ‘Add a cover’, then select the ‘Unsplash’ tab and search their vast collection.</p>
<h2 id="heading-5-customise-the-css-of-your-blog">5. Customise the CSS of your blog</h2>
<p>Hashnode, like many great blogging platforms, allows you to customise the CSS of your blog. In your blog dashboard, appearance tab, look for the customise CSS button. You can edit and amend the generic CSS for your home page, your article and any pages you have.</p>
<p>Don’t worry if you're not a front-end web developer it is very easy and simple to get started. <a target="_blank" href="https://hashnode.com/@avneesh0612">Avneesh Agarwal</a> has a great tutorial <a target="_blank" href="https://blog.avneesh.tech/hashnode-blog-customization">here</a> on how to edit the colours of your site to be more consistent with your brand. Personally, I am still deciding on my branding and colours, but wanted to make my site more interactive and polished with a few CSS animations. Inspired by <a target="_blank" href="https://hashnode.com/@victoria">Victoria Lo</a>’s blog, here are the animations I have added so far:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.blog-author-area</span> {
    <span class="hljs-attribute">overflow</span>: hidden;
    <span class="hljs-attribute">animation</span>: slideIn ease <span class="hljs-number">2s</span>;
    <span class="hljs-attribute">animation-iteration-count</span>: <span class="hljs-number">1</span>;
    <span class="hljs-attribute">animation-fill-mode</span>: forwards;
}

<span class="hljs-keyword">@keyframes</span> slideIn {
    0% {<span class="hljs-attribute">max-height</span>: <span class="hljs-number">0</span>;}
    100% {<span class="hljs-attribute">max-height</span>: <span class="hljs-number">500px</span>;}
}

<span class="hljs-selector-class">.blog-theme-switcher</span>{
    <span class="hljs-attribute">animation</span>: rotate <span class="hljs-number">1s</span>;
}

<span class="hljs-keyword">@keyframes</span> rotate {
    0% {<span class="hljs-attribute">transform</span>: <span class="hljs-built_in">rotate</span>(<span class="hljs-number">0deg</span>);}
    100% {<span class="hljs-attribute">transform</span>: <span class="hljs-built_in">rotate</span>(<span class="hljs-number">360deg</span>);}
}

<span class="hljs-selector-class">.blog-posts-wrapper</span> {
    <span class="hljs-attribute">justify-content</span>: space-between;
}

<span class="hljs-selector-class">.blog-post-card</span> {
    <span class="hljs-attribute">transition</span>: .<span class="hljs-number">6s</span>;
    <span class="hljs-attribute">width</span>: <span class="hljs-number">48%</span> <span class="hljs-meta">!important</span>;
    <span class="hljs-attribute">padding</span>: <span class="hljs-number">1.2rem</span> <span class="hljs-meta">!important</span>;
    <span class="hljs-attribute">border-radius</span>: <span class="hljs-number">12px</span>;
    <span class="hljs-attribute">border</span>: <span class="hljs-number">1px</span> solid <span class="hljs-built_in">rgba</span>(<span class="hljs-number">255</span>,<span class="hljs-number">255</span>,<span class="hljs-number">255</span>,<span class="hljs-number">0.20</span>);
}

<span class="hljs-selector-class">.blog-post-card</span><span class="hljs-selector-pseudo">:hover</span> {
    <span class="hljs-attribute">box-shadow</span>: <span class="hljs-number">0</span> <span class="hljs-number">8px</span> <span class="hljs-number">32px</span> <span class="hljs-number">0</span> <span class="hljs-built_in">rgb</span>(<span class="hljs-number">177</span> <span class="hljs-number">156</span> <span class="hljs-number">217</span> / <span class="hljs-number">60%</span>);
}

<span class="hljs-selector-class">.dark</span> <span class="hljs-selector-class">.blog-post-card</span><span class="hljs-selector-pseudo">:hover</span> {
    <span class="hljs-attribute">box-shadow</span>: <span class="hljs-number">0</span> <span class="hljs-number">8px</span> <span class="hljs-number">32px</span> <span class="hljs-number">0</span> <span class="hljs-built_in">rgb</span>(<span class="hljs-number">255</span> <span class="hljs-number">255</span> <span class="hljs-number">255</span> / <span class="hljs-number">40%</span>);
}

<span class="hljs-keyword">@media</span> (<span class="hljs-attribute">max-width:</span> <span class="hljs-number">620px</span>) {
    <span class="hljs-selector-class">.blog-posts-wrapper</span> {
        <span class="hljs-attribute">justify-content</span>: center;
    }

    <span class="hljs-selector-class">.blog-post-card</span> {
        <span class="hljs-attribute">width</span>: <span class="hljs-number">96%</span> <span class="hljs-meta">!important</span>;
    }
}
</code></pre>
<p>Feel free to use these as you will. Personally, I am using the “Grid Layout” (you can change this in your dashboard, appearance settings) for my home page, so the selectors you need to use for other layouts may vary.</p>
<p>Remember to always test any changes for mobile responsiveness!</p>
<h2 id="heading-bonus-6-add-a-few-pages-to-your-site">Bonus: 6. Add a few pages to your site</h2>
<p>One commonality I have noticed between lots of the best-achieving blogs on the site is the use of pages. Pages can be added using markup on the pages tab of your dashboard. (Remember to add them to your Navbar afterwards!)</p>
<p>Adding pages allows you to direct any new visitors to your blog to your particular areas of interest. This can be a separate page or even just an article series. This gives new visitors more of an idea of what you are about and makes your blog much easier to navigate.</p>
<p>Good page ideas to start with:</p>
<ul>
<li><p>About Me - Introduce yourself, why do you blog, what can you offer readers?</p>
</li>
<li><p>Resources - What are some of the best resources you use all the time, within your area of expertise?</p>
</li>
<li><p>Books - This echos a resources tab, what books do you think everyone should read?</p>
</li>
<li><p>Your favourite series/collection of articles you’ve written</p>
</li>
</ul>
<hr />
<p>Thanks for reading!</p>
<p>Do you have any other tips to improve your Hashnode? Let me know in the comments, or just say hi 👋.</p>
<p>Until next time, Happy Coding!</p>
]]></content:encoded></item><item><title><![CDATA[Tailwind group hover explained]]></title><description><![CDATA[One of the most useful features in tailwind for creating interactive and engaging front-end web experiences is group hovers.
Group hovers allow you to easily and simply create hover events that detect and work across a subsection of your page. This i...]]></description><link>https://annie-codes.com/tailwind-group-hover</link><guid isPermaLink="true">https://annie-codes.com/tailwind-group-hover</guid><category><![CDATA[Tailwind CSS]]></category><category><![CDATA[Tailwind CSS Tutorial]]></category><category><![CDATA[CSS]]></category><category><![CDATA[css hover]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[webdev]]></category><category><![CDATA[Frontend Development]]></category><category><![CDATA[frontend]]></category><dc:creator><![CDATA[Annie Seaward]]></dc:creator><pubDate>Sat, 09 Mar 2024 12:00:55 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1711323043918/b3d86213-6418-4b4f-80e4-4d5392d0247e.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>One of the most useful features in tailwind for creating interactive and engaging front-end web experiences is group hovers.</p>
<p>Group hovers allow you to easily and simply create hover events that detect and work across a subsection of your page. This is challenging to do in vanilla CSS, as it involves creating multiple nested clauses. However, once you understand how Tailwind groups work and how to combine them with group hover this becomes simple, clean and easy.</p>
<p>Take the example below, when the user hovers anywhere in the word the whole section changes to a beautiful rainbow of colours.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1709897419229/21c53d91-9ccf-4905-984c-cfc35dd0be2b.gif" alt class="image--center mx-auto" /></p>
<p>Lets start with a simple text string broken down with multiple spans, each representing a different colour in the soon to be rainbow.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"red"</span>&gt;</span>Richard<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"orange"</span>&gt;</span>Of<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"yellow"</span>&gt;</span>York<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"green"</span>&gt;</span>Gave<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"blue"</span>&gt;</span>Battle<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"indigo"</span>&gt;</span>In<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"violet"</span>&gt;</span>Vain<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
</code></pre>
<p>Now in the CSS you could create a clause for each of these Ids and detect hover to implement the colour change. But this would only change each word one at a time - what if you want to make the whole string rainbow at the same time?</p>
<p>To do this you need to add hover detection on the parent <code>&lt;p&gt;</code> element, and then access each of the <code>&lt;span&gt;</code> elements within it. While this works, if you are working with lots of different elements, all doing different things, it can quickly become long and difficult to maintain.</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">p</span><span class="hljs-selector-pseudo">:hover</span> <span class="hljs-selector-id">#red</span> {
  <span class="hljs-attribute">color</span>: red;
}
<span class="hljs-selector-tag">p</span><span class="hljs-selector-pseudo">:hover</span> <span class="hljs-selector-id">#orange</span> {
  <span class="hljs-attribute">color</span>: orange;
}
<span class="hljs-selector-tag">p</span><span class="hljs-selector-pseudo">:hover</span> <span class="hljs-selector-id">#yellow</span> {
  <span class="hljs-attribute">color</span>: yellow;
}
<span class="hljs-selector-tag">p</span><span class="hljs-selector-pseudo">:hover</span> <span class="hljs-selector-id">#green</span> {
  <span class="hljs-attribute">color</span>: green;
}
<span class="hljs-selector-tag">p</span><span class="hljs-selector-pseudo">:hover</span> <span class="hljs-selector-id">#blue</span> {
  <span class="hljs-attribute">color</span>: blue;
}
<span class="hljs-selector-tag">p</span><span class="hljs-selector-pseudo">:hover</span> <span class="hljs-selector-id">#indigo</span> {
  <span class="hljs-attribute">color</span>: indigo;
}
<span class="hljs-selector-tag">p</span><span class="hljs-selector-pseudo">:hover</span> <span class="hljs-selector-id">#violet</span> {
  <span class="hljs-attribute">color</span>: violet;
}
</code></pre>
<p>You could use SCSS, which allows use to nest all of the children tags within a single copy of the parent. But, better still you can use Tailwind groups.</p>
<p>In Tailwind, you start by defining the group. You can do this by adding the <code>group</code> class to the parent - in this case this is the <code>&lt;p&gt;</code> tag.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"red"</span>&gt;</span>Richard<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>...<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
</code></pre>
<p>Then you call group-hover class within each of the children classes, combined with what styles should be applied on hover.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"red"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group-hover:text-red-500"</span>&gt;</span>Richard<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>...<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
</code></pre>
<p>You can now clean up your HTML and remove the unnecessary IDs, leaving us with just the following.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group-hover:text-red-500"</span>&gt;</span>Richard<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group-hover:text-orange-500"</span>&gt;</span>Of<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group-hover:text-yellow-500"</span>&gt;</span>York<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group-hover:text-green-500"</span>&gt;</span>Gave<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group-hover:text-blue-500"</span>&gt;</span>Battle<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group-hover:text-indigo-500"</span>&gt;</span>In<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group-hover:text-violet-500"</span>&gt;</span>Vain<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
</code></pre>
<p>But what is you want to nest hover interactions - for example, if you wanted “york gave battle” to also be all different sizes when hovered on? Well this is just as easy using group names. Simply follow the same steps, but label your new group with a concise name. You can do this with the slash syntax, so to name a group ‘bigger’ use <code>group/bigger</code> .</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group-hover:text-red-500"</span>&gt;</span>Richard<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group-hover:text-orange-500"</span>&gt;</span>Of<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group/bigger"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group-hover:text-yellow-500 group-hover/bigger:text-lg"</span>&gt;</span>York<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group-hover:text-green-500 group-hover/bigger:text-xl"</span>&gt;</span>Gave<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group-hover:text-blue-500 group-hover/bigger:text-lg"</span>&gt;</span>Battle<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group-hover:text-indigo-500"</span>&gt;</span>In<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"group-hover:text-violet-500"</span>&gt;</span>Vain<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1709897401610/1847f493-2aa2-4c5e-8d2a-c7f49274a45e.gif" alt class="image--center mx-auto" /></p>
<p>You can check out both these working examples in tailwind playground [<a target="_blank" href="https://play.tailwindcss.com/Nk4mOY0YHW">here</a>].</p>
<p>Or have a look at a more realistic use of group hover on an example card [<a target="_blank" href="https://play.tailwindcss.com/Rc0epbnQA8">here</a>].</p>
<hr />
<p>Thanks for reading!</p>
<p>What other cool features of Tailwind do you like to use? Let me know in the comments, or just say hi 👋.</p>
<p>Until next time, Happy Coding!</p>
<hr />
<p>To learn more about this topic, I recommend reading the Tailwind documentation:</p>
<ul>
<li><a target="_blank" href="https://tailwindcss.com/docs/hover-focus-and-other-states">https://tailwindcss.com/docs/hover-focus-and-other-states</a></li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Debunking the Myth: The True Origins of the Term 'Computer Bug']]></title><description><![CDATA[As a software developer, you may have often heard the story of how Grace Hopper invented the term ‘computer bug’ after finding a bug jamming the Havard Mark II computer. There’s only a couple of problems with that story:

Hopper almost certainly wasn...]]></description><link>https://annie-codes.com/the-origins-of-the-term-computer-bug</link><guid isPermaLink="true">https://annie-codes.com/the-origins-of-the-term-computer-bug</guid><category><![CDATA[history]]></category><category><![CDATA[Bugs and Errors]]></category><category><![CDATA[history-of-computing]]></category><category><![CDATA[grace hopper]]></category><dc:creator><![CDATA[Annie Seaward]]></dc:creator><pubDate>Fri, 08 Mar 2024 18:00:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1711323078115/1a6fa6be-0d24-45b0-97f3-6a25e9790e66.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As a software developer, you may have often heard the story of how Grace Hopper invented the term ‘computer bug’ after finding a bug jamming the Havard Mark II computer. There’s only a couple of problems with that story:</p>
<ol>
<li><p>Hopper almost certainly wasn’t the one who found it or wrote about it and more importantly,</p>
</li>
<li><p>The use of the term bug to describe an engineering or software issue long predates Hopper and her team.</p>
</li>
</ol>
<h3 id="heading-so-how-did-this-story-come-to-be">So how did this story come to be?</h3>
<p>Well, there was definitely a squished moth found in the relays of the Havard Mark II, while Hopper was working there. We know this because of a logbook entry that was written, with the following quote:</p>
<h3 id="heading-first-actual-case-of-bug-being-found"><em>“First actual case of bug being found</em>”</h3>
<h3 id="heading-complete-with-the-moth-sellotaped-neatly-above-it">- complete with the moth sellotaped neatly above it.</h3>
<p>The notebook is now held as a piece of history in the Smithsonian Institution’s National Museum of American History collection - taped moth still intact!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1709855352661/cf217f19-e407-4d46-bfcd-0d34600aa7db.png" alt="A photo of the page from the logbook in which a moth can be seen taped to the page." class="image--center mx-auto" /></p>
<h3 id="heading-so-its-true-then-hopper-did-coin-the-term-after-finding-a-squished-moth">So it’s true then Hopper did coin the term after finding a squished moth?</h3>
<p>Unfortunately not, based on handwriting comparisons the Smithsonian Institution does not believe the writing to be that of Grace Hopper. And considering that Hopper’s work in the lab was not that of a technician maintaining the relays, it is unlikely that she was the one to find the famous critter.</p>
<p>This might lead you to believe that it was a technician working with Hopper who coined the term, but it was simply a joke among colleagues.</p>
<h3 id="heading-the-term-had-already-been-in-common-use-by-engineers-for-over-50-years">The term had already been in common use by engineers for over 50 years.</h3>
<p>As far back as 1873, Thomas Edison, the inventor of the lightbulb, had filed a patent for his ‘bug trap’ designed to reduce interference, or bugs, on his morse-code quadruplex telegraph system.</p>
<p>Edison is frequently reported to have used the term bug to refer to issues with his inventions and would often write about bugs as if there was an actual critter in the system causing the issue.</p>
<p>In an 1889 newspaper, a British reporter wrote:</p>
<h3 id="heading-mr-edisonhad-been-up-the-two-previous-nights-working-on-fixing-a-bug-in-his-phonographan-expression-for-solving-a-difficulty-and-implying-that-some-imaginary-insect-has-secreted-itself-inside-and-is-causing-all-the-trouble"><em>“Mr. Edison…had been up the two previous nights working on fixing ‘a bug’ in his phonograph—an expression for solving a difficulty, and implying that some imaginary insect has secreted itself inside and is causing all the trouble.”</em></h3>
<p><img src="https://images.unsplash.com/photo-1552862750-746b8f6f7f25?q=80&amp;w=2070&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.0.3&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="A lightbulb" class="image--center mx-auto" /></p>
<p>In fact, the Oxford English dictionary used this quote to define a bug as “a defect or fault in a machine, plan, or the like.”</p>
<p>In all likelihood, Edison didn’t invent the term either but was one of the many great engineers of the time to popularise it.</p>
<hr />
<p>The term ‘bug’ in reference to an insect, appears to have originated from several Middle English words used to describe ghouls, ghosts and other spirits. These included:</p>
<h3 id="heading-bugge-bugaboo-and-bugbear">“Bugge”, “Bugaboo” and “Bugbear”</h3>
<p>In the 1620s, it would first be used to describe a small creature in reference to bedbugs. Slowly evolving in form to describe a range of critters.</p>
<p>So the question remains who invented the term, well we don’t know and I guess we probably never will. That is likely why Hopper’s story has become so well known because it’s a simple and funny anecdote with a punchline that still makes software engineers chuckle today.</p>
<p>So next time you are frustrated trying to get your code to work - just be glad you no longer have to check if it’s being caused by an actual fly stuck inside the computer.</p>
<hr />
<p>Thanks for reading!</p>
<p>Did you know the true origins of the term, or had you been fooled by the Grace Hopper tale? Let me know in the comments, or just say hi 👋.</p>
<p>Until next time, Happy Coding!</p>
<hr />
<p>To learn more about this topic, I recommend reading the following articles:</p>
<ul>
<li><p><a target="_blank" href="https://education.nationalgeographic.org/resource/worlds-first-computer-bug/">https://education.nationalgeographic.org/resource/worlds-first-computer-bug/</a></p>
</li>
<li><p><a target="_blank" href="https://spectrum.ieee.org/did-you-know-edison-coined-the-term-bug">https://spectrum.ieee.org/did-you-know-edison-coined-the-term-bug</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[My First Post🥳]]></title><description><![CDATA[Hello World!
Hi, I'm Annie.
I am a full-stack developer, who has a passion for coding; creating things for the web and making creative front-end projects. I'm looking to use this blog to connect with like-minded people and grow in my own skills along...]]></description><link>https://annie-codes.com/my-first-post</link><guid isPermaLink="true">https://annie-codes.com/my-first-post</guid><category><![CDATA[first post]]></category><category><![CDATA[First Blog]]></category><category><![CDATA[introduction]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[webdev]]></category><category><![CDATA[cats]]></category><dc:creator><![CDATA[Annie Seaward]]></dc:creator><pubDate>Fri, 08 Mar 2024 12:00:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1711323106811/39c6b30d-7418-40d4-be5c-715642f624c1.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-hello-world">Hello World!</h3>
<h2 id="heading-hi-im-annie">Hi, I'm <strong>Annie</strong>.</h2>
<p>I am a <strong>full-stack developer</strong>, who has a passion for coding; creating things for the web and making creative front-end projects. I'm looking to use this blog to connect with like-minded people and grow in my own skills along the way.</p>
<p>I have been coding since I first discovered HTML &amp; CSS on the web game, Neopets, way back in the day. Later, I learned JavaScript to personalise my Tumblr theme and I have been hooked ever since.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1710586347249/89756136-31b5-402c-ac4a-777d64379c26.png" alt="Coding showing Annie's interests and hobbies. Blogging is pushed as a new hobby." class="image--center mx-auto" /></p>
<p>My favourite computing related fun fact is the first turing complete computer, the ENIAC, weighed in at a whopping 27 tonnes. That's roughly the weight of 150 thousand modern smartphones!</p>
<p>Outside of programming, I am a diagnosable nerd who loves Lego, Doctor Who, crochet and cuddles with my two, very fluffy, cats.</p>
<hr />
<p>Thanks for reading!</p>
<p>Do you have a favourite computing fun fact? Please share in the comments, or just say hi 👋.</p>
<p>Until next time, Happy Coding!</p>
<hr />
<p>Bonus! Cat Tax:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1709853110838/0754edea-e6ec-4a8e-9ed6-286c4a022e57.jpeg" alt="Two mainecoon cats in a garden." class="image--center mx-auto" /></p>
]]></content:encoded></item></channel></rss>