Non-cringify
All checks were successful
Deploy to Pages / build (pull_request) Successful in 1m48s

This commit is contained in:
Andras Schmelczer 2026-05-25 21:31:09 +01:00
parent 0be50b6c24
commit 2c37e7fa62
39 changed files with 410 additions and 397 deletions

View file

@ -10,7 +10,7 @@ import {
} from '../lib/site';
import defaultOg from '../assets/og-default.jpg';
const STARTING_POINTS = 4;
const STARTING_POINTS = 5;
const posts = await getPublishedPosts();
const startingPoints = posts
@ -18,13 +18,27 @@ const startingPoints = posts
.sort((a, b) => (a.data.featuredOrder ?? 99) - (b.data.featuredOrder ?? 99))
.slice(0, STARTING_POINTS);
const STARTING_POINT_NOTES: Record<string, string> = {
'greatai-ai-deployment-api': 'Small API as policy.',
'reconcile-text-3-way-merge':
'Constraints (no history, three runtimes) pick the design.',
'sdf-2d-ray-tracing': 'Mobile GPU as the architecture.',
'life-towers-immutable-tries': 'Data structure as the protocol.',
'nuclear-cooling-simulation': 'Two graphs are simpler than one big one.',
};
const startingPointsAnnotated = startingPoints.map((post) => ({
post,
note: STARTING_POINT_NOTES[post.id.replace(/\.mdx?$/, '')],
}));
const personImage = await optimizeOgImage(defaultOg);
// Canonical Person JSON-LD. Other pages reference this entity by @id.
const personJsonLd = buildPersonJsonLd({
jobTitle: 'Software Engineer',
description:
'Software engineer with an MSc in Computer Science working on AI/ML systems, web platforms, graphics, simulations, and tools.',
'Software engineer who keeps reaching for the same two moves: let the hard constraint pick the data structure, then keep the API small enough to defend.',
knowsAbout: [
'Software architecture',
'AI/ML systems',
@ -40,24 +54,23 @@ const personJsonLd = buildPersonJsonLd({
<Page
title="About"
description="A direct summary of my background, technical interests, and best starting points."
description="A few sentences about the two moves I keep reaching for, and the posts that show them in different shapes."
jsonLd={personJsonLd}
ogType="profile"
>
<div class="prose">
<p>
I am Andras Schmelczer, a software engineer with an MSc in Computer Science and more
than six years of professional engineering experience. My work spans AI/ML systems,
web platforms, graphics, simulations, and tools, and I like projects where
architecture, constraints, and product usefulness all matter.
I'm Andras. I write software for a living, and have done so for about six years. MSc
in CS. The first non-trivial thing I finished was a Raspberry Pi music visualiser
driving LED strips through MOSFETs in 2016, and I've been chasing that same feeling
— pick something I can't yet do, finish it — ever since.
</p>
<p>
I am especially interested in architecting and building large-scale systems,
particularly around AI/ML. In my own time I also return to shaders, data
visualization, simulations, and occasionally microcontrollers. The
<a href="/articles/">articles</a> and <a href="/projects/">projects</a> indexes are the
best way to understand that range; the CV and contact links are here when a direct summary
is more useful.
Two patterns show up in almost everything here. First, the hard constraint usually
picks the data structure: an 8-bit ALU, a mobile GPU, a single static HTML file, a
cross-language ABI, no edit history. Second, once the data structure is right, the
API shrinks to something I can defend in one paragraph. When I get those two right I
tend to like the result years later. When I don't, I say so in the writeup.
</p>
</div>
@ -65,17 +78,22 @@ const personJsonLd = buildPersonJsonLd({
<h2 id="quick-facts">Quick Facts</h2>
<dl>
<div>
<dt>Focus</dt>
<dt>Lives in</dt>
<dd>Code. Also Europe.</dd>
</div>
<div>
<dt>Studied</dt>
<dd>
Software systems, AI deployment, architecture, graphics, data visualization
MSc Computer Science. BSc thesis on SDF-2D, MSc thesis on GreatAI — both have
writeups below.
</dd>
</div>
<div>
<dt>Education</dt>
<dd>MSc in Computer Science</dd>
<dt>Languages I'm fastest in</dt>
<dd>TypeScript, Python, Rust. C or Rust when bytes matter.</dd>
</div>
<div>
<dt>Contact</dt>
<dt>Email</dt>
<dd>
<address>
<a href={`mailto:${site.email}`}>{site.email}</a>
@ -83,7 +101,7 @@ const personJsonLd = buildPersonJsonLd({
</dd>
</div>
<div>
<dt>Links</dt>
<dt>Elsewhere</dt>
<dd class="about-links">
<a href={site.cv} rel="noopener">CV</a>
<a href={site.github} rel="noopener me">GitHub</a>
@ -95,26 +113,54 @@ const personJsonLd = buildPersonJsonLd({
<section class="about-section">
<div class="section-heading">
<h2 id="best-starting-points">Best Starting Points</h2>
<a href="/articles/">Browse all articles <span aria-hidden="true">→</span></a>
<h2 id="best-starting-points">Five posts that show the two moves</h2>
<a href="/articles/">All articles <span aria-hidden="true">→</span></a>
</div>
<ArticleList posts={startingPoints} />
<div class="prose starting-point-notes">
<p><strong>Why these five:</strong></p>
<ul>
{
startingPointsAnnotated.map(({ post, note }) =>
note ? (
<li>
<strong>{post.data.title}</strong> — {note}
</li>
) : null
)
}
</ul>
</div>
</section>
<section class="about-section facts">
<h2 id="working-style">How I Work</h2>
<h2 id="working-style">A few things I believe</h2>
<div class="prose">
<p>
I am strongest when I can reason through a system end to end: the data model, the
API shape, the performance constraints, the operational risks, and the human path
through the tool. The projects on this site are older and newer examples of that
habit.
</p>
<p>
I care about simple interfaces over accidental complexity, and I prefer technical
depth that can be explained clearly. That is why this site is structured around
articles rather than screenshots and slogans.
</p>
<ul>
<li>
Most "interesting algorithm" problems are actually data-structure problems
wearing a costume. Pick the structure that makes the comparison, the query, or
the merge trivial, and the algorithm fits in a screen.
</li>
<li>
A library you can explain in one paragraph beats a framework you have to teach.
I'll take five lines of WGSL I can read over one beautiful 300-line kernel.
</li>
<li>
The cost of a project is whether I'll still trust it in three years. The ones I
trust are the ones with a tiny surface and a boring centre.
</li>
<li>
I like working at the seams: firmware meeting a render loop, a Rust core
crossing wasm-bindgen and pyo3, a client and server agreeing on what "next
state" means. That's where the design work actually is.
</li>
<li>
Caveat: the writeups here are biased toward things that worked. The dead
prototypes don't have URLs and I should probably write up one of them honestly
sometime.
</li>
</ul>
</div>
</section>
</Page>

View file

@ -24,17 +24,16 @@ const personJsonLd = buildPersonJsonLd();
<Base jsonLd={personJsonLd}>
<section class="home-intro">
<p class="eyebrow">
Software systems, AI deployment, graphics, simulations, and tools
</p>
<p class="eyebrow">A notebook, written after the fact</p>
<h1>
Andras Schmelczer writes about building software that has to work under real
constraints.
Andras Schmelczer — writing up the projects, the trades I made inside them, and the
ones I'd make differently now.
</h1>
<p>
I am a software engineer with an MSc in Computer Science. This site is mostly a
notebook of technical articles and project writeups; the hiring details live on the
<a href="/about/">About</a> page.
Most of these started because I couldn't yet do the thing. An 8-bit ALU, a mobile
GPU, a single static HTML file, a cross-language ABI, three editors I didn't
control. The <a href="/about/">About page</a> is where I describe what I keep reaching
for; the posts below are the evidence.
</p>
</section>