You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: pages/index.tsx
+11-11Lines changed: 11 additions & 11 deletions
Original file line number
Diff line number
Diff line change
@@ -42,8 +42,8 @@ export default function Home({ allPostsData, description, words }) {
42
42
return(
43
43
<Layouttitle="Blog"description={description}>
44
44
<main>
45
-
<divclassName="about">
46
-
<h1>About</h1>
45
+
<divclassName="intro">
46
+
<h1>Intro</h1>
47
47
<p>
48
48
Hello and welcome to my website. I'm a software engineer who writes about software. I've
49
49
written {numberWithCommas(words)} words
@@ -60,17 +60,17 @@ export default function Home({ allPostsData, description, words }) {
60
60
I enjoy understanding how things work and making them faster. Like how SIMD can make some programs <Linkhref="/counting-words-at-simd-speed">orders of magnitude quicker</Link>.
61
61
</p>
62
62
<p>
63
-
I wrote <Linkhref="/maybe-the-fastest-disk-usage-program-on-macos">one of the fastest diskusage programs on macOS</Link> by
63
+
I wrote <Linkhref="/maybe-the-fastest-disk-usage-program-on-macos">one of the fastest disk-usage programs on macOS</Link> by
64
64
using macOS-specific system calls, and then
65
65
made it faster by <Linkhref="/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 <Linkhref="/beating-grep-with-go">using goroutines</Link>.
66
+
also showed how to beat the performance of <code>grep</code> by just <Linkhref="/beating-grep-with-go">using goroutines</Link>.
67
67
</p>
68
68
<p>
69
-
My <Linkhref="/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 coldinstalling from a lockfile.
69
+
My <Linkhref="/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
70
</p>
71
71
<p>
72
-
I've created a few small programming languages and related tool, including a <Linkhref="/lisp-to-javascript-compiler">Lisp-to-JavaScript compiler</Link>, which I turned into an <Linkhref="/lisp-compiler-optimizations">optimizing compiler</Link>, and for which I wrote a <Linkhref="/compiling-lisp-to-bytecode-and-running-it">bytecode VM</Link>.
73
-
I also build an <Linkhref="/adding-for-loops-to-an-interpreter">interpreted language</Link> with a C-style syntax, which I <Linkhref="/profiling-and-optimizing-an-interpreter">profiled and made faster</Link>; I later added a <Linkhref="/a-custom-webassembly-compiler">WebAssembly compiler</Link> and a <Linkhref="/adding-a-line-profiler-to-my-language">line profiler</Link>. I also <Linkhref="/porting-boolrule-to-rust">ported an expression engine</Link> to Rust.
72
+
I've created a few small programming languages and related tools, including a <Linkhref="/lisp-to-javascript-compiler">Lisp-to-JavaScript compiler</Link>, which I turned into an <Linkhref="/lisp-compiler-optimizations">optimizing compiler</Link>, and for which I wrote a <Linkhref="/compiling-lisp-to-bytecode-and-running-it">bytecode VM</Link>.
73
+
I also built an <Linkhref="/adding-for-loops-to-an-interpreter">interpreted language</Link> with a C-style syntax, which I <Linkhref="/profiling-and-optimizing-an-interpreter">profiled and made faster</Link>; I later added a <Linkhref="/a-custom-webassembly-compiler">WebAssembly compiler</Link> and a <Linkhref="/adding-a-line-profiler-to-my-language">line profiler</Link>. I also <Linkhref="/porting-boolrule-to-rust">ported an expression engine</Link> to Rust.
74
74
</p>
75
75
<p>
76
76
Below, you can see my <Linkhref="/icepath-a-2d-programming-language">2D programming language</Link> calculating the first ten numbers in the Fibonacci sequence.
@@ -83,10 +83,10 @@ export default function Home({ allPostsData, description, words }) {
83
83
My favorite solver I've worked on is <Linkhref="/building-and-solving-sokoban">for Sokoban</Link>.
84
84
</p>
85
85
<p>
86
-
I'm a big fan of classic FPS games like Quake and Counter-Strike. I worked on a tool to <Linkhref="/rendering-counter-strike-demos-in-the-browser">analyze Counter-Strike demos in the browser</Link>, and a program that <Linkhref="/compressing-cs2-demos">compresses Counter-Strike demos by 13x</Link>.
86
+
I'm a big fan of classic FPS games like Quake and Counter-Strike. I worked on a tool to <Linkhref="/rendering-counter-strike-demos-in-the-browser">analyze Counter-Strike demos in the browser</Link>, and a program that <Linkhref="/compressing-cs2-demos">compresses Counter-Strike demos by 13×</Link>.
87
87
</p>
88
88
<p>
89
-
I did a <Linkhref="/my-time-at-the-recurse-center">sixweek 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 <Linkhref="/making-a-text-editor-with-a-game-engine">built using a game engine</Link>, and to which I <Linkhref="/implementing-highlighting-search-and-undo">added highlighting, search, and undo</Link>.
89
+
I did a <Linkhref="/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 <Linkhref="/making-a-text-editor-with-a-game-engine">built using a game engine</Link>, and to which I <Linkhref="/implementing-highlighting-search-and-undo">added highlighting, search, and undo</Link>.
90
90
</p>
91
91
<p>
92
92
I've written about <Linkhref="/sandboxing-javascript-code">how to sandbox JavaScript</Link> using Deno, how to <Linkhref="/running-untrusted-python-code">sandbox Python using seccomp</Link>, and how to take over the <code>getrandom</code> system call <Linkhref="/making-python-less-random">using ptrace</Link>.
@@ -109,7 +109,7 @@ export default function Home({ allPostsData, description, words }) {
109
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
110
</p>
111
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>.
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
113
</p>
114
114
<p>
115
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>.
@@ -120,7 +120,7 @@ export default function Home({ allPostsData, description, words }) {
0 commit comments