Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
f04515d
feat: add PhD thesis research page
vindipe Jun 22, 2026
eb77d86
feat: publish PhD thesis from research index
vindipe Jun 22, 2026
b566d0f
feat: feature PhD thesis in recent uploads
vindipe Jun 22, 2026
28190c2
feat: activate PhD thesis links in CV timeline
vindipe Jun 22, 2026
e7bbd76
chore: initialize thesis publication branch
vindipe Jun 22, 2026
a294965
chore: remove temporary branch probe
vindipe Jun 22, 2026
fd26881
docs: add final PhD thesis PDF
vindipe Jun 22, 2026
4df0e9d
chore: prepare corrected thesis filename
vindipe Jun 22, 2026
30af0fe
tmp
vindipe Jun 22, 2026
9b4c57f
chore: remove temporary file
vindipe Jun 22, 2026
6b19980
chore: remove empty thesis placeholder
vindipe Jun 22, 2026
5fc99ac
noop
vindipe Jun 22, 2026
b17b917
test
vindipe Jun 22, 2026
ab016dc
stop
vindipe Jun 22, 2026
c4ca2aa
another
vindipe Jun 22, 2026
f27e393
debug
vindipe Jun 22, 2026
cf973fc
foo
vindipe Jun 22, 2026
babdcc1
Rename phd-thesis-comparing-blockchains.pdf.pdf to phd-thesis-compari…
vindipe Jun 22, 2026
e785693
chore: remove accidental temporary file
vindipe Jun 22, 2026
ab4e410
chore: remove accidental temporary file
vindipe Jun 22, 2026
bf92fd4
chore: remove accidental temporary file
vindipe Jun 22, 2026
54addeb
fix: restore final PhD thesis PDF
vindipe Jun 22, 2026
123e7cf
chore: remove accidental temporary file
vindipe Jun 22, 2026
9a4114e
chore: remove accidental temporary file
vindipe Jun 22, 2026
ef781f2
chore: remove accidental temporary file
vindipe Jun 22, 2026
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
Binary file not shown.
46 changes: 42 additions & 4 deletions src/components/cv/TimeLine.astro
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@ const variants = {
};

const color = variants[variant] ?? variants.primary;
const isPhdThesis = title === "PhD in Blockchain & Distributed Ledger Technology";
---

<div class="flex">
<div class:list={["flex", isPhdThesis && "phd-thesis-timeline"]}>
<div class="education__time">
<span class:list={["w-4 h-4 block rounded-full mt-1", color.dot]}></span>
<span
Expand All @@ -44,8 +45,45 @@ const color = variants[variant] ?? variants.primary;
}
</div>

<p class="my-2 text-justify">
<div class="my-2 text-justify">
<slot />
</p>

{
isPhdThesis && (
<div class="flex flex-wrap gap-2 mt-3">
<a
href="/research/comparing-blockchains"
class="btn btn-xs btn-outline"
>
Open thesis page
</a>

<a
href="/theses/phd-thesis-comparing-blockchains.pdf"
target="_blank"
rel="noopener noreferrer"
class="btn btn-xs btn-outline"
>
Open thesis PDF
</a>

<a
href="https://pubblicazioni.unicam.it/handle/11581/502950?mode=complete"
target="_blank"
rel="noopener noreferrer"
class="btn btn-xs btn-outline"
>
UNICAM repository
</a>
</div>
)
}
</div>
</div>
</div>
</div>

<style>
.phd-thesis-timeline :global(.btn-disabled) {
display: none;
}
</style>
9 changes: 9 additions & 0 deletions src/data/recentWorks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,15 @@ export type RecentWork = {
};

export const recentWorks: RecentWork[] = [
{
title: "Comparing Blockchains: Performance, Energy, and Economic Efficiencies",
desc: "PhD dissertation on topology-aware blockchain benchmarking, performance and energy efficiency, experimental repeatability, performance predictability, and an entropy-based approach to economic efficiency.",
url: "/research/comparing-blockchains",
img: "/research/debs/lilith-arch-v2.png",
badge: "PhD thesis",
date: "2026-06-23",
target: "_self",
},
{
title: "Lilith – A Topology-Aware Blockchain Benchmarking Framework",
desc: "Public GitHub release of the topology-aware blockchain benchmarking framework developed during my PhD, including validation mode, repository documentation, safe runtime-file handling, and Git LFS support for the cloud-ping dataset.",
Expand Down
124 changes: 62 additions & 62 deletions src/pages/research.astro
Original file line number Diff line number Diff line change
Expand Up @@ -76,32 +76,32 @@ const artifacts = [
"Interactive dashboard",
],
},
{
title: "Blockchain Repeatability Dataset for Topology-Aware Benchmarking",
badge: "Dataset",
status: "Coming soon",
disabled: true,
desc: "Dataset designed to quantify repeatability, variability, and performance predictability across blockchain platforms, workloads, and network topologies. This page will be enabled after the dataset is publicly released.",
tags: [
"Dataset",
"Repeatability",
"Performance predictability",
"Experimental analysis",
],
},
{
title: "Blockchain Repeatability Dataset for Topology-Aware Benchmarking",
badge: "Dataset",
status: "Coming soon",
disabled: true,
desc: "Dataset designed to quantify repeatability, variability, and performance predictability across blockchain platforms, workloads, and network topologies. This page will be enabled after the dataset is publicly released.",
tags: [
"Dataset",
"Repeatability",
"Performance predictability",
"Experimental analysis",
],
},
];

