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
20 changes: 9 additions & 11 deletions personal-site/src/app/about/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -77,19 +77,18 @@ export default function About() {
<p>
Daniel Smith is a Senior DevOps Engineer at Validation Cloud, where
he builds and secures institutional blockchain infrastructure —
Node API, enterprise staking, and AI-powered blockchain
intelligence — for enterprises managing billions in digital assets.
He also built the team&apos;s AI knowledge vault, a shared
cross-machine synchronized knowledge base that keeps engineering
context current across the team. Based in {site.location}.
Node API, staking, and AI tooling — for enterprises managing
billions in digital assets. Based in {site.location}.
</p>
<p>
His blockchain work began at IBM, where he developed the transaction
state machine for Sand Dollar, the world&apos;s first nationally
deployed retail central bank digital currency. Issued by the
Central Bank of The Bahamas and live since October 2020, Sand Dollar
is the reference case every central bank in the world now studies
when designing retail CBDC programs.
when designing retail CBDC programs. Before IBM, he built blockchain
onboarding infrastructure at Granite Solutions Group and full-stack
web tooling at USC&apos;s Laboratory of Neuroimaging.
</p>
<p>
Outside his role at Validation Cloud, Daniel builds open-source
Expand All @@ -111,8 +110,8 @@ export default function About() {
className={linkClassName}
>
docs.clawql.com/security/best-practices
</Link>{' '}
and cited by engineers building production agentic systems.
</Link>
.
</p>
<p>
<Link
Expand Down Expand Up @@ -165,10 +164,9 @@ export default function About() {
makes financial systems trustworthy — immutable audit trails,
cryptographic chain of custody, independent verification — should
be applied to government programs, law enforcement evidence, and
public records.
public records. He is based in San Gabriel, California.
</p>
</div>
</div>
</div> </div>
<div className="lg:pl-20">
<ul role="list">
<SocialLink href={site.social.x} icon={XIcon}>
Expand Down
61 changes: 40 additions & 21 deletions personal-site/src/app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
site,
type FeaturedProject,
type WorkRole,
workRoleDetails,
workRoles,
} from '@/lib/site'
import { formatDate } from '@/lib/formatDate'
Expand Down Expand Up @@ -164,7 +165,7 @@ function HiringCta() {
<div className="rounded-2xl border border-teal-500/20 bg-teal-50/80 p-6 dark:border-teal-500/30 dark:bg-teal-950/20">
<h2 className="flex text-sm font-semibold text-zinc-900 dark:text-teal-100">
<SparklesIcon className="h-6 w-6 flex-none" />
<span className="ml-3">Open to opportunities</span>
<span className="ml-3">Open to</span>
</h2>
<p className="mt-2 text-sm text-zinc-600 dark:text-zinc-400">
{openToOpportunities.intro}
Expand Down Expand Up @@ -227,31 +228,49 @@ function Role({ role }: { role: WorkRole }) {

let endLabel = typeof role.end === 'string' ? role.end : role.end.label
let endDate = typeof role.end === 'string' ? role.end : role.end.dateTime
let details = workRoleDetails[role.company]

return (
<li className="flex gap-4">
<div className="relative mt-1 flex h-10 w-10 flex-none items-center justify-center rounded-full bg-zinc-100 text-sm font-semibold text-zinc-600 shadow-md ring-1 ring-zinc-900/5 dark:bg-zinc-700/50 dark:text-zinc-300 dark:ring-zinc-700/50">
{role.initial}
</div>
<dl className="flex flex-auto flex-wrap gap-x-2">
<dt className="sr-only">Company</dt>
<dd className="w-full flex-none text-sm font-medium text-zinc-900 dark:text-zinc-100">
{role.company}
</dd>
<dt className="sr-only">Role</dt>
<dd className="text-xs text-zinc-500 dark:text-zinc-400">
{role.title}
</dd>
<dt className="sr-only">Date</dt>
<dd
className="ml-auto text-xs text-zinc-400 dark:text-zinc-500"
aria-label={`${startLabel} until ${endLabel}`}
>
<time dateTime={startDate}>{startLabel}</time>{' '}
<span aria-hidden="true">—</span>{' '}
<time dateTime={endDate}>{endLabel}</time>
</dd>
</dl>
<div className="flex-auto">
<dl className="flex flex-auto flex-wrap gap-x-2">
<dt className="sr-only">Company</dt>
<dd className="w-full flex-none text-sm font-medium text-zinc-900 dark:text-zinc-100">
{role.company}
</dd>
<dt className="sr-only">Role</dt>
<dd className="text-xs text-zinc-500 dark:text-zinc-400">
{role.title}
</dd>
<dt className="sr-only">Date</dt>
<dd
className="ml-auto text-xs text-zinc-400 dark:text-zinc-500"
aria-label={`${startLabel} until ${endLabel}`}
>
<time dateTime={startDate}>{startLabel}</time>{' '}
<span aria-hidden="true">—</span>{' '}
<time dateTime={endDate}>{endLabel}</time>
</dd>
</dl>
{details ? (
<div className="mt-2 space-y-2">
{details.summary.split('\n\n').map((paragraph) => (
<p
key={paragraph.slice(0, 48)}
className="text-xs leading-relaxed text-zinc-600 dark:text-zinc-400"
>
{paragraph}
</p>
))}
<p className="text-[11px] leading-relaxed text-zinc-500 dark:text-zinc-500">
{details.stack}
</p>
</div>
) : null}
</div>
</li>
)
}
Expand Down Expand Up @@ -296,7 +315,7 @@ function Resume() {
<BriefcaseIcon className="h-6 w-6 flex-none" />
<span className="ml-3">Experience</span>
</h2>
<ol className="mt-6 space-y-4">
<ol className="mt-6 space-y-8">
{workRoles.map((role, roleIndex) => (
<Role key={roleIndex} role={role} />
))}
Expand Down
Loading
Loading