Skip to content

Commit bb9a741

Browse files
committed
index page is now the about page
1 parent fbacd39 commit bb9a741

File tree

4 files changed

+80
-113
lines changed

4 files changed

+80
-113
lines changed

components/nav.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@ export default function Nav() {
1818
<li>
1919
<Link href="/notes" legacyBehavior>Notes</Link>
2020
</li>
21-
<li>
22-
<Link href="/about" legacyBehavior>About</Link>
23-
</li>
2421
<li>
2522
<a
2623
href={`https://github.com/${siteConfig.AUTHOR_GITHUB}`}

pages/about.tsx

Lines changed: 0 additions & 61 deletions
This file was deleted.

pages/index.tsx

Lines changed: 72 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
import siteConfig from "../siteConfig.json";
2-
import meAvatar from "../public/assets/avatar-v1.jpg";
2+
import mePresenting from "../public/assets/presenting-high-res.jpg";
33

44
import Image from "next/image";
55
import Link from "next/link";
66

77
import Layout from "../components/layout";
8-
import PostList from "../components/postList";
98
import Newsletter from "../components/newsletter";
109

1110
import { getSortedPostsData, getPostData } from "../lib/posts";
1211
import { generateRssFeed } from "../lib/rss";
1312
import { getAllNotes } from "../lib/notes";
1413

15-
import { popularPosts } from "../data/posts";
14+
import { Fibonacci } from "../components/visuals/icepath/components";
1615

1716
export async function getStaticProps() {
1817
await generateRssFeed();
@@ -43,54 +42,86 @@ export default function Home({ allPostsData, description, words }) {
4342
return (
4443
<Layout title="Blog" description={description}>
4544
<main>
46-
<div className="avatar">
45+
<div className="about">
46+
<h1>About</h1>
47+
<p>
48+
Hello and welcome to my website. I'm a software engineer who writes about software. I've
49+
written {numberWithCommas(words)} words
50+
across <Link href="/articles">{allPostsData.length} articles</Link> on
51+
this <a href={siteConfig.REPO_URL}>open source</a> website. These
52+
articles have reached the front page of Hacker
53+
News <a href="https://hn.algolia.com/?dateRange=all&page=0&prefix=false&query=healeycodes.com%20-queuedle&sort=byPopularity&type=story">20 times</a>.
54+
</p>
55+
{/* Maybe link to latest? */}
56+
{/* <p>
57+
My latest article is <Link href={`/${allPostsData[0].id}`}>{allPostsData[0].title}</Link>.
58+
</p> */}
59+
<p>
60+
I enjoy understanding how things work and making them faster. Like how SIMD can make some programs <Link href="/counting-words-at-simd-speed">orders of magnitude quicker</Link>.
61+
</p>
62+
<p>
63+
I wrote <Link href="/maybe-the-fastest-disk-usage-program-on-macos">one of the fastest disk usage programs on macOS</Link> by
64+
using macOS-specific system calls, and then
65+
made it faster by <Link href="/optimizing-my-disk-usage-program">reducing thread scheduling overhead and lock contention</Link>. I
66+
also showed how you can beat the performance of <code>grep</code> by just <Link href="/beating-grep-with-go">using goroutines</Link>.
67+
</p>
68+
<p>
69+
My <Link href="/installing-npm-packages-very-quickly">experimental package manager</Link> uses simple concurrency patterns to be faster than every package manager aside from Bun (which is 11% faster) when cold installing from a lockfile.
70+
</p>
71+
<p>
72+
I've created a few small programming languages and related tool, including a <Link href="/lisp-to-javascript-compiler">Lisp-to-JavaScript compiler</Link>, which I turned into an <Link href="/lisp-compiler-optimizations">optimizing compiler</Link>, and for which I wrote a <Link href="/compiling-lisp-to-bytecode-and-running-it">bytecode VM</Link>.
73+
I also build an <Link href="/adding-for-loops-to-an-interpreter">interpreted language</Link> with a C-style syntax, which I <Link href="/profiling-and-optimizing-an-interpreter">profiled and made faster</Link>; I later added a <Link href="/a-custom-webassembly-compiler">WebAssembly compiler</Link> and a <Link href="/adding-a-line-profiler-to-my-language">line profiler</Link>. I also <Link href="/porting-boolrule-to-rust">ported an expression engine</Link> to Rust.
74+
</p>
75+
<p>
76+
Below, you can see my <Link href="/icepath-a-2d-programming-language">2D programming language</Link> calculating the first ten numbers in the Fibonacci sequence.
77+
</p>
78+
<Fibonacci />
79+
<p>
80+
I really enjoy games (chess, scrabble, sudoku), puzzles, and solvers. I built my <Link href="/building-my-own-chess-engine">own chess engine</Link>, and created visualizations for understanding <Link href="/visualizing-chess-bitboards">how bitboards can be used to store chess game state</Link>. I wrote about <Link href="/building-game-prototypes-with-love">building game prototypes in Lua</Link>, how to <Link href="/2d-multiplayer-from-scratch">build 2D multiplayer from scratch</Link>, a daily puzzle game I designed called <Link href="/how-i-made-queuedle">Queuedle</Link>, a <Link href="/solving-queuedle">solver for it</Link>, and some <Link href="/generating-mazes">maze generation algorithms</Link>.
81+
</p>
82+
<p>
83+
My favorite solver I've worked on is <Link href="/building-and-solving-sokoban">for Sokoban</Link>.
84+
</p>
85+
<p>
86+
I'm a big fan of classic FPS games like Quake and Counter-Strike. I worked on a tool to <Link href="/rendering-counter-strike-demos-in-the-browser">analyze Counter-Strike demos in the browser</Link>, and a program that <Link href="/compressing-cs2-demos">compresses Counter-Strike demos by 13x</Link>.
87+
</p>
88+
<p>
89+
I did a <Link href="/my-time-at-the-recurse-center">six week batch at the Recurse Center</Link> where I worked on many projects and paired with many excellent programmers. One of the projects I worked on was a text editor that I <Link href="/making-a-text-editor-with-a-game-engine">built using a game engine</Link>, and to which I <Link href="/implementing-highlighting-search-and-undo">added highlighting, search, and undo</Link>.
90+
</p>
91+
<p>
92+
I've written about <Link href="/sandboxing-javascript-code">how to sandbox JavaScript</Link> using Deno, how to <Link href="/running-untrusted-python-code">sandbox Python using seccomp</Link>, and how to take over the <code>getrandom</code> system call <Link href="/making-python-less-random">using ptrace</Link>.
93+
</p>
94+
<p>
95+
I'd like to write more about AI. I recently created <Link href="/filesystem-backed-by-an-llm">a FUSE filesystem where file operations are handled by an LLM</Link>.
96+
</p>
4797
<Image
48-
width={140}
49-
height={140}
50-
src={meAvatar}
51-
alt="Andrew Healey."
52-
quality={100}
98+
src={mePresenting}
5399
placeholder="blur"
100+
alt="Presenting: When Does Development Spark Joy? Sentimental analysis of commit messages."
101+
quality={100}
54102
priority={true}
55-
style={{ borderRadius: '0.4em' }}
103+
style={{ borderRadius: '0.4em', width: '100%', height: 'auto' }}
56104
/>
57-
<p className="avatar-text">
58-
Hey, I'm Andrew Healey. I'm a software engineer at Vercel, and I'm interested in the <Link href="/my-time-at-the-recurse-center">joy of computing</Link>. I've written{" "}
59-
{numberWithCommas(words)} words on this{" "}
60-
<a href={siteConfig.REPO_URL}>open source</a> website.
105+
<p>
106+
I live in the UK with my wife, our three young children, and a cat called Moose.
107+
</p>
108+
<p>
109+
I've worked remotely at Vercel since 2021, mostly on the distributed build pipeline that runs untrusted customer code, as well as the underlying ephemeral compute platform.
110+
</p>
111+
<p>
112+
Technical books I recommend include <i>Crafting Interpreters</i> and <i>The Computational Beauty of Nature</i>. For general fiction, I recommend the authors Patricia Lockwood and Ben Lerner. For sci-fi, I recommend the <i>Dune</i> series (1-6 are amazing, 7-9 are good) and the <i>Remembrance of Earth's Past</i> trilogy. For non-fiction, I recommend <i>The Orchid Thief</i> and <i>Nothing To Envy</i>.
113+
</p>
114+
<p>
115+
I love getting email and you can reach me by running the following code in your browser's developer console: <code>atob('aGVhbGV5Y29kZXNAZ21haWwuY29t')</code>.
61116
</p>
62-
</div>
63-
64-
<div className="posts">
65-
<section className="posts-section">
66-
<h2>
67-
Recent (
68-
<Link href="/articles" legacyBehavior>{`${allPostsData.length} articles`}</Link>)
69-
</h2>
70-
<PostList posts={allPostsData.slice(0, 3)} />
71-
</section>
72-
<section className="posts-section">
73-
<h2>Popular</h2>
74-
<PostList
75-
posts={allPostsData.filter((post) =>
76-
popularPosts.includes(post.id)
77-
)}
78-
/>
79-
</section>
80117
</div>
81118
</main>
82119
<footer>
83120
<Newsletter />
84121
</footer>
85-
<style jsx>{`.avatar {
86-
display: flex;
87-
align-items: center;
88-
padding-top: 36px;
89-
padding-bottom: 6px;
90-
}
91-
.avatar-text {
92-
margin-left: 28px;
93-
max-width: 480px;
122+
<style jsx>{`
123+
.about {
124+
padding-bottom: 20px;
94125
}
95126
.posts {
96127
display: flex;
@@ -101,14 +132,6 @@ export default function Home({ allPostsData, description, words }) {
101132
}
102133
103134
@media only screen and (max-width: ${siteConfig.LAYOUT_WIDTH}px) {
104-
.avatar {
105-
display: block;
106-
padding-top: 38px;
107-
}
108-
.avatar-text {
109-
margin-left: initial;
110-
margin-bottom: 0px;
111-
}
112135
.posts {
113136
display: block;
114137
}

vercel.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
{
22
"redirects": [
3+
{
4+
"source": "/about",
5+
"destination": "/"
6+
},
7+
{
8+
"source": "/about/",
9+
"destination": "/"
10+
},
311
{
412
"source": "/tags/(.*)",
513
"destination": "/articles"

0 commit comments

Comments
 (0)