const academicTheses = [
{
title: "Comparing Blockchains: Performance, Energy, and Economic Efficiencies",
badge: "PhD thesis",
status: "Coming soon",
disabled: true,
desc: "Doctoral thesis focused on blockchain benchmarking, network topology effects, repeatability, performance predictability, energy analysis, and economic-efficiency indicators. The dedicated page will be enabled after the thesis is publicly available.",
href: "/research/comparing-blockchains",
desc: "Doctoral dissertation presenting a multidimensional comparison of blockchain systems across performance, energy consumption, experimental repeatability, performance predictability, and economic efficiency.",
tags: [
"PhD thesis",
"Blockchain systems",
"Benchmarking",
"Network topology",
"Repeatability",
"Energy",
"Economic efficiency",
],
Expand Down Expand Up @@ -191,57 +191,57 @@ const academicTheses = [
<h2 class="text-3xl font-bold mb-5">Artifacts &amp; Datasets</h2>

<div class="grid gap-5">
{
artifacts.map((item) =>
item.disabled ? (
<article class="network-protected card bg-base-100 shadow-md opacity-80">
<div class="card-body">
<div class="flex flex-wrap gap-2 items-center">
<h3 class="card-title">{item.title}</h3>
<span class="badge badge-secondary">{item.badge}</span>
<span class="badge badge-warning">{item.status}</span>
</div>
{
artifacts.map((item) =>
item.disabled ? (
<article class="network-protected card bg-base-100 shadow-md opacity-80">
<div class="card-body">
<div class="flex flex-wrap gap-2 items-center">
<h3 class="card-title">{item.title}</h3>
<span class="badge badge-secondary">{item.badge}</span>
<span class="badge badge-warning">{item.status}</span>
</div>

<p>{item.desc}</p>
<p>{item.desc}</p>

<div class="flex flex-wrap gap-2 mt-2">
{item.tags.map((tag) => (
<span class="badge badge-outline">{tag}</span>
))}
</div>
<div class="flex flex-wrap gap-2 mt-2">
{item.tags.map((tag) => (
<span class="badge badge-outline">{tag}</span>
))}
</div>

<div class="card-actions justify-end mt-4">
<span class="btn btn-sm btn-disabled">Page not available yet</span>
</div>
</div>
</article>
) : (
<a
href={item.href}
class="network-protected card bg-base-100 shadow-md transition ease-in-out hover:shadow-2xl hover:scale-[101%]"
>
<article class="card-body">
<div class="flex flex-wrap gap-2 items-center">
<h3 class="card-title">{item.title}</h3>
<span class="badge badge-secondary">{item.badge}</span>
</div>
<div class="card-actions justify-end mt-4">
<span class="btn btn-sm btn-disabled">Page not available yet</span>
</div>
</div>
</article>
) : (
<a
href={item.href}
class="network-protected card bg-base-100 shadow-md transition ease-in-out hover:shadow-2xl hover:scale-[101%]"
>
<article class="card-body">
<div class="flex flex-wrap gap-2 items-center">
<h3 class="card-title">{item.title}</h3>
<span class="badge badge-secondary">{item.badge}</span>
</div>

<p>{item.desc}</p>
<p>{item.desc}</p>

<div class="flex flex-wrap gap-2 mt-2">
{item.tags.map((tag) => (
<span class="badge badge-outline">{tag}</span>
))}
</div>
<div class="flex flex-wrap gap-2 mt-2">
{item.tags.map((tag) => (
<span class="badge badge-outline">{tag}</span>
))}
</div>

<div class="card-actions justify-end mt-4">
<span class="btn btn-sm btn-outline">Open artifact page</span>
</div>
</article>
</a>
)
)
}
<div class="card-actions justify-end mt-4">
<span class="btn btn-sm btn-outline">Open artifact page</span>
</div>
</article>
</a>
)
)
}
</div>
</section>

Expand Down
Loading