Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions app/reading/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import Reading from "@/components/Reading";
import Heading from "@/components/ui/Heading";
import Summary from "@/components/Summary";

const ReadingPage = async () => {
return (
<>
<Heading title="Reading" emoji="📚" />
<Summary>
A running list of books I’ve read or am currently reading. Most connect
back to software in some way, whether through code, systems, teams,
decision-making, or shaping ideas into useful things.
</Summary>
<Reading />
</>
);
};

export default ReadingPage;
27 changes: 25 additions & 2 deletions components/Header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const Header = () => {
<>
<div className="mt-28 w-full lg:mt-36"></div>
<nav className="fixed z-10 w-full max-w-xl">
<ul className="outside-padding-cover opaque pointer-events-auto flex w-full gap-8 pb-1 pt-8 lg:pt-20">
<ul className="outside-padding-cover opaque pointer-events-auto flex w-full gap-8 pt-8 pb-1 lg:pt-20">
<li
className={`outside-padding group hover:cursor-pointer ${
pathname === "/" && "active"
Expand Down Expand Up @@ -84,7 +84,30 @@ const Header = () => {
</svg>
</Link>
</li>
<li className="z-10 h-4 w-px bg-tertiary"></li>
<li
className={`outside-padding group hover:cursor-pointer ${
pathname === "/reading" && "active"
}`}
>
<Link href="/reading" title="reading">
<svg
className="group-hover:stroke-accent"
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
viewBox="0 0 24 24"
fill="none"
stroke="var(--primary)"
strokeWidth="1.25"
strokeLinecap="round"
strokeLinejoin="round"
>
<path d="M10 2v8l3-3 3 3V2" />
<path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20" />
</svg>
</Link>
</li>
<li className="bg-tertiary z-10 h-4 w-px"></li>
<li className="outside-padding group hover:cursor-pointer">
<a
href="https://www.github.com/schneedotdev"
Expand Down
37 changes: 37 additions & 0 deletions components/Reading.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { books } from "@/lib/books";

const Reading = () => {
return (
<section className="mt-10">
<ul className="grid gap-4 md:grid-cols-2">
{books.map((book) => (
<li key={book.title}>
<article className="border-tertiary/25 flex h-full flex-col gap-4 rounded-md border bg-[#f2f2f308] p-5">
<div className="flex items-start justify-between gap-3">
<div>
<h2 className="text-primary text-base">{book.title}</h2>
<p className="text-tertiary mt-1 text-xs">{book.author}</p>
</div>
</div>

<p className="text-secondary leading-relaxed">
{book.description}
</p>

<ul className="flex flex-wrap gap-2 text-xs">
{book.tags.map((bookTag) => (
<li key={bookTag} className="text-tertiary">
<span className="text-accent">#</span>
{bookTag}
</li>
))}
</ul>
</article>
</li>
))}
</ul>
</section>
);
};

export default Reading;
107 changes: 107 additions & 0 deletions lib/books.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
type Book = {
title: string;
author: string;
tags: string[];
description: string;
};

export const books: Book[] = [
{
title: "SSH Mastery",
author: "Michael W. Lucas",
tags: ["systems", "security", "networking"],
description:
"A practical systems book focused on using SSH beyond the basics, from configuration to agents and key management.",
},
{
title: "Functional Programming in Scala",
author: "Paul Chiusano and Rúnar Bjarnason",
tags: ["scala", "functional-programming", "software"],
description:
"An introduction to functional design, composable abstractions, and using types to structure programs.",
},
{
title: "Asynchronous Programming in Rust",
author: "Carl Fredrik Samson",
tags: ["rust", "async", "systems"],
description:
"A focused guide to async programming in Rust, covering futures, tasks, executors, and the mental model behind asynchronous systems.",
},
{
title: "The Man from the Future",
author: "Ananyo Bhattacharya",
tags: ["history", "computing", "science"],
description:
"A biography of John von Neumann and the ideas that influenced computing, mathematics, science, and strategy.",
},
{
title: "Build",
author: "Tony Fadell",
tags: ["building", "teams", "decision-making"],
description:
"A practical book about building products, teams, and organizations from the perspective of someone who has done it repeatedly.",
},
{
title: "Writing an Interpreter in Go",
author: "Thorsten Ball",
tags: ["go", "interpreters", "language-design"],
description:
"A hands-on walkthrough of building an interpreter from scratch, one piece at a time.",
},
{
title: "Turn the Ship Around!",
author: "L. David Marquet",
tags: ["leadership", "teams", "decision-making"],
description:
"A leadership book centered on ownership, intent, and distributing decision-making closer to the work.",
},
{
title: "Measure What Matters",
author: "John Doerr",
tags: ["goals", "execution", "teams"],
description:
"An introduction to OKRs and the role clear goals can play in aligning teams and organizations.",
},
{
title: "The Rust Programming Language",
author: "Steve Klabnik and Carol Nichols",
tags: ["rust", "programming", "systems"],
description:
"The official Rust book, covering ownership, borrowing, lifetimes, traits, error handling, and the language's core programming model.",
},
{
title: "The Effective Engineer",
author: "Edmond Lau",
tags: ["engineering", "leverage", "career"],
description:
"A book about engineering impact, prioritization, and focusing effort where it creates the most leverage.",
},
{
title: "Succeed: How We Can Reach Our Goals",
author: "Heidi Grant Halvorson",
tags: ["goals", "psychology", "decision-making"],
description:
"A research-backed look at goal setting, motivation, and the behaviors that make progress more likely.",
},
{
title: "Operating System Concepts",
author: "Abraham Silberschatz, Peter B. Galvin, and Greg Gagne",
tags: ["operating-systems", "systems", "computer-science"],
description:
"A foundational text on operating system design, covering processes, memory, storage, concurrency, and file systems.",
},
{
title: "Clean Code",
author: "Robert C. Martin",
tags: ["software", "craft", "maintainability"],
description:
"A widely discussed book on naming, structure, readability, and the day-to-day habits of writing maintainable code.",
},
{
title: "The C Programming Language",
author: "Brian W. Kernighan and Dennis M. Ritchie",
tags: ["c", "systems", "programming"],
description:
"A compact classic that introduces C through concise examples and close attention to the language's core ideas.",
},
];