- {isLoading ? (
+ {loading ? (
@@ -109,7 +128,7 @@ export default function ProjectsReadme({
className,
children,
...props
- }: React.ComponentPropsWithoutRef<"code">): ReactElement {
+ }: ComponentPropsWithoutRef<"code">): ReactElement {
const isBlock =
className ||
(typeof children === "string" &&
@@ -139,7 +158,7 @@ export default function ProjectsReadme({
pre({
children,
...props
- }: React.ComponentPropsWithoutRef<"pre">): ReactElement {
+ }: ComponentPropsWithoutRef<"pre">): ReactElement {
return (
): ReactElement {
+ }: ComponentPropsWithoutRef<"h1">): ReactElement {
return (
{children}
@@ -162,7 +181,7 @@ export default function ProjectsReadme({
h2({
children,
- }: React.ComponentPropsWithoutRef<"h2">): ReactElement {
+ }: ComponentPropsWithoutRef<"h2">): ReactElement {
return (
{children}
@@ -172,7 +191,7 @@ export default function ProjectsReadme({
h3({
children,
- }: React.ComponentPropsWithoutRef<"h3">): ReactElement {
+ }: ComponentPropsWithoutRef<"h3">): ReactElement {
return (
{children}
@@ -182,7 +201,7 @@ export default function ProjectsReadme({
p({
children,
- }: React.ComponentPropsWithoutRef<"p">): ReactElement {
+ }: ComponentPropsWithoutRef<"p">): ReactElement {
return (
{children}
@@ -192,7 +211,7 @@ export default function ProjectsReadme({
ul({
children,
- }: React.ComponentPropsWithoutRef<"ul">): ReactElement {
+ }: ComponentPropsWithoutRef<"ul">): ReactElement {
return (
{children}
@@ -202,7 +221,7 @@ export default function ProjectsReadme({
ol({
children,
- }: React.ComponentPropsWithoutRef<"ol">): ReactElement {
+ }: ComponentPropsWithoutRef<"ol">): ReactElement {
return (
{children}
@@ -212,14 +231,14 @@ export default function ProjectsReadme({
li({
children,
- }: React.ComponentPropsWithoutRef<"li">): ReactElement {
+ }: ComponentPropsWithoutRef<"li">): ReactElement {
return - {children}
;
},
a({
children,
href,
- }: React.ComponentPropsWithoutRef<"a">): ReactElement {
+ }: ComponentPropsWithoutRef<"a">): ReactElement {
return (
): ReactElement {
+ }: ComponentPropsWithoutRef<"blockquote">): ReactElement {
return (
{children}
@@ -242,10 +261,42 @@ export default function ProjectsReadme({
);
},
+ table({
+ children,
+ }: ComponentPropsWithoutRef<"table">): ReactElement {
+ return (
+
+ );
+ },
+
+ th({
+ children,
+ }: ComponentPropsWithoutRef<"th">): ReactElement {
+ return (
+ |
+ {children}
+ |
+ );
+ },
+
+ td({
+ children,
+ }: ComponentPropsWithoutRef<"td">): ReactElement {
+ return (
+
+ {children}
+ |
+ );
+ },
+
img({
src,
alt,
- }: React.ComponentPropsWithoutRef<"img">): ReactElement {
+ }: ComponentPropsWithoutRef<"img">): ReactElement {
const resolved = resolveImageSrc(
src || "",
base,
@@ -262,7 +313,7 @@ export default function ProjectsReadme({
},
}}
>
- {readmeContent}
+ {displayContent}
)}
diff --git a/frontend/src/components/Systems.tsx b/frontend/src/components/Systems.tsx
index 668879c..01d54a9 100644
--- a/frontend/src/components/Systems.tsx
+++ b/frontend/src/components/Systems.tsx
@@ -1,10 +1,14 @@
-export default function Systems() {
+import { type ReactElement } from "react";
+import MdProcessor from "./MdProcessor";
+import systemsMd from "../content/systems.md?raw";
+
+export default function Systems(): ReactElement {
return (
<>
Systems
-
+
>
);
}
diff --git a/frontend/src/content/about.md b/frontend/src/content/about.md
new file mode 100644
index 0000000..fb9f05e
--- /dev/null
+++ b/frontend/src/content/about.md
@@ -0,0 +1,74 @@
+## Background
+
+Currently a software engineering student. Have primarily done full-stack web development, but my interest has grown toward backend services using low-level programming languages. I am still learning as I go.
+
+## Motivation
+
+I value security, privacy, human health, and combating climate change. Technology can achieve all of this today to some extent. Unfortunately, we are in times of misinformation, Big Tech taking over, and science denial. In a world becoming seemingly more complex, people are overwhelmed and feel like they have no energy left to assess decisions. People do not hesitate to purchase the newest iPhone, without thinking about whether they truly need the newest device. Or they will install whatever application without thinking about possible consequences: what information is shared and sold about them, or they walk right into getting hacked and suffer financial losses and stress. Large corporations take advantage of people who do not understand such concepts; it has become all about consuming the next new thing to the detriment of people.
+
+I wish to educate myself in technology primarily to be able to combat anti-intellectualism and offer free software to improve people's lives respecting human rights.
+
+## Interests
+
+My interests are primarily projects aiming to solve emerging problems, or ones that significantly improve development experience. I believe that software should be free and open-source.
+
+### Projects
+
+A few notable projects I am interested in:
+
+- GrapheneOS
+- Zig
+- Hyprland
+- Linux
+- Osu!
+- Jujutsu
+
+## Contact
+
+You can contact me via **Email: aramjonghu@tutamail.com** and on **XMPP: aramjonghu@conversations.im**.
+
+## Notable Questions
+
+**Note that I am fully open to being wrong on some of the claims below.**
+
+> **Q:** Why "AramJonghu"?
+>
+> **A:** I played on a Minecraft server with friends and friends of friends back in the 1.5 days. One of them would often say or type "Aram Jonguh" — Jonguh being akin to "bro" in Dutch, so it says "Aram Bro". Liking the name, my IGN became AramJonghu. It is spelled incorrectly, which I did not correct at the time. It has persisted ever since.
+
+> **Q:** What is my setup?
+>
+> **A:** I currently use Artix with OpenRC on Hyprland. I use neovim in the Ghostty terminal (with tmux). My server runs Alpine with OpenRC.
+
+> **Q:** Are you specifically avoiding SystemD?
+>
+> **A:** Yes, but it is not due to the infamous pull request. The concern is not about systemd applying age verification. Rather, I want to explore other options in case SystemD becomes compromised, so to speak. My main reason for switching is to have an init system be an init system first and foremost. A smaller codebase makes it easier to manage.
+>
+> The people behind SystemD seem passionate and oppose dystopian laws. I hope that when laws cross the line, real opposition will occur.
+
+> **Q:** What languages do you actually use?
+>
+> **A:** Mainly use JavaScript/TypeScript (React) and Java as this is what I learned at school. Not a fan of either language.
+
+> **Q:** What languages are you learning?
+>
+> **A:** Currently in the middle of learning Rust and Zig. I especially like the direction of Zig, but due to higher demand for Rust, I will be focusing on Rust first. I have not written any Rust yet. I have written a small Zig program, however.
+
+> **Q:** Are you on LinkedIn?
+>
+> **A:** No. I quit in 2025, understanding that LinkedIn has been a platform to curate a fake image in a race for relevance. It is also owned by Microsoft, which is another deterrent. In my eyes, it is slop.
+
+> **Q:** Why do you have no personal projects on GitHub?
+>
+> **A:** I dropped GitHub because of concerns that my projects would be trained on AI. On top of that, the platform's uptime is becoming increasingly spotty. There have been a few incidents such as projects losing critical progress due to data corruption in pull requests. Worst of all, banning developers who offer critical contributions from GitHub (and sometimes also on GitLab).
+>
+> Although my projects are not anything special today, in preparation, I host my own instance of Forgejo. I also wish that none of my projects be used or shared on proprietary platforms. They do not respect developers, so we should not respect their service either. For work, I will have to use GitHub, which is the only use case GitHub will have for me.
+
+> **Q:** Do you support AI?
+>
+> **A:** Generally, no. I believe AI (LLMs) has done more harm than good. From data collection, climate harm, theft of data and art, and the damage it has done to people who misuse it to skip proper learning, and the billion-dollar circlejerk investments that are actively killing personal computing. The technology itself is interesting and I see real value for specific use cases such as in the health sector to better diagnose patients, improve translation accuracy, or improve development experience. This should not, however, outweigh the many downsides.
+>
+> I try to use AI as sparingly as possible, but I also catch myself being reliant more often than not on some days. In the end, AI should be used as a tool to assist us.
+
+> **Q:** Are billionaires evil?
+>
+> **A:** Yes.
diff --git a/frontend/src/content/systems.md b/frontend/src/content/systems.md
new file mode 100644
index 0000000..e8f8c20
--- /dev/null
+++ b/frontend/src/content/systems.md
@@ -0,0 +1,2 @@
+## Infrastructure
+
diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx
index d851f81..c529b57 100644
--- a/frontend/src/pages/Home.tsx
+++ b/frontend/src/pages/Home.tsx
@@ -1,5 +1,5 @@
import { useState, type ReactElement } from "react";
-import ProjectsReadme from "../components/ProjectsReadme";
+import MdProcessor from "../components/MdProcessor";
import Systems from "../components/Systems";
import About from "../components/About";
@@ -68,7 +68,7 @@ export default function Home(): ReactElement {
Next ▶︎
-