<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Projects on The Tangiest Blog</title>
    <link>/tags/projects/</link>
    <description>Recent content in Projects on The Tangiest Blog</description>
    <generator>Hugo</generator>
    <language>en-uk</language>
    <copyright>2026 Andrew Tang All rights reserved</copyright>
    <lastBuildDate>Wed, 18 Apr 2018 12:00:00 +0100</lastBuildDate>
    <atom:link href="/tags/projects/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Bookshelf</title>
      <link>/page/bookshelf/</link>
      <pubDate>Wed, 18 Apr 2018 12:00:00 +0100</pubDate>
      <guid>/page/bookshelf/</guid>
      <description>&lt;p&gt;This page lists the books I&amp;rsquo;m currently reading, and that I have read recently. If you would like to recommend a book for me to read, please use the &lt;a href=&#34;page/contact-me&#34;&gt;Contact form&lt;/a&gt;. Thanks!&lt;/p&gt;&#xA;&lt;style&gt;&#xA;        .bookshelf {&#xA;            --bs-surface: #f6f7f8;&#xA;            --bs-text: #2b2b2b;&#xA;            --bs-muted: #6b7075;&#xA;            --bs-rule: #e4e6e8;&#xA;            --bs-accent: #2a6ebb;&#xA;            --bs-star: #d9902b;&#xA;            --bs-star-off: #d6d9dc;&#xA;            --bs-shadow: rgba(30, 35, 40, .28);&#xA;            margin: 40px 0;&#xA;        }&#xA;&#xA;        .bookshelf .shelf {&#xA;            display: grid;&#xA;            grid-template-columns: repeat(3, minmax(0, 1fr));&#xA;            gap: 56px 40px;&#xA;            margin: 0;&#xA;            padding: 0;&#xA;            list-style: none;&#xA;        }&#xA;&#xA;        @media (max-width: 760px) {&#xA;            .bookshelf .shelf {&#xA;                grid-template-columns: repeat(2, minmax(0, 1fr));&#xA;                gap: 40px 24px;&#xA;            }&#xA;        }&#xA;&#xA;        @media (max-width: 440px) {&#xA;            .bookshelf .shelf {&#xA;                grid-template-columns: 1fr;&#xA;            }&#xA;        }&#xA;&#xA;        .bookshelf .book {&#xA;            display: flex;&#xA;            flex-direction: column;&#xA;            align-items: center;&#xA;            text-align: center;&#xA;            margin: 0;&#xA;            padding: 0;&#xA;        }&#xA;&#xA;        .bookshelf .book::marker {&#xA;            content: &#34;&#34;;&#xA;        }&#xA;&#xA;        .bookshelf .cover {&#xA;            position: relative;&#xA;            width: 100%;&#xA;            max-width: 220px;&#xA;            aspect-ratio: 2 / 3;&#xA;            background: var(--bs-surface);&#xA;            border-radius: 2px 5px 5px 2px;&#xA;            box-shadow: 0 1px 2px var(--bs-shadow), 0 14px 22px -12px var(--bs-shadow);&#xA;            overflow: hidden;&#xA;            margin-bottom: 20px;&#xA;        }&#xA;&#xA;        .bookshelf .cover::after {&#xA;            content: &#34;&#34;;&#xA;            position: absolute;&#xA;            inset: 0 auto 0 0;&#xA;            width: 7px;&#xA;            pointer-events: none;&#xA;            background: linear-gradient(90deg, rgba(0, 0, 0, .22), rgba(255, 255, 255, .14) 45%, rgba(0, 0, 0, 0) 100%);&#xA;        }&#xA;&#xA;        .bookshelf .cover img {&#xA;            display: block;&#xA;            width: 100%;&#xA;            height: 100%;&#xA;            object-fit: cover;&#xA;            margin: 0;&#xA;        }&#xA;&#xA;        .bookshelf .cover.is-missing img {&#xA;            display: none;&#xA;        }&#xA;&#xA;        .bookshelf .cover-fallback {&#xA;            position: absolute;&#xA;            inset: 0;&#xA;            display: none;&#xA;            flex-direction: column;&#xA;            justify-content: center;&#xA;            padding: 20px 18px 20px 24px;&#xA;            gap: 6px;&#xA;            background: var(--bs-surface);&#xA;            border-left: 1px solid var(--bs-rule);&#xA;            text-align: left;&#xA;        }&#xA;&#xA;        .bookshelf .cover.is-missing .cover-fallback {&#xA;            display: flex;&#xA;        }&#xA;&#xA;        .bookshelf .cover-fallback strong {&#xA;            font-size: 1rem;&#xA;            line-height: 1.25;&#xA;        }&#xA;&#xA;        .bookshelf .cover-fallback span {&#xA;            font-size: .85rem;&#xA;            color: var(--bs-muted);&#xA;        }&#xA;&#xA;        .bookshelf .title {&#xA;            font-size: 1.05rem;&#xA;            line-height: 1.35;&#xA;            font-weight: 700;&#xA;            margin: 0 0 2px;&#xA;        }&#xA;&#xA;        .bookshelf .author {&#xA;            margin: 0 0 10px;&#xA;            color: var(--bs-muted);&#xA;            font-size: .92rem;&#xA;        }&#xA;&#xA;        .bookshelf .stars {&#xA;            display: inline-flex;&#xA;            gap: 2px;&#xA;            font-size: 1.15rem;&#xA;            line-height: 1;&#xA;        }&#xA;&#xA;        .bookshelf .stars .on {&#xA;            color: var(--bs-star);&#xA;        }&#xA;&#xA;        .bookshelf .stars .off {&#xA;            color: var(--bs-star-off);&#xA;        }&#xA;&#xA;        .bookshelf .reading {&#xA;            display: inline-block;&#xA;            font-size: .85rem;&#xA;            color: var(--bs-accent);&#xA;            border: 1px solid currentColor;&#xA;            border-radius: 99px;&#xA;            padding: 1px 12px;&#xA;        }&#xA;&#xA;        .bookshelf .sentinel {&#xA;            height: 1px;&#xA;        }&#xA;&#xA;        .bookshelf .shelf-status {&#xA;            text-align: center;&#xA;            color: var(--bs-muted);&#xA;            font-size: .9rem;&#xA;            margin-top: 48px;&#xA;            min-height: 1.5em;&#xA;        }&#xA;    &lt;/style&gt;&#xA;&#xA;    &lt;div class=&#34;bookshelf&#34; id=&#34;bookshelf&#34; data-cover-dir=&#34;/ covers/&#34;&gt;&#xA;        &lt;ol class=&#34;shelf&#34; aria-label=&#34;Books I&#39;ve read&#34;&gt;&lt;/ol&gt;&#xA;        &lt;div class=&#34;sentinel&#34; aria-hidden=&#34;true&#34;&gt;&lt;/div&gt;&#xA;        &lt;p class=&#34;shelf-status&#34; role=&#34;status&#34;&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